Tu te souviens du jeu pour enfants 'Canard, Canard, Oie' ? Non? Moi non plus.
Le défi
- Imprimez le mot 'canard' sur chaque ligne un nombre de fois indéterminé.
- Imprimez le mot 'oie'.
- Votre programme se termine.
Les règles
- Essayez de jouer le jeu dans le moins d'octets.
- Il doit y avoir au moins un canard.
- Il doit y avoir exactement une oie à la fin de la liste.
- Il doit y avoir exactement un oiseau sur chaque ligne. Pas de lignes vides.
- Le cas des chaînes sorties n'est pas pertinent.
- Les espaces dans une ligne sont acceptables.
- Votre programme doit finir.
- Votre programme ne doit pas produire systématiquement le même nombre de canards.
S'amuser!
Remarque: cette question n'est pas une copie du code le plus court pour produire une sortie non déterministe.
Les raisons incluent:
- L'association au jeu d'enfants
- Les exigences de début et de fin définies pour la chaîne de résultat. Il n'y a pas de sortie spécifiée dans l'autre défi.
- Réponses Pour l'autre défi, le non-doublon est composé d'un nombre d'octets à un chiffre. La moyenne pour celui-ci est d'environ 30, ou environ.
- Du fait du chevauchement entre ce défi et celui-là, toute question de code-golf incluant la balise 'random' est un doublon. Devrions-nous les supprimer tous?
- Les réponses de code pour ce défi correspondraient à l'autre défi (d'une manière ridiculement démesurée), mais les réponses à ce défi ne correspondraient pas à celui-ci.
Réponses:
Gelée , 13 octets
Essayez-le en ligne!
Explication:
Version plus lisible: Essayez-le en ligne!
Reviendra toujours 1 ou 2 canards.
la source
Langage de script Operation Flashpoint , 48 octets
Imprime toujours un ou deux canards.
random 1
renvoie un nombre (à virgule flottante) compris entre 0 et 1. Ce nombre est passé en tant qu'argumentselect
avec le tableau[s,""]
. Le nombre aléatoire est ensuite arrondi au nombre entier le plus proche (0 ou 1) et l'élément de tableau à cet index est sélectionné dans le tableau.Appeler avec:
Sortie:
Version alternative de 56 octets:
la source
World of Warcraft 81 octets
Voici une macro que vous pouvez exécuter dans World of Warcraft.
la source
/run for x=1,random(1,9)do print("Duck")end print("Goose")
Minecraft <1.13,
7254 octetsDésolé, je devais.
Instructions:
data/functions/minecraft/ddg.mcfunction
/function ddg
dans la console de jeuComment ça fonctionne:
Affiche le mot "canard" pour chaque entité du monde, puis le mot "oie". Étant donné que les entités sont constamment en train de se reproduire et de disparaître, le nombre de "canards" ne sera pas constant. J'ai utilisé
tellraw
au lieu de beaucoup plus courtsay
parce quesay
sort le nom de l'entité, alors quetellraw
sort exactement ce qui est dit.Capture d'écran
Éditer: {"text": "canard"} remplacé par "canard" (et la même chose avec "oie")
la source
JavaScript,
4544423937 octetsA le potentiel de produire une erreur de débordement.
Essaye-le
la source
Octave ,
3833 octetsCe n'est pas le plus court (c'est 36 octets), mais c'est mon préféré. L'explication est en bas.
Essayez-le en ligne!
Quelques variations plus courtes:
Cela fonctionne en principe (33 octets), mais les interprètes en ligne expirent:
L'ajout d'octets pour raccourcir la sortie en fait 35 ou 36 octets:
Explication:
Je vais juste expliquer le dernier aléatoire. Les autres sont similaires, mais utilisent le nombre de jours depuis le 1er janvier 0000 à aujourd'hui.
rand
renvoie un nombre aléatoire sur l'intervalle (0, 1) . Ainsi,1/rand
renvoie un nombre supérieur à 1 . Dans la mesure1:f
où une plage , oùf
un flottant aléatoire supérieur à 1 est identique à1:floor(f)
,1:1/rand
crée une plage 1 .. x , où x> = 1 .Je vais essayer d'expliquer cela comme si Octave était un langage basé sur la pile.
la source
disp(['duck '+~pwd';'goose'])
? Je ne sais pas si c'est assez "indéterminé"Perl 5 , 20 octets
D'abord un 26 octets pratique:
Canards 1 à 9 fois avant d'être oie.
Essayez-le en ligne!
Mais si vous avez beaucoup de mémoire et de temps, cette version de 20 octets (suggérée par Chris ) fonctionne également:
Cela suppose également que le problème de l' an 2038 sera résolu pour Perl 5 , sinon il ne sera plus valable dans 1 seconde d'ici 20 ans.
la source
1+$^T%9
simplement$^T
, cela fonctionne toujours et vous économisez 4 octets.Python 2 ,
3634 octetsEssayez-le en ligne!
La suggestion de Kevin Cruijssen nous amène à 34 octets:
la source
((id(id)%5)+1)
de-~(id(id)%5)
pour vous débarrasser de la parenthèse. Il peut être intéressant de lire des astuces pour jouer au golf dans <toutes les langues> et des astuces pour jouer au golf en Python . Profitez de votre séjour!id(id)
pas êtreid(0)
ou suis-je manque quelque chose?id(0)
sur deux ordinateurs différents suggère que c'est une constante.id([])
. Cela devrait initialiser une liste distincte à chaque exécution du programme, ce qui en théorie devrait systématiquement donner lieu à des adresses mémoire différentes.Z Shell (+ wget & Netpbm),
168160150148145135120 octetsCe n’était pas la solution la plus courte, mais j’avais envie de donner une tournure à ce défi (inspiré par la solution de @ AlexG à cet autre problème ).
Ce script génère une image PPM contenant entre 1 et 8 images de canards et une image d’une oie au bas de la sortie standard. Il télécharge les deux images sources de Wikipedia, un accès Internet est donc nécessaire pour que cela fonctionne.
Exemple de sortie convertie au format JPEG via pnmtojpeg :
la source
R , 35 octets
Essayez-le en ligne!
rexp()
produit un nombre aléatoire à partir d'une fonction de décroissance exponentielle.+1
assurer au moins un canard. Toutes les lignes après la première incluent un espace de début (qui est le séparateur par défautcat
), mais cela est autorisé.la source
exp(-1)
environ 36,8%.\n
d'un octet plus court. Si vous visitez le site "Essayez-le en ligne!" lien vous pouvez voir que l'effet est le même.Bash ,
393837 octetsEssayez-le en ligne!
Imprime un nombre de canards égal au nombre de chiffres d'un nombre entier uniformément distribué sur [0,32767] (donc, le plus souvent, cinq canards (un bon nombre de canards)).
-1 octet chaque grâce à @Chris et @sch en soulignant des paires de citations qui ne tiraient pas leur poids.
la source
\n
avec\\n
.sed s/[0-9]/duck\\n/g<<<$RANDOM\goose
peut raser un octetsed
n'est pas entièrement portable. Sur certaines plates-formes, vous pouvez vous en tirer avec une seule barre oblique inversée\n
. Sur d'autres, vous n'obtiendrez pas de nouvelle ligne, peu importe ce que vous faites.Pure Bash (aucun utilitaire externe), 25
D' après la réponse de @ SophiaLechner , cela permet également d'imprimer un bon nombre de canards .
L'idée de @ OlivierDulac d'utiliser le PID du shell de script tel que stocké dans le
$
paramètre enregistre 5 octets.Essayez-le en ligne .
la source
RANDOM
de$
rasage de 5 octets? Et on pourrait aussi faire une très longue chaîne de canards:yes duck|head -n $$;echo goose
$$
est acceptable - merci!yes duck | head -n $$;echo goose
) comme alternative (plus longue que la tienne, mais on a BEAUCOUP de canards pour 5 personnages de plus ^^)Ruby , 30 octets
Essayez-le en ligne!
Note: vraiment 31 octets sans
\n
triche.la source
Bash + Coreutils,
3627 octetsImprime trop de canards (entre 2 et
cat /proc/sys/kernel/pid_max
), puis une oie.Sauvé neuf octets grâce à Digital Trauma et Olivier Dulac.
Essayez-le en ligne! (mais gardez à l'esprit qu'il peut parfois être tronqué)
Même longueur, mais sans
echo
:Essayez-le en ligne!
a
est la commande append danssed
etq
quitte. Les deux ne fonctionnent que sur la ligne$$
, ce qui correspond au PID.la source
head -n $((1+(RANDOM % 5)))
$$
plutôt que$RANDOM
pour ma réponse . Je pense que vous pourriez utiliser la même chose pour vous sauver 5 octets. Oh, et essayezsed
aussi:yes duck|sed 1$$q;echo goose
yes duck|sed $$q;echo goose
c'est bien - je ne pense pas que votre script obtiendrait un PID <1.PowerShell ,
353028 octetsEssayez-le en ligne! (version modifiée)
Génère un tableau de
Get-Random
nombre d'éléments. Ça peut prendre un moment. Cela ajoute un+1
pour s'assurer que nous en obtenons au moins unduck
. La version modifiée inclut également un-ma
indicateur ximum de5
sorte que vous puissiez voir que le programme fonctionne comme prévu (la version modifiée imprimera 1, 2, 3 ou 4duck
s avant legoose
).Le tableau et la
goose
chaîne solitaire sont laissés sur le pipeline et l'impliciteWrite-Output
nous donne gratuitement des valeurs séparées par une nouvelle ligne.Vous ne savez pas combien il a été difficile pour moi de ne pas changer la dernière ligne en "canard gris" ...
la source
0..(random)|%{'duck'};'goose'
ressemble à un 29, et générera également quelque part jusqu'à [int] :: MaxValue (2,1 milliards) de canards avant une oie. (Et0..0
fait imprimer un canard)Python 2 , 54 octets
Essayez-le en ligne!
la source
C # (compilateur interactif Visual C #) , 55 octets
Essayez-le en ligne!
la source
Brachylog ,
2421 octets-3 octets grâce à Erik l'Outgolfer
Essayez-le en ligne!
En célébration de la langue du mois , mon premier post de brachylog. Le flux de contrôle dans cette langue est cool.
Comment ça fonctionne:
la source
Geometry Dash World 2.2 Editor - 4 objets
Explication:
Le déclencheur BG est le déclencheur aléatoire de la version 2.2 actuelle. Il permet donc d'activer ou de désactiver l'ID de groupe 1 ou 2.
Le premier "DUCK" a un identifiant de groupe de 1, ce qui lui donne 50% de chances d’être supprimé ou non (basculé).
Il n'y a pas d'objet avec l'ID de groupe 2 dans ce niveau, donc il y a 50% de chances que 2 "DUCK" soient affichés.
Comment reproduire ceci:
Le premier "DUCK" a un identifiant de groupe de 1.
Oie et 2nd canard n'ont pas d'identifiant de groupe
À l'intérieur du déclencheur aléatoire.
la source
05AB1E ,
1514 octetsEssayez-le en ligne!
Imprimera 2, 5 ou 6 canards, puis l'oie.
-1 octet grâce à @Emigna qui utilise 'pour un seul mot compressé (canard)
la source
'М
depuis canard est un seul mot.['ÐœTΩ#].•zíΘ•»
'Ðœ₁Ω.D.•zíΘ•»
APL (Dyalog) , 22 octets
1 octet enregistré grâce à @EriktheOutgolfer
Essayez-le en ligne!
la source
'Goose'⊣⎕←⍣(?9)⊢'Duck'
Retina , 17 octets
Essayez-le en ligne!
Essayez-le en ligne!
Imprime 1 ou 2 canards, avec une probabilité égale.
Explication
Définissez la chaîne de travail sur
duck
et imprimez-la avec un saut de ligne de fin (\
). Ensuite, ceci est encapsulé dans une autre étape de sortie, mais le drapeau aléatoire (?
) lui est appliqué. Il est donc imprimé avec une probabilité de 50%.Remplacez le
duck
avecgoose
, qui est imprimé implicitement à la fin du programme.Voici une alternative amusante qui imprime 1 canard avec une probabilité de 50%, 2 canards avec 25%, 3 canards avec 12,5% ...:
la source
Vim (script) sur Linux,
4643 octets (4946 avec:
en début de ligne)Exécuté en tant que
vim -S filename
ou collé dans l'exécutionvim
avec:
avant chaque ligne.la source
\d
plus[0-9]
. De plus, il semblerait que vim ne nécessite pas la fin de ligne, ce qui peut donc être 45 octets :)> <> ,
3122 octetsEssayez-le en ligne!
-9 octets basés sur la révision d'une arborescence
la source
l?!;
et quitter avec une erreur.Befunge 98 ,
383025 octetsEssayez-le en ligne!
Duck
s'adapte désormais à une seule chaînela source
#
sur la deuxième lignewhitespace within a line is fine
afin que vous puissiez couper quelques citations (même si la sortie a l'air bizarre)T-SQL ,
70 4443 octets (plusieurs canards)Merci @Zac Faragher!
Version révisée,
54 4340 octets (1 ou 2 canards)Merci @ BradC!
Je n'arrive pas à obtenir que cela fonctionne correctement dans SQL Fiddle , mais cela fonctionne parfaitement dans LINQPad et SSMS.
Je ne sais pas s'il s'agit d'une limitation connue de SQL Fiddle ou si je fais quelque chose de mal
la source
select
àprint
la finale et remplacez celle-ci'duck'select'goose'
par'duck(linebreak)goose'
(avec un saut de ligne littéral, bien sûr)while rand()<.5print'duck'print'duck(linebreak)goose'
pour 43.while
parif
. Imprime (au hasard) un canard ou deux, ce qui (je crois) répond toujours au défi.Powershell -
31 à30 octetsAttention : vous allez probablement vous retrouver avec beaucoup de canards.
Random
inclut les valeurs de 0 àInt32.MaxValue
50%, ce qui peut donner beaucoup de fracas, selon le nombre de vos personnages.la source
$
de devant(Random)
. Essayez-le en ligne!Fission ,
2419 octetsEssayez-le en ligne!
-5 octets grâce à Martin Ender
la source
Brachylog , 21 octets
Essayez-le en ligne!
Hé, la langue du mois qui devient inactive, passons un peu aux choses!
la source
Befunge
5735 octets (le périmètre de tout le champ est de19x3 caractères17x2) Merci à Karhell pour l’amélioration.La deuxième ligne place canard et une nouvelle ligne sur la pile (en arrière) et le sort sous forme de chaîne. Après 75% de chances de revenir au début et d’imprimer à nouveau le canard, 25% (lorsque le point d’interrogation décide de descendre) d’imprimer de l’oie et de s’arrêter.
la source
55+"kcud",,,,,#v?(linebreak here) @,,,,,"goose"<