Voici la chanson (assez effrayante) de Cinq petits canards (elle n'est pas longue):
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Four little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only three little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
One little duck went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but none of the little ducks came back.
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Votre tâche n'est pas de sortir cette chanson. Vous devriez prendre un verset et sortir le prochain verset (le prochain verset du dernier verset est le premier verset).
Règles
- Aucune lacune standard, s'il vous plaît.
- Les entrées / sorties seront prises via nos méthodes d’entrée / sortie standard.
- Le verset exact doit être sorti, et il ne devrait y avoir aucune différence par rapport aux paroles de la chanson. L'entrée ne sera pas différente si elle est comparée aux paroles de la chanson.
Exemples
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Attendu:
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Attendu:
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
Réponses:
Stax ,
115111 octetsExécuter et déboguer
Tous les versets comme cas de test
la source
JavaScript (ES9), 227 octets
Ceci est similaire à la version de nœud ci-dessous mais utilise une formule basée sur
parseInt()
au lieu d'Buffer()
identifier le verset d'entrée.Il s’agit de ES2018 (alias ES9) car nous utilisons une expression régulière avec l’
/s
indicateur ( dotAll ).Essayez-le en ligne!
Comment?
Dans cette version, nous analysons l'intégralité du vers d'entrée en base 30 (
0
àt
) et effectuons un ET au niveau des bits avec 7. L'analyse s'arrête sur le premier caractère non valide, ce qui conduit à:JavaScript (Node.js) ,
233 231227 octets2 octets sauvés grâce à @Shaggy
Essayez-le en ligne!
Comment?
Le troisième caractère de chaque verset peut être utilisé comme identifiant unique. En prenant son code ASCII modulo 9, on obtient:
Les versets en sortie sont codés avec les modèles suivants:
Où chaque chiffre est remplacé par une chaîne selon le tableau suivant:
Où l'expression régulière
/ w.*\n/s
extrait cette partie commune de l'entrée:Nous ajoutons enfin les 11 derniers caractères de l’entrée, c’est-à-dire
" came back."
.la source
exec
lorsque la page rechargée. Grands esprits ... !Python 3 ,
267 263254 octets4 octets sauvegardés grâce à @ovs
Essayez-le en ligne!
Fonctionne en remplaçant les parties pertinentes par les parties respectives du verset suivant.
Après la préinitialisation,
T
est['8', '9', 'and all of the little ducks', 'One little duck', 'but none of the little ducks', 'Two little ducks', 'but only one little duck', 'Three little ducks', 'but only two little ducks', 'Four little ducks', 'but only three little ducks', 'Five little ducks', 'but only four little ducks', 'Mother duck herself']
.Alternative Python 2 , 252 octets
par @ovs
Essayez-le en ligne!
la source
for a in zip(T,T[-2:]+T):s=s.replace(*a)
pour 264 octets.lambda s:reduce(lambda s,a:s.replace(*a),zip(T,T[-2:]+T),s)
pour 262 octets en Python 2.T[2:]
place deT[-2:]
QuadR ,
257242 octets-14 grâce à Black Owl Kai, -1 grâce à Kevin Cruijssen
Essayez-le en ligne!
la source
Java 10, 347 octets
Essayez-le en ligne.
Explication:
Nous remplaçons d’abord toutes les pièces une à une par des nombres entiers dans la plage[ 10 , 21 ] , puis ces nombres entiers retournent à leurs remplacements. La raison en est que nous procédons en deux étapes, car nous remplacerions autrement les remplacements.
la source
T-SQL,
407 390 388382 octetsL'entrée se fait via une table pré-existanteje avec v , selon nos règles IO .
VARCHAR(MAX)
champAprès quelques octets
REPLACE
, exécutez les opérations suivantes en tant que SQL dynamique:Utilise une
CASE
instruction et desSTUFF
commandes pour insérer / écraser des caractères aux positions répertoriées.EDITS :
LEFT
lieu deSUBSTRING
et en éliminant un espaceCHAR
et en déplaçant une lettre supplémentaire dans la secondeREPLACE
(merci, @CDC!)Voici ma première version, utilisant une méthode différente (post-remplacement, formatée):
STRING_SPLIT
etPARSENAME
sont utilisés pour diviser une chaîne en lignes et en colonnes via-
et des.
séparateurs.La première colonne est un personnage clé qui est comparé à la 3ème lettre du verset d'entrée (merci pour l'idée, @ Night2). Les deuxième et troisième sont les remplacements effectués pour ce verset.
la source
Python 2 , 1034 octets
Ceci est mon code! Il utilise un dictionnaire simple. Après avoir exécuté ce code, vous pouvez entrer n’importe quel verset et le prochain verset en sortira.
PS: Je suis nouveau sur cette chaîne et ceci est mon premier post. J'ai vraiment aimé ce défi alors j'ai décidé de l'essayer. S'il vous plaît n'hésitez pas à me corriger.
la source
x
oua
) 2) Python est assez permissif avec les espaces blancs et j'essaierais donc de supprimer également certains de vos espaces blancs. Par exemple, vous n'avez pas besoin d'espaces=
. Enfin, nous avons une page pour jouer au golf en python que vous pouvez visiter pour améliorer votre jeu.sys
par exempleraw_input()
en raccourcissant la clé du dictionnaire, etc. Vous devez absolument supprimer les sections répétées de la chanson et les ajouter séparémentPHP (7.4),
253247 octets-6 octets en améliorant la manière dont le tableau de remplacements est construit avec davantage d’aide à partir de "Déballage à l’intérieur des tableaux".
Essayez-le en ligne!
Cela crée un tableau de tous les remplacements possibles (12 utilisés + 2 non utilisés) dans un
key=>value
format. Exemple:['Mother duck herself' => 'Five little ducks', etc...]
et remplace simplement ceux qui utilisent strtr .La seule chose intéressante est ma toute première utilisation de "Unpacking inside arrays", une nouvelle fonctionnalité de PHP 7.4.
PHP , 264 octets
Essayez-le en ligne!
J'ai stocké différents mots de chaque verset dans un tableau. Je trouve quel verset l’entrée utilise le troisième caractère de l’entrée car il est unique (
vuroet
). Ensuite, je remplace simplement différents mots de ce verset par des mots différents du prochain verset.la source
Propre , 352 octets
Essayez-le en ligne!
la source
C # (compilateur interactif Visual C #) , 262 octets
Essayez-le en ligne!
la source
PowerShell ,
356343340336 octetsEssayez-le en ligne .
Version plus lisible:
la source
PowerShell ,
265263255251246 octetsEssayez-le en ligne!
J'ai utilisé la force brute pour trouver l'expression
+"$args"[2]*37%724%7
.Merci @Arnauld pour le
3rd char
.la source
Japt v2.0a0, 143 octets
J'ai essayé d'encoder un seul vers avec des remplacements, mais finalement, l'adaptation de la solution d'Arnauld a été plus courte. Ayez une autre idée qui, espérons-le, fonctionnera à nouveau plus rapidement, mais vous ne savez pas quand je pourrai l'essayer.
Essayez-le - comprend tous les versets
la source
Bash ,
373355 octetsRien de trop fou ici. Une réduction facile de quelques octets consisterait à remplacer les variables à deux caractères (a1, a2, a3, e1..e6) par des variables à un caractère.
Essayez-le en ligne!
Essayez-le en ligne!la source
05AB1E , 134 octets
Essayez-le en ligne!
Depuis que je suis relativement nouveau à 05AB1E, cela peut être beaucoup joué au golf
la source
Perl 6 , 247 octets
Essayez-le en ligne!
Définitivement golfable, en particulier les 5 derniers éléments de la liste du formulaire
"num $l num-1"
, ou la regex de départ qui correspond aux bonnes parties de l’ancienne entrée.la source
Charbon de bois , 156 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Regardez le troisième caractère de la première ligne pour déterminer quel verset nous voulons.
Sortie de la première partie de la première ligne par indexation dans la liste de chaînes
Five
,Four
,Three
,Two
,One
,Mother duck herself
. Imprimez ensuitelittle duck
et,s
le cas échéant, suivi des 18 derniers caractères de la ligne de saisie (qui sont toujours les mêmes sur chaque verset).Les deux lignes du milieu sont toujours les mêmes sur chaque verset.
Pour la dernière ligne, il s'avère plus compliqué d'inclure
little ducks
la liste des alternatives pour une raison quelconque, mais les 11 derniers caractères sont toujours copiés à partir de l'entrée.la source
encre , 353 octets
Essayez-le en ligne!
Tout d' abord, les utilisations contrôles de sous - chaînes comprendre ce verset que nous sommes - qui est assez facile grâce à la capitalisation des chiffres au début -
F
,T
etO
ne se produit pas dans d'autres endroits, et vous pouvez distinguer les deuxième et quatrième verset le premier et le troisième en vérifiant égalementFi
etTh
respectivement.Ensuite, nous faisons simplement ce que l’encre fait de mieux et imprimons du texte brut contenant des conditionnelles. Au début, j’ai essayé d’utiliser des instructions switch, mais cela a semblé plus agréable, mais cela a fini par être plus long.
Vous penseriez que
Quack
s serait un bon endroit pour utiliser des variables, avec une chaîne répétée, mais les variables sont suffisamment longues pour que le code soit plus long à chaque fois que j'ai essayé de le faire. Peut-être que c'est un signe que je ne suis pas supposé jouer au golf à l'encre.la source