Dans la langue anglaise, une façon infaillible de faire une combinaison de lettres non-sens prononçables est de la faire entièrement à partir de paires consonne-voyelle, par exemple Wu ko pa ha , ou Me fa ro , consonne d' abord, suivie de voyelle .
Défi:
Écrivez un programme ou une fonction qui, étant donné un nombre de lettres spécifié par l'utilisateur, créera un nom aléatoire en utilisant ce principe. C'est si simple.
Contribution:
Un entier supérieur ou égal à 2 qui désigne le nombre de lettres requis dans la sortie. L'entrée peut provenir de STDIN, des arguments de ligne de commande ou des arguments de fonction.
Production:
Une chaîne de la longueur donnée contenant des paires de voyelles-consonnes sélectionnées au hasard. Il peut être imprimé sur STDOUT ou l'alternative la plus proche ou retourné dans le cas d'une fonction.
Règles:
- Chaque consonne de l'alphabet anglais devrait avoir une probabilité égale d'être sélectionnée pour le premier caractère de chaque paire, et chaque voyelle de l'alphabet anglais devrait avoir une probabilité égale d'être sélectionnée pour le deuxième caractère de chaque paire.
- Les paires de lettres peuvent être répétées.
- Puisqu'il s'agit d'un nom, la première lettre doit être en majuscule.
- Si l'entrée est impaire, une paire de lettres sélectionnée au hasard dans le nom doit avoir y ou h ajouté à la fin. Le choix de y ou h doit également être aléatoire.
- Les échappatoires standard ne sont pas autorisées.
- Le plus petit code en octets gagne.
Définitions des lettres:
Les consonnes:
bcdfghjklmnpqrstvwxyz
Voyelles:
aeiou
Exemple d'E / S:
Input: 6
Output: Mefaro
Input: 9
Output: Wukohpaha
Prendre plaisir!
Réponses:
Pyth, 33 octets
Manifestation.
la source
JavaScript ES6,
187180168 octetsEdit: je suis passé de l'utilisation de regex replace à une simple boucle for, ce qui a considérablement amélioré la longueur. Code non golfé et testez l'interface utilisateur ci-dessous. Entrez un nombre négatif à vos risques et périls car cela fait une boucle infinie. (Merci à unclemeat pour l'avoir signalé.)
la source
SWI-Prolog,
286285 octetsExemple:
a(13).
sortiesLeqihsekeqira
.Remarque: vous devrez peut-être remplacer le
`
par"
si vous disposez d'une ancienne version de SWI-Prolog.la source
Pyth,
5242 octetsVous pouvez l'essayer dans le compilateur en ligne ici.
Merci à Jakube pour l'avoir approfondi, NinjaBearMonkey pour avoir clarifié le défi et issacg pour avoir créé Pyth et m'avoir appris par inadvertance
X
.Ce programme sélectionne au hasard une consonne et une voyelle pour remplir la chaîne, ajoute «h» ou «y» à une paire si l'entrée est impaire, puis met en majuscule le premier caractère. Voici la répartition:
Il semble inefficace d'ajouter «h» ou «y» à la première paire consonne-voyelle, puis de brouiller la liste. J'ai essayé d'ajouter à une paire aléatoire, mais le code était toujours plus long que cela.
la source
rX1
capitaliseX
.t
est la même chose que_P_
.J
, car vousJ
ne l' utilisez qu'une seule fois.Perl,
253238 octetsJe peux probablement jouer au golf plus loin, mais cela devrait faire pour l'instant.
Changements:
la source
Julia, 141 octets
Cela crée une fonction lambda sans nom qui accepte un entier en entrée et renvoie une chaîne. il profite du fait que les chaînes de Julia peuvent être indexées et référencées comme des tableaux de caractères. Pour l'appeler, donnez-lui un nom, par exemple
f=n->...
.Non golfé + explication:
Exemples:
la source
Python 2,
148169156Edit: réalisé qu'il n'a pas mis en majuscule la première lettre. Je vais voir si je peux jouer au golf demain.
Edit 2: Remembered
.title
mais je pense que ce sera tout.la source
SmileBASIC 2 (Petit ordinateur),
197177 octetsMODIFICATION CONTEMPORAINE MAI 2018 : C'était ma première soumission, il y a près de 3 ans! Mes compétences se sont beaucoup améliorées depuis lors; -20 juste à partir d'ajustements mineurs.
Il commence par une invite (elle est laissée en blanc pour enregistrer les octets, donc c'est juste un?) Où vous mettez la longueur (stockée dans une variable
L
).Je suis sûr que participer avec un langage BASIC obscur ne m'apportera que des regards étranges, mais j'ai réussi à le rendre assez petit pour BASIC. Il profite des bizarreries étranges de SB (comme les conditions évaluant à 1 ou 0 car il n'y a pas de type booléen) pour éliminer autant d'octets que je pourrais avoir quand j'ai écrit cela à 3 heures du matin.
la source
Marbelous, 203 octets
Testez-le ici (interprète en ligne).Entrée via des arguments. Les bibliothèques et les tableaux cylindriques doivent être activés.
Version commentée / lisible:
Ceci est à peu près équivalent au pseudocode suivant (
random(a,b)
génère des nombres entrea
etb
inclus):la source
Rubis, 119 octets
13 octets pour la capitalisation ...
Usage:
Production:
la source
C, 219 caractères
Semble fonctionner, je suis encore nouveau dans ce domaine.
la source
rand()%(n-1-i)<2
au lieu d'rand()%(n-1)<(i+2)
obtenir une distribution uniforme, sauf si vous ne générez ce nombre aléatoire qu'une seule fois et l'enregistrez quelque part.🙋
qui utilise plus d'un octet.R, 166 octets
Prend les entrées de STDIN et les sorties vers STDOUT.
Explication
Quelques tests
la source
K5, 131 octets
Cela ne fonctionnera PAS sur Kona ou kdb +; vous devez utiliser un interpréteur K5 comme oK .
Démo en direct. (Essayez de définir le
5
à la fin sur un nombre différent pour essayer différentes entrées.)la source
Rubis,
316 238216 caractèresLes combinaisons de nombres impairs se terminent par
h
ouy
.Merci à @blutorange pour un dictionnaire complet d'astuces de golf rubis.
Whoa, j'ai raccourci mon code de 100 caractères.
la source
j
était une faute de frappe.for i in ?a..?z;...;end
peut être remplacé par(?a..?z).map{...}
; L'then
aprèsif
est facultatif.v.include?(i)||c.push(i)
est l'abréviation deunless v.include?(i);c.push(i)
. Utiliserc<<i
pourc.push(i)
.c.map{}
est plus court quec.each{}
.i%2==1?1:2
est l'abréviation deif i%2==1;1;else;2;end
. Leprint "Enter..."
n'est pas nécessaire dans codegolf; )Perl 5 , 112 octets
Essayez-le en ligne!
la source