[PYTHON] Ich habe versucht, eine zufällige Zeichenfolge zu generieren

Einführung

Wir haben Programme in mehreren Sprachen implementiert, die zufällige Zeichenfolgen generieren (diesmal 6 Kleinbuchstaben). Die Fähigkeiten des Autors des Artikels sind fast die gleichen wie die eines Amateurs, der das Programmieren selbst gelernt hat. Der Artikel enthält eine Codebeschreibung, aber ich würde mich freuen, wenn Sie kommentieren könnten, ob es seltsame Teile oder Anti-Muster gibt.

Inhaltsverzeichnis

  1. [Ich wollte meinen eigenen App-Namen in Heroku machen](Ich wollte meinen eigenen App-Namen in #heroku machen)
  2. [Implementierung](# Implementierung)
  3. [C](Sprache Nr. 1-c)
  4. C++
  5. Python
  6. Ruby
  7. PHP
  8. Node.js
  9. Swift
  10. [Shell-Skript](# 8-Shell-Skript)
  11. [JavaScript (HTML eingebettet)](# 9-Javascript HTML eingebettet)
  12. [Implementierungszusammenfassung](# 10 - Implementierungszusammenfassung)
  13. Schlussfolgerung
  14. [Am Ende](# Am Ende)

Ich wollte meinen eigenen App-Namen in Heroku erstellen

Neulich habe ich Heroku zum ersten Mal benutzt. Es ist sehr einfach zu bedienen, aber ich weiß nicht, was die App aus dem automatisch generierten App-Namen ist. Es scheint, dass Sie Doppelungen mit dem App-Namen auf Heroku vermeiden müssen, um ihm einen beliebigen App-Namen zu geben. Verwenden Sie als einfache Methode eine Namenskonvention

** Zufälliger String-App-Name (zB Fjofez-Hallo-App) **

In diesem Fall können Sie ihm einen beschreibenden Namen geben und gleichzeitig die Möglichkeit von Duplikaten verringern. Aus diesem Grund habe ich beschlossen, ein Programm zu schreiben, das eine zufällige Zeichenfolge in mehreren Sprachen generiert. Übrigens gibt es die folgenden Einschränkungen für den App-Namen.

$ heroku rename MyApp
Renaming Old-App to NewyApp... !
▸ Name must start with a letter, end with a letter or digit and can 
  only contain lowercase letters, digits, and dashes.

`Namen müssen mit einem Buchstaben beginnen und mit einem Buchstaben oder einer Zahl enden und dürfen nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. ``

Außerdem scheint die maximale Anzahl von Zeichen 30 Zeichen zu betragen. Die Erzeugung zufälliger Zeichenketten wurde mit dem folgenden Muster implementiert.

** C, C ++, Python, Ruby, PHP, Node.js, Swift, Shell, JavaScript (HTML eingebettet) **

Wenn Sie keine Zeit haben, fahren Sie mit Schlussfolgerung fort.

Implementierung

** Implementierungsregeln ** lauten ungefähr wie folgt.

** Ausführungsumgebung ** (Windows)

OSWindows 10 Home (64bit)
WSLUbuntu 18.04.4 LTS
Shell bash

** Ausführungsumgebung ** (Mac)

OSCatalina 10.15.6
Shell zsh

1. C Sprache

Als ich Student war, nahm ich an einem C-Sprachkurs teil und lernte ungefähr einen Monat bei der Aufnahmeprüfung einer Ingenieurschule namens 42Tokyo. Programmieren ist für mich das Bild der C-Sprache.

random_strings.c


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int num_of_char = 6;
    srand((unsigned int)time(NULL));

    for (int i = 0; i < num_of_char; i++)
        printf("%c", (rand() % 26 + 'a'));
    printf("\n");
}
$ gcc random_strings.c
$ ./a.out
ucxjvx
$ ./a.out
asuprq
$ ./a.out
rveroj

Referenz [Einführung in die C-Sprache] Verwendung von Zufallszahlen (Rand)

  1. C++

Ich habe C ++ studiert, um am Wettbewerb bei AtCoder teilzunehmen, einem Dienst, der wettbewerbsfähige Programmierwettbewerbe veranstaltet. Wenn Sie mit dem Programmieren beginnen, ist wettbewerbsfähiges Programmieren meiner Meinung nach eine großartige Einführung für diejenigen, die Rätsel mögen.

random_strings.cpp


#include <iostream>
#include <random>
using namespace std;

int main()
{
    int num_of_char = 6;

    mt19937 mt{random_device{}()};
    uniform_int_distribution<int> dist(0, 25); // 26 letters of a~z

    for (int i = 0; i < num_of_char; i++)
        cout << char(dist(mt) + 'a');
    cout << endl;
}
$ g++ random_strings.cpp
$ ./a.out
zotuxm
$ ./a.out
faoxwv
$ ./a.out
czoxwt

Referenz C ++ - Zufallszahlenbibliothek ist schwer zu verwenden 3. Python

Jeder liebt Python. Ich habe es kaum berührt. Die Menge der Beschreibung ist kleiner als die der C-Sprache. Es gab viele Referenzen.

random_strings.py


import random
import sys

for i in range(6):
    sys.stdout.write(chr(random.randrange(26) + ord("a")))
print("")
$ python random_strings.py
prnsro
$ python random_strings.py
nnaydv
$ python random_strings.py
uzejcc

Referenz Zufällige Brüche / Ganzzahlen, die von Python, Random, Randrange, Randint usw. generiert wurden [Python] Datentypen und Casts Python-Tipps: Ich möchte eine Zeichenfolge ohne Zeilenumbrüche ausgeben Python Snippets

  1. Ruby

Ich arbeite an einem Rails-Tutorial. Ich habe diesen Artikel geschrieben, nachdem ich Heroku im Rails-Tutorial verwendet habe. Die Codemenge ist nur eine Zeile. Es fühlt sich an wie eine Haut, aber ich habe das Gefühl, dass die Ausführungsgeschwindigkeit langsam ist.

random_strings.rb


puts (0..5).map{ ("a".ord + rand(26)).chr }.join
$ ruby random_strings.rb
xgrqye
$ ruby random_strings.rb
cvijok
$ ruby random_strings.rb
ifmiau

** Hinzugefügt am 2020.9.5 ** In den Kommentaren habe ich gelernt, wie man den Code etwas kürzer schreibt. Es ist kurz und erweiterbar (einschließlich Zahlen und Großbuchstaben).

python


puts (1..6).map{ [*"a".."z"].sample }.join

Referenz So generieren Sie eine zufällige Zeichenfolge in Ruby Ganzzahl und Zeichen mit Ruby konvertieren Array # sample (Ruby 2.7.0 Referenzhandbuch)

  1. PHP

Es war fast das erste Mal, dass ich PHP über die Befehlszeile ausführte. Es ist erfrischend, der Variablen $ hinzuzufügen.

random_strings.php


<?php
    for ($i = 0; $i < 6; $i++)
        echo substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 1);
    echo "\n"
?>
$ php random_strings.php
fclvjt
$ php random_strings.php
mcttjp
$ php random_strings.php
rdvole

** Überarbeitet 2020.9.5 ** Der im Kommentar erwähnte Teil wurde korrigiert. Die Anzahl der Zeichen in der generierten Zeichenfolge wurde auf 8 Zeichen => 6 Zeichen korrigiert Keine Vervielfältigung => Korrigiert, um Vervielfältigung zu haben

Vor der Änderung </ summary>


Es war fast das erste Mal, dass ich PHP über die Befehlszeile ausführte. Die Codemenge beträgt tatsächlich eine Zeile.

random_strings.php


<?php
    echo substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 8) . "\n";
?>
$ php random_strings.php
fwuxjhel
$ php random_strings.php
fcxmuypb
$ php random_strings.php
qkswgyjp

Referenz [So führen Sie PHP über die Befehlszeile aus [Für Anfänger] Zufälliges Passwort in einer Zeile generieren

  1. Node.js

Ich habe es zum ersten Mal berührt. Es fühlt sich so an, als hätte ich Node.js verwendet, um JavaScript über die Befehlszeile auszuführen, anstatt Node.js. Ich habe JavaScript selbst ein wenig berührt, als ich Webproduktion studierte.

random_strings.js


'use strict';
function make_random_string() {
    const num_of_char = 6;
    let random;
    let str1 = "";
    for (let i = 0; i < num_of_char; i++)
    {
        random = Math.floor( Math.random () * 26 + "a".charCodeAt(0));
        str1 += String.fromCharCode(random);
    }
    console.log(str1);
}
make_random_string();
$ node random_strings.js
fpysdy
$ node random_strings.js
hshgzk
$ node random_strings.js
bedysa

Referenz Wird aus der Einführung von Node.js in der WSL-Umgebung verwendet JavaScript-Reverse-Referenz, die beim Kopieren und Einfügen verwendet werden kann Zufallszahlen mit Javascript abrufen Zeichen mit JavaScript in ASCII-Code konvertieren

  1. Swift

Ich habe es zum ersten Mal berührt. Ich hatte die schwerste Zeit mit dieser Implementierung, wahrscheinlich weil es im Grunde eine Sprache zum Erstellen von iOS-Apps ist. Ich bin der Meinung, dass Swift für Implementierungsinhalte wie dieses nicht geeignet ist.

random_strings.swift


let str = "abcdefghijklmnopqrstuvwxyz"

var i = 0
while i < 6 {
    let randomAlpha = Int.random(in: 0..<26)
    let fromIdx = str.index(str.startIndex, offsetBy: randomAlpha)
    let toIdx = str.index(str.endIndex, offsetBy: randomAlpha - 26)
    print(str[fromIdx...toIdx], terminator: "")
    i += 1
}
print("")
$ swift random_strings.swift
xwjrxd
$ swift random_strings.swift
pwqziz
$ swift random_strings.swift
psbhww

Referenz [Swift] So generieren Sie Zufallszahlen So erhalten Sie die in Swift angegebene Indexzeichenfolge Verarbeitung wiederholen! Verwendung von while / for-Anweisungen in Swift [für Anfänger]

8. Shell-Skript

Das Shell-Skript wird jedes Mal von Google erstellt, wenn es für die Effizienz erforderlich ist, und nach 3 Tagen ist es eine Fähigkeitsstufe, die ich vergesse.

random_strings.sh


#!/bin/bash
cat /dev/urandom | tr -dc 'a-z' | fold -w 6 | head -n 1
$ bash random_strings.sh
udhmsd
$ bash random_strings.sh
loxtxt
$ bash random_strings.sh
zxrbbe

Referenz Zufällige Zeichenfolge generieren

9. JavaScript (HTML eingebettet)

Browser Version
Google Chrome Version: 84.0.4147.135
Microsoft Edge Version 85.0.564.44
Firefox Version: 80.0.1
Safari Version: 13.1.2

Ich habe gerade den in Node.js implementierten Code in HTML eingebettet. Ich ignoriere die Methode, weil sie in einer HTML-Datei zusammengefasst ist. Wenn Sie sich vorerst bewegen, ist es in Ordnung. Aus der Sicht eines Amateurs ist JavaScript, das mit einem Browser ausgeführt werden kann, praktisch.

random_strings.html


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html {background: #f7f7f7;}
        body {margin: 48px auto 0; padding-top: 12px; padding-left: 24px;}
        body {background: #fff; border: solid 1px #333; width: 640px;}
        .result {color: #F06060; font-size: 30px; font-weight: bold; margin-left: 2rem;}
        div {border-bottom: solid 2px #333; width: 300px;}
    </style>
</head>
<body>
    <h1>Generieren Sie eine zufällige Zeichenfolge mit JavaScript</h1>
    <div>
        <script>
            'use strict';
            function make_random_string() {
                const num_of_char = 6;
                let random;
                let str1 = "";
                for (let i = 0; i < num_of_char; i++)
                {
                    random = Math.floor( Math.random () * 26 + "a".charCodeAt(0));
                    str1 += String.fromCharCode(random);
                }
                console.log(str1);
                document.write("<span>Generierter String=> </span>");
                document.write("<span class = result>" + str1 + "</span>");
            }
            make_random_string();
        </script>
    </div>
    <p>(a ~6 Zeichen mit Duplikaten von z)</p>
    <p>console.Es wird auch im Protokoll angezeigt.</p>
</body>
</html>

Überprüfen Sie JavaScript (HTML eingebettet) mit einem Browser (Microsoft Edge) js_edge.PNG

10. Zusammenfassung der Implementierung

Ich habe es auf einem Windows-Computer mit Ausnahme von Swift ausgeführt, aber dank WSL war es sehr einfach, die Umgebung einzurichten. Als ich ein Student war, fiel es mir schwer, eine C-Sprachentwicklungsumgebung auf einem Windows-Computer einzurichten. Darüber hinaus sind jetzt Cloud-IDEs wie AWS Cloud 9 verfügbar, und ich bin der Meinung, dass die Umgebung sehr gesegnet ist, da es relativ einfach ist, eine Entwicklungsumgebung auch für die gemeinsame Entwicklung mit Docker vorzubereiten.

Fazit

Einfach und schnell von Hand. (Im folgenden Beispiel habe ich die Tastatur richtig gedrückt.)

$ heroku rename wojwpd-hello-app

Wenn Sie es tragen, können Sie ihm einen anderen Namen geben.

Außerdem denke ich, dass das Hinzufügen eines festen Wortes zum Präfix es nicht duplizieren wird.

$ heroku rename apple-hello-app

Am Ende

Es war eine gute Erfahrung, verschiedenen Sprachen ausgesetzt zu sein. Wenn Sie mit Hello World nicht zufrieden sind, können Sie eine zufällige Zeichenfolge als Ausgangspunkt für eine neue Sprache generieren.

das ist alles.

Recommended Posts

Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich habe versucht, eine zufällige FizzBuzz-Spalte mit Blasensortierung zu sortieren.
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe eine Web-API erstellt
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe DCGAN implementiert und versucht, Äpfel zu generieren
Ich habe versucht zu debuggen.
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
[Frage] Ich möchte eine Zeichenkette kratzen, die von eindeutigen Tags umgeben ist!
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, automatisch eine Portverwaltungstabelle aus L2SW Config zu generieren
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
[Go + Gin] Ich habe versucht, eine Docker-Umgebung zu erstellen
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, PredNet zu lernen
Ich habe versucht, SVM zu organisieren.
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, Linux wieder einzuführen
Ich habe versucht, Pylint vorzustellen
Ich habe versucht, SparseMatrix zusammenzufassen
jupyter ich habe es berührt
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, das grundlegende Modell des wiederkehrenden neuronalen Netzwerks zu implementieren
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Ich möchte automatisch einen modernen Metal-Bandnamen generieren
[Markov-Kette] Ich habe versucht, die Zitate in Python einzulesen.
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, mit Hy ・ Define a class zu beginnen
Ich möchte eine ISO-8601-Zeichenfolge in japanische Zeit konvertieren
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Ich bin gestolpert, als ich versucht habe, Basemap zu installieren, also ein Memorandum
Grundlagen des Python-Lernens ~ Wie wird eine Zeichenkette ausgegeben (angezeigt)? ~
Ich habe versucht, einen Bot für die Ankündigung eines Wiire-Ereignisses zu erstellen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich habe mit PyQt einen einfachen Texteditor erstellt
Ich habe versucht, mit PI Fu aus einem Bild ein 3D-Modell einer Person zu erstellen
Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, eine Quip-API zu erstellen
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, eine kontroverse Validierung zu implementieren