Die Herausforderung ist einfach:
ein Wort generieren.
Spezifikationen:
- Das Wort muss aussprechbar sein.
- Dies wird als "Wechsel zwischen einem Konsonanten und einem Vokal" definiert.
- Ein Konsonant ist einer der folgenden Buchstaben:
bcdfghjklmnpqrstvwxz
- Ein Vokal ist einer der folgenden Buchstaben:
aeiouy
- Das Wort muss zufällig generiert werden.
- Wörter müssen in der Lage sein, jeden Konsonanten und Vokal zu enthalten. (Sie können nicht nur
bcdf
für Konsonanten undaei
für Vokale verwenden.) - Das Wort muss 10 Buchstaben enthalten.
- Kürzester Code (in Zeichenanzahl) gewinnt.
code-golf
random
natural-language
generation
Türknauf
quelle
quelle
echo buxitiwymu
entspricht das Programm technisch den Spezifikationen. Ich versichere Ihnen, ich habe das Wort zufällig generiert: Py
wie einen Vokal behandeln können , wo Sieq
und verwendenx
können und wann Sie Kombinationen aus zwei Buchstaben wieng
oder verwenden könnenea
Antworten:
GolfScript, 32 Zeichen
Führen Sie es online aus .
quelle
Ruby: 56 Zeichen
Beispielausgaben:
quelle
'aeiouy'.chars
wäre ein char kürzer.TypeError: can't convert Enumerator into Array
Python, 81
Viel Glück beim Aussprechen.
quelle
:P
python grc.py | say
an meiner Maschine. Danke für die Idee.Cobol, 255
Also lerne ich gerade COBOL. Verwendete diese Frage als Übung. Ich habe versucht, Golf zu spielen.
Es ist 255 ohne das führende Leerzeichen und 286 Bytes mit.
Für das, was es wert ist, läuft dies in Microfocus COBOL für VS2012, und ich habe keine Ahnung, ob es irgendwo anders laufen wird.
quelle
APL (34)
quelle
JavaScript, 74
Erzeugt nicht alle Kombinationen, aber ich denke, dass alle Konsonanten und Vokale erscheinen.
JavaScript, 79
Mehr "zufällige" Version.
quelle
^0
?Math.random
gibt ein float, wir brauchen eine ganze Zahl.^0
schneidet die Nummer ab^
Operator noch nie in JavaScript gesehen und weniger davon gehört, einen Float damit abzuschneiden. Vielen Dank!^
Ruby:
7066 ZeichenProbelauf:
quelle
10.times
für ein Zeichen weniger verwenden.*10
->*4
, überspringen*3
,rand 60
->rand 20
und Sie haben 3 Zeichen gespeichert.R: 105 Zeichen
quelle
J (51)
quelle
Verarbeitung,
100999387Bei näherer Betrachtung der Frage sehe ich, dass keine Ausgabe erforderlich ist. Ich habe das entsprechend angepasst.
quelle
Objective-C, 129
Mit der Hilfe von Daniero
(Ich benutze die tendenziell gerne als Operator (->)
quelle
Java AKA ist die ausführlichste Sprache, die jemals erstellt wurde, 176 mit Hilfe von Doorknob, Daniero und Peter Taylor (Danke Jungs!)
Ungolfed:
}
quelle
String a[]
aufString[]a
(-1 Zeichen), Ändernw W = new w();
aufw W=new w();
(-2 Zeichen)f
und verwenden Siei%2
stattdessen. Diefor
Schleife kann auch gekürzt werden, und Sie können beide Zeichenfolgen in den bedingten Operator einfügen (hier sind auch keine Parens erforderlich) und diecharAt
auf der Außenseite verwenden. Hier ist das Ganze, 195 CHARS, 38 SAVED :import java.util.*;class w{public static void main(String[]a){Random r=new Random();for(int i=0;++i<11;)System.out.print((i%2>0?"bcdfghjklmnpqrstvwxz":"aeiouy").charAt(r.nextInt(6+(i%2)*14)));}}
Javascript, 85
Wenn von der Konsole ausgeführt, wird die Ausgabe angezeigt. Die explizite Anzeige würde
alert(s)
8 Zeichen hinzufügen , immer noch kürzer als die anderen JS-Lösungen.Danke C5H8NNaO4 und Howard!
quelle
~~(###)
können Sie schreiben,###|0
was 4 Zeichen spart.Javascript,
1351229686 Zeichenquelle
PHP, 100 Zeichen
quelle
Unix-Tools: 73 Byte
Und keine garantierte Laufzeit :)
Das einzige Problem ist, dass die generierte Zeichenfolge jedes Mal mit einem "Vokal" beginnt.
(edit: geändert ,
' '
um''
in den args der Paste) ( eine andere edit: entfernt -P von grep Optionen, dank Manatwork )quelle
grep
Parameter herum könnte etwas fein abgestimmt werden. Ich habe "von e ap ag ak".-a
wäre genug.-P
der richtige ist. Der Mann warnt anscheinend mit einem Grund vor seinem höchst experimentellen Status. (grep
2.16) Aber auf jeden Fall funktioniert es auch ohne-P
.-P
. Ich werde meine Antwort bearbeiten.tr -d \\n
kürzer zum Verbinden der Leitungen.Pyth, 26 Zeichen
Sie können es hier im Online-Compiler ausprobieren.
Jemand hat eine sehr ähnliche Herausforderung gestellt, die jedoch geschlossen wurde, nachdem ich eine Lösung gefunden hatte. Ich habe es nicht bemerkt, aber diese Frage geht der Entstehung von Pyth voraus. Wie auch immer, hier ist die Aufschlüsselung:
Jedes Mal, wenn die Schleife ausgeführt wird, wechselt J von einer Liste von Konsonanten zu einer Liste von Vokalen. Auf diese Weise können wir jedes Mal einen zufälligen Buchstaben von J auswählen.
Es kann eine Möglichkeit geben, J in der Schleife zu initialisieren oder die expliziten Zuweisungen aus der Schleife zu entfernen, aber ich hatte noch keinen Erfolg damit.
quelle
APL
3026Die Erklärung ist der vorherigen Version sehr ähnlich. Sie wurde nur ein wenig neu angeordnet, um die Lösung zu verbessern.
Hinweis: ⎕IO ist auf 0 eingestellt
Erläuterung:
Tryapl.org
quelle
('AEIOUY'∪⎕A) ≡ (∪'AEIOUY',⎕A)
aber es ist ein Byte kürzer.⎕A
weiteres Byte zu speichern:,('EIOUY'∪⎕A)[6(|,+)⍪5?20]
PHP 79 Bytes
Ziemlich prägnant.
quelle
C: 101
quelle
Javascript,
10487Golfen Sie eine ganze Menge einfacher, unnötiger Dinge, die noch nicht annähernd so schön sind wie die eines Copys
Oh, und das hat sich gerade beim Golfen gewehrt : "dydudelidu"
Jetzt habe ich einen mit den 2 Zeichen auf einmal Ansatz versucht. Es stellt sich heraus, dass es fast das Gleiche ist wie das zweite Exemplar, also kann ich es auch mit 79 nicht zählen.
a="";for(e=5;e--;)a+="bcdfghjklmnpqrstvwxz"[m=0|20*Math.random()]+"aeiouy"[m%6]
quelle
Brachylog , 9 Bytes
Probieren Sie es online!
Gibt die Ausgabe als Liste von Buchstaben über die Ausgabevariable aus.
quelle
F # , 166 Zeichen
quelle
K, 40 Bytes
5?"abc"
generiert 5 zufällige Buchstaben aus der angegebenen Zeichenfolge.5?/:
erzeugt 5 zufällige Buchstaben aus jeder der Zeichenfolgen auf der rechten Seite und erzeugt zwei Listen.+
transponiert diese beiden Listen und gibt uns eine Liste von Tupeln mit einem zufälligen Zeichen aus der ersten Liste und einem aus der zweiten Liste.,/
ist "raze" - verschmelze alle diese Tupel der Reihe nach.K5 kann dies in 33 Bytes tun, indem es das Alphabet geschickter erstellt und dann "except" (
^
) verwendet, um die Vokale zu entfernen, aber K5 ist viel zu neu, um in dieser Frage legal zu sein:quelle
R 83 Bytes
Generieren Sie alle möglichen Vokal-Konsonanten-Sequenzen in einer Matrix und stichprobenartig 5 von ihnen, wobei Sie ein Wort mit 10 Buchstaben erhalten.
quelle
05AB1E , 10 Bytes
Probieren Sie es online aus oder geben Sie es ausn Anzahl zufälliger Wörter .
Erläuterung:
Ziemlich einfach:
quelle
Gelee , 13 Bytes
Erläuterung:
Probieren Sie es online!
quelle