In der englischen Sprache besteht ein todsicherer Weg, eine aussprechbare Unsinn-Buchstaben-Kombination zu bilden, darin, sie vollständig aus Konsonant-Vokal-Paaren zu machen, z. B. Wu ko pa ha oder Me fa ro , Konsonant zuerst , gefolgt von Vokal .
Herausforderung:
Schreiben Sie ein Programm oder eine Funktion, die bei einer benutzerdefinierten Anzahl von Buchstaben nach diesem Prinzip einen zufälligen Namen erzeugt. So einfach ist das.
Eingang:
Eine ganze Zahl größer oder gleich 2, die die erforderliche Anzahl von Buchstaben in der Ausgabe angibt. Die Eingabe kann über STDIN, Befehlszeilenargumente oder Funktionsargumente erfolgen.
Ausgabe:
Eine Zeichenfolge der angegebenen Länge, die zufällig ausgewählte Konsonant-Vokal-Paare enthält. Es kann auf STDOUT oder die nächstgelegene Alternative gedruckt oder im Falle einer Funktion zurückgegeben werden.
Regeln:
- Jeder Konsonant des englischen Alphabets sollte die gleiche Wahrscheinlichkeit haben, für das erste Zeichen jedes Paares ausgewählt zu werden, und jeder Vokal des englischen Alphabets sollte die gleiche Wahrscheinlichkeit haben, für das zweite Zeichen jedes Paares ausgewählt zu werden.
- Buchstabenpaare können wiederholt werden.
- Da dies ein Name ist, muss der erste Buchstabe groß geschrieben werden.
- Wenn die Eingabe ungerade ist, sollte an das Ende eines zufällig ausgewählten Buchstabenpaares im Namen y oder h angehängt werden. Die Auswahl von y oder h sollte ebenfalls zufällig sein.
- Standardlücken sind nicht zulässig.
- Kleinster Code in Bytes gewinnt.
Buchstabendefinitionen:
Konsonanten:
bcdfghjklmnpqrstvwxyz
Vokale:
aeiou
Beispiel I / O:
Input: 6
Output: Mefaro
Input: 9
Output: Wukohpaha
Genießen!
Antworten:
Pyth, 33 Bytes
Demonstration.
quelle
JavaScript ES6,
187180168 BytesEdit: Ich habe von der Verwendung von Regex Replace auf eine einfache For-Schleife umgestellt, was die Länge erheblich verbessert hat. Ungolfed Code und Test-UI unten. Geben Sie eine negative Zahl auf eigenes Risiko ein, da dies eine Endlosschleife ergibt. (Dank an unclemeat für den Hinweis.)
quelle
SWI-Prolog,
286285 BytesBeispiel:
a(13).
AusgängeLeqihsekeqira
.Hinweis: Sie können das ersetzen müssen
`
mit ,"
wenn Sie eine alte Version von SWI-Prolog haben.quelle
Pyth,
5242 BytesSie können es hier im Online-Compiler ausprobieren.
Dank an Jakube für das weitere Golfspielen, NinjaBearMonkey für die Klärung der Herausforderung und issacg für das Erstellen von Pyth und das versehentliche Unterrichten von mir
X
.Dieses Programm wählt nach dem Zufallsprinzip einen Konsonanten und einen Vokal aus, um die Zeichenfolge zu füllen, fügt einem Paar 'h' oder 'y' hinzu, wenn die Eingabe ungerade ist, und schreibt dann das erste Zeichen in Großbuchstaben. Hier ist die Aufteilung:
Es scheint ineffizient, 'h' oder 'y' an das erste Konsonant-Vokal-Paar anzuhängen und dann die Liste zu verschlüsseln. Ich habe versucht, an ein zufälliges Paar anzuhängen, aber der Code war immer länger als dieser.
quelle
rX1
GroßbuchstabenX
.t
ist dasselbe wie_P_
.J
, da SieJ
nur einmal verwenden.Perl,
253238 BytesIch kann wahrscheinlich weiter Golf spielen, aber das sollte vorerst reichen.
Änderungen:
quelle
Julia, 141 Bytes
Dadurch wird eine unbenannte Lambda-Funktion erstellt, die eine Ganzzahl als Eingabe akzeptiert und eine Zeichenfolge zurückgibt. Es nutzt die Tatsache aus, dass Zeichenfolgen in Julia wie Zeichenfelder indiziert und referenziert werden können. Um es zu nennen, geben Sie ihm einen Namen, z
f=n->...
.Ungolfed + Erklärung:
Beispiele:
quelle
Python 2,
148169156Bearbeiten: Es wurde festgestellt, dass der erste Buchstabe nicht groß geschrieben wurde. Ich werde sehen, ob ich morgen wieder Golf spielen kann.
Edit 2: Erinnert
.title
aber ich denke das wird es sein.quelle
SmileBASIC 2 (Petit Computer),
197177 BytesZEITGENÖSSISCHE ÄNDERUNG MAI 2018 : Dies war meine allererste Einreichung vor fast drei Jahren! Meine Fähigkeiten haben sich seitdem sehr verbessert; -20 nur von geringfügigen Anpassungen.
Es beginnt mit einer Eingabeaufforderung (es ist leer, um Bytes zu speichern, also ist es nur ein?), In der Sie die Länge eingeben (in Variable gespeichert
L
).Ich bin mir sicher, dass die Teilnahme an einer obskuren BASIC-Sprache mir nur ein komisches Aussehen verleiht, aber ich habe es geschafft, es für BASIC ziemlich klein zu machen. Es nutzt die seltsamen Macken von SB (wie Bedingungen, die mit 1 oder 0 bewertet werden, da es keinen Booleschen Typ gibt), um so viele Bytes wie möglich zu eliminieren, als ich dies um 3 Uhr morgens schrieb.
quelle
Marbelous, 203 Bytes
Testen Sie es hier (Online-Dolmetscher).Eingabe über Argumente. Bibliotheken und zylindrische Tafeln müssen aktiviert sein.
Kommentierte / lesbare Version:
Dies entspricht ungefähr dem folgenden Pseudocode (
random(a,b)
generiert Zahlen zwischena
undb
einschließlich):quelle
Ruby, 119 Bytes
13 Bytes für die Großschreibung ...
Verwendung:
Ausgabe:
quelle
C 219 Zeichen
Scheint zu funktionieren, ich bin noch neu darin.
quelle
rand()%(n-1-i)<2
stattdessenrand()%(n-1)<(i+2)
eine einheitliche Verteilung erhalten, es sei denn, Sie generieren diese Zufallszahl nur einmal und speichern sie irgendwo.🙋
verwenden, die mehr als ein Byte verwenden.R, 166 Bytes
Übernimmt die Eingabe von STDIN und gibt sie an STDOUT aus.
Erläuterung
Einige Tests
quelle
K5, 131 Bytes
Dies funktioniert NICHT mit Kona oder kdb +. Sie müssen einen K5-Interpreter wie OK verwenden .
Live-Demo. (Stellen Sie
5
am Ende eine andere Zahl ein, um andere Eingaben zu versuchen.)quelle
Ruby,
316 238216 ZeichenCombos mit ungeraden Zahlen enden mit
h
odery
.Vielen Dank an @blutorange für ein vollständiges Wörterbuch mit Ruby-Golftipps.
Ich habe meinen Code um 100 Zeichen gekürzt.
quelle
j
war ein Tippfehler.for i in ?a..?z;...;end
Ersetzbar durch(?a..?z).map{...}
; Dasthen
Nachherif
ist optional.v.include?(i)||c.push(i)
ist eine Abkürzung fürunless v.include?(i);c.push(i)
. Verwenden Siec<<i
fürc.push(i)
.c.map{}
ist kürzer alsc.each{}
.i%2==1?1:2
ist eine Abkürzung fürif i%2==1;1;else;2;end
. Dasprint "Enter..."
wird beim Codegolf nicht benötigt; )Perl 5 , 112 Bytes
Probieren Sie es online!
quelle