Ainsi, la semaine dernière, j'ai posté un défi pour jouer à Duck, Duck, Goose . Cela a conduit un certain nombre de Minnesotiens à commenter leur variation régionale du «canard gris» .
Alors voici les règles:
En utilisant cette liste de couleurs:
Red
Orange
Yellow
Green
Blue
Indigo
Violet
Gray
Ecrivez un programme pour suivre ces règles:
- Sélectionnez l'une de ces couleurs, ajoutez-la au mot "canard" et imprimez le résultat sur une nouvelle ligne.
- Si la couleur n'était pas "Gris", répétez l'étape 1.
- Si la couleur était "Gris", terminez votre programme.
Règles à respecter:
- Le programme ne doit pas toujours imprimer le même nombre de lignes.
- Il peut commencer sur «canard gris», mais ne devrait pas faire systématiquement.
- Il devrait y avoir exactement un canard sur chaque ligne et aucune ligne vide n'est sortie.
- Il devrait y avoir au moins un espace entre une couleur et un canard.
- L'espace blanc avant et après la sortie significative n'a pas d'importance.
- Le cas de la sortie n'a pas d'importance.
- Les couleurs peuvent être répétées.
- La sortie ne doit pas nécessairement contenir chaque couleur à chaque fois, mais il doit être possible que votre code produise chaque couleur.
- Aucune couleur en dehors du tableau ci-dessus ne peut être incluse.
- Le gris ou le gris sont acceptables dans votre réponse.
- Les couleurs ne doivent pas toujours être dans le même ordre.
- Visez le programme le plus court. Le plus petit nombre d'octets gagne.
Exemple de sortie:
Green duck
Orange duck
Yellow duck
Indigo duck
Yellow duck
Gray duck
Merci à Mike Hill de m'avoir informé de cette variation.
Grey
une fois (pour ne pas avoir à les sélectionner toutes et à vérifier si elles avaient été choisiesGrey
).Réponses:
05AB1E ,
42 à40 octets2 octets sauvés grâce à Erik the Outgolfer
Essayez-le en ligne!
la source
ind
c'estëß
!LuaLaTeX,
220211 caractèrescommander:
Pas le plus court, mais le plus fantaisiste. Basé sur la solution de @ skillmon
la source
tikzducks
là-bas :):)
6502 code machine (C64), 124 octets
Démonstration en ligne - Utilisation:
SYS49152
.Explication (désassemblage commenté):
la source
sys 49152
.Perl 5 , 79 octets
Essayez-le en ligne!
la source
Taxi , 1995 octets
Essayez-le en ligne!
Je pense qu’il est intéressant de noter que 47% de ce code ne fait que choisir un entier aléatoire compris entre 1 et 8.
En outre, Taxi est si bavard qu’il est beaucoup plus court pour coder en dur l’
duck\n
après chaque couleur plutôt que de le concaténer plus tard.Voici la version sans golf:
la source
Java (OpenJDK 9) , 133 octets
Essayez-le en ligne!
Des explications
la source
Ruby ,
93 91 90 89 87 8685 octetsMerci à Dom Hastings d’ avoir économisé 2 octets, Kirill L. 1 octet et Asone Tuhid 1 octet!
Essayez-le en ligne!
la source
()
le code et si vous utilisez$.
plutôt que des
stocker l'index, vous pouvez éviter de créers
($.
étant pré-initialisé au numéro de ligne!), Vous devrez allerGrey
à la fin de la liste et vérifier à la$.<7
place bien que. J'espère que ça t'as aidé!s=1
et$.
c'était parfait!while s...
et l'espace était nécessaire. Je n'ai pas vu cette opportunité après avoir changés
pour$.
.Color+" duck"
sauve 1 octetLangage de script Operation Flashpoint , 133 octets
Appeler avec:
Exemple de sortie:
Au début, j’ai mal interprété le défi comme si le but était de produire un nombre variable de lignes, sans nécessairement s’arrêter à la ligne "Gray canard". Suite à cette interprétation incorrecte, un code légèrement plus intéressant a été créé:
la source
pdfTeX,
231220219209207 octetsLuaTeX,
216206204 octetsla source
Brachylog , 68 octets
Essayez-le en ligne!
la source
Ruby ,
8481 octetsMerci à Dom Hastings pour -3 octets.
Essayez-le en ligne!
la source
$_
, vous pouvez avoiruntil/y/
à la fin pour -3!PHP, 89 octets
Courez avec
-nr
ou essayez-le en ligne .la source
> <> , 107 octets
Essayez-le en ligne!
la source
Octave ,
114112 octetsEssayez-le en ligne!
Il y a un tas d'options différentes qui se situent toutes entre 112 et 118 octets ... Certaines initialisent un index au début, le décrémentent d'un nombre aléatoire pour chaque boucle et attendent jusqu'à ce qu'il soit à 0 . D'autres utilisent
printf
au lieu d'disp
éviter certains crochets et ainsi de suite.la source
cat
ethorzcat
. Merci quand même :)PHP ,
1331251111089792 octetsEssayez-le en ligne!
-8 octets grâce à @Olivier Grégoire
-3 octets grâce à @manatwork
-11 octets grâce à @Dom Hastings
la source
Grey
enX
, car il n'est pas utilisé. Vous gagnerez 6 octets.for
condition de » pas besoin entre parenthèses:x!=$b=$a[array_rand($a)]
. BTW,?>
termine une déclaration, pas besoin de;
devant.x
du tout et en utilisant$b=$a..
comme condition et en utilisantrand(0,7)
au lieu dearray_rand
. Vous pouvez supprimer la nouvelle ligne entre?>
etGrey duck
aussi. De plus, votre lien TIO avait encore des balises complètes, vous pouvez ajouter-d short_open_tag=on
des drapeaux pour que cela fonctionne! :)Utilitaires Bash + GNU, 72
Essayez-le en ligne .
la source
bash, 96 octets
Merci à @ DigitalTrauma.
la source
>0
, cependant, je suis parti${#a}
au lieu de8
.${#a}
au lieu de8
? C'est du code-golf - il n'est pas nécessaire de donner la possibilité de généraliser votre code pour qu'il soit modifié pour un nombre différent de couleurs. Tout ce que vous avez à faire est de respecter les spécifications dans le plus petit nombre d'octets.JavaScript, 104 octets
Essayez-le en ligne
la source
new Date
le RNG ici.AWK , 114 octets
Essayez-le en ligne!
Explication
Notez que cela nécessite "quelques" entrées. L'entrée peut être vide. Pour éviter le besoin d’entrée, ajoutez la première ligne en ajoutant
BEGIN
la source
PowerShell , 94 octets
Essayez-le en ligne!
Boucles jusqu'à
$r
est égal àGrey
. Dans la boucle,-split
la chaîne littérale sur les nouvelles lignes, en choisit uneRandom
, puis imprime la couleur plusDuck
(techniquement, elle est laissée sur le pipeline et son nettoyage à la prochaine itération de la boucle entraîne sonWrite-Output
apparition). Notez qu'il est théoriquement possibleGrey
de ne jamais être choisi, et que la boucle continue indéfiniment, mais cela ne se produira presque jamais (dans le sens de probabilité).la source
R , 101 octets
Essayez-le en ligne!
Fortement inspiré par la réponse de @ user2390246 au défi connexe. Nous avons besoin de deux sources d’aléatoire: modifier l’ordre des couleurs et échantillonner les couleurs des canards non gris. Le
sample
prendra un échantillon aléatoire de taille aléatoire donné par une distribution exponentielle avec un paramètre rate1
, tronqué en un entier. L' utilisation d' un distrubtion exponentielle signifie malheureusement qu'il existe une probabilité deexp(-8)
ou autour0.0003354
que l'échantillon sera au moins8
, donc nous devons échantillonreplace=T
.la source
\n
par une nouvelle ligne réelle pour 1colors()[c(26,254,498,552,640,652)]
à la place descan(..)
etc. devrait descendre à environ 83colors()
! Ce sont de beaux golfs, que je pense que vous devriez poster comme votre propre réponse, car c’est la manière la moins élégante d’obtenir les couleurs.Python 2 ,
138133120117116 octetsEssayez-le en ligne!
Beaucoup mieux avec quelques idées de @EriktheOutgolfer. Merci!
-3 plus grâce à @ovs
-1 avec merci à @Rod pour un nouveau tour cool appris :-)
la source
Retina ,
6968 octetsMerci à Leo pour avoir sauvegardé 1 octet.
Essayez-le en ligne!
Explication
.
supprime les sorties implicites à la fin du programme (sinon, nous aurions deux canards gris)./y/^{
encapsule le programme entier dans une boucle qui continue tant que la chaîne de travail ne contient pasy
. Le reste de cette ligne définit la chaîne de travail sur une liste de toutes les couleurs, séparées par un saut de ligne.Nous grepons une ligne aléatoire de la chaîne de travail (et donc une couleur aléatoire). Et nous imprimons le résultat avec une traînée
duck
et un saut de ligne.la source
MATL ,
6864 octetsEssayez-le en ligne!
Explication
la source
Python 3,
130,128,127,126, 125 octets-1 par @ElPedro!
-1 par moi
-1 par @Bubbler!
Essayez-le en ligne!
la source
d!=c[0]
enregistrer un octet?print(d,'duck')
enregistrer un octet. Le délimiteur par défaut est un espace.Java (JDK 10) , 287 octets
Essayez-le en ligne!
Mon tout premier codegolf! Évidemment pas compétitif, juste heureux d'avoir appris assez de Java (actuellement dans CS200) pour pouvoir participer.
la source
Kotlin , 122 octets
Essayez-le en ligne!
la source
MS-SQL, 158 octets
Basé en grande partie sur l'excellente réponse de Razvan , mais en utilisant la
STRING_SPLIT
fonction spécifique à MS-SQL 2016 et versions ultérieures. Utilise également unGOTO
au lieu d'uneWHILE
boucle.Formaté:
la source
T-SQL ,
195185184 octetsla source
BEGIN
.Python 2 , 98 octets
Regardez ma pas d'importations!
(Imprime des espaces supplémentaires entre les couleurs et
duck
comme autorisé dans la question)Essayez-le en ligne!
Un assez mauvais générateur de nombres pseudo-aléatoires ensemencé avec l'ID d'objet 0 (mais il semble correspondre à la spécification) qui génère à plusieurs reprises un entier
x
, dans [0,7], qui est utilisé pour trancher une liste de caractères de cet index dans étapes de 8 pour obtenir le nom de la couleur qui est imprimé avecduck
un tuple, forçant un espace entre les deux. Quandx
devient égal à zéroGrey
est imprimé et l'évaluation de la prochaine entrée dans le générateur de nombres aléatoires basé sur modulo en essayant de diviser par zéro (v=1/x,v
tente de créer un nouveau tuple avec le premier élément1/x
=1/0
)La même manière est 100 en Python 3 avec
la source