Ecrivez une fonction ou un programme qui utilise deux mots en entrée et en sortie comme variantes du très populaire slogan anglais "Quelle quantité de bois un mandrin de Woodchuck produirait-il si un Woodchuck pouvait chuck de bois?".
La sortie utilisera le premier mot quatre fois
- Combien
wood
serait unwood
mandrin si unwood
mandrin pouvait chuckwood
?
et le deuxième mot quatre fois
- Combien de bois serait un bois
chuck
chuck
si un boischuck
pouvaitchuck
bois?
le reste de la sortie étant identique pour toutes les entrées.
How much
boiswould a
marmottemandrin
if a
marmottecould
chuckbois
?
L'entrée et la sortie peuvent être dans n'importe quel format que votre langue reconnaît raisonnablement comme traitant des chaînes de texte. La sortie doit être exactement dans le format indiqué, y compris la capitalisation, les espaces et leur absence, et le point d'interrogation final. Un retour à la ligne optionnel est acceptable.
Idéalement, votre code gérera les entrées contenant des caractères ASCII imprimables. Cependant, il est permis de limiter l'entrée à des sous-ensembles raisonnables d'ASCII imprimables; indiquez-le simplement dans votre réponse. Manipuler des jeux de caractères plus importants est bien sûr correct
Exemple de paires entrée-sortie:
"wood", "chuck"
"How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
"ground", "hog"
"How much ground would a groundhog hog if a groundhog could hog ground?"
"bar", "keep"
"How much bar would a barkeep keep if a barkeep could keep bar?"
"money", "belt"
"How much money would a moneybelt belt if a moneybelt could belt money?"
"rain", "fall"
"How much rain would a rainfall fall if a rainfall could fall rain?"
"hair", "cut"
"How much hair would a haircut cut if a haircut could cut hair?"
"green", "house"
"How much green would a greenhouse house if a greenhouse could house green?"
"jabber", "wock"
"How much jabber would a jabberwock wock if a jabberwock could wock jabber?"
"pine", "apple"
"How much pine would a pineapple apple if a pineapple could apple pine?"
"Rob", "Lowe"
"How much Rob would a RobLowe Lowe if a RobLowe could Lowe Rob?"
"code", "golf"
"How much code would a codegolf golf if a codegolf could golf code?"
"fish", ""
"How much fish would a fish if a fish could fish?"
"", "fish"
"How much would a fish fish if a fish could fish ?"
"", ""
"How much would a if a could ?"
" ", " "
"How much would a if a could ?"
"would a", "how much"
"How much would a would a would ahow much how much if a would ahow much could how much would a?"
C'est du code-golf , donc le moins d'octets gagne. Les réponses sont les bienvenues dans toutes les langues, même si une autre langue peut le faire avec moins d'octets.
(Inspiré par ce meme , qui utilise une paire d’entrée mieux que ce modèle rigide ne le fait ....)
"", ""
veut dire non: pRéponses:
Python 3 ,
7067 octetsEssayez-le en ligne!
Je veux dire, si la chaussure va bien ..
Merci à manatwork d' avoir attrapé une faute de frappe
Merci à Remco Haszing pour l'excellente idée de -3 octets
Je pars de l'hypothèse que ce serait toujours une soumission valide (parce que c'est trop cool de ne pas essayer). Si OP pouvait clarifier si cela est acceptable (parce que je n'ai pas écrit de fonction en tant que telle), ce serait apprécié.
Mise à jour: Bénédiction reçue, tout va bien :)
La version précédente:
la source
"How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format
. Cela retourne une fonction liée à la chaîne non formatée.print("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))
génère la sortie souhaitée, je ne vois aucune raison de ne pas l'accepter :)T-SQL, 82 octets
La saisie provient du tableau préexistant avec les colonnes et , conformément à nos règles IO .t w c
Un octet de plus, mais pour une raison un peu plus agréable:
Cette version fonctionne sur un sous-ensemble d'entrées n'incluant pas le chiffrew
2
dans le premier mot .Comme je suis en SQL, je peux pré-charger tous les exemples dans la table et les exécuter tous en même temps:
la source
select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Bash , 50 octets
Essayez-le en ligne!
-5 octets grâce aux commentaires ci-dessous.
la source
Stax ,
33313029 octets-1 grâce à récursif !
Exécutez et déboguez-le sur staxlang.xyz!
Poussez chaque composant dans la pile dans l'ordre inverse, puis associez-le à tous avec des espaces.
Décompressé (35 octets) et explication:
Tout ce qui est compris entre `` est un littéral de chaîne compressé. Cette virgule est essentielle. La dernière fois que j'ai lu dans la pile d'entrées, je dois faire un saut plutôt que de jeter un coup d'œil pour éviter un "chuck" supplémentaire à la fin de ma sortie.
Vous remarquerez que j'ai mis les deux entrées sur la même ligne pour quelques cas de test, et qu'elles sont dans l'ordre inverse. Cela est nécessaire pour prendre en entrée des chaînes vides ou des chaînes d'espaces.
2726 octets avec des restrictions d'entréeExécutez et déboguez-le sur staxlang.xyz!
Tout comme le SOGL de @ dzaima , cela échouera si la première entrée contient la lettre minuscule «y». Pousse la chaîne "Combien b aurait a par y si a par y pouvait yb?", Fait alors une paire de remplacements.
la source
,
de votre solution de 31 octets puisse être supprimé. Ce qui suit+
apparaît implicitement à partir de la pile d'entrée. Le comportement est donc identique.JavaScript, 70 octets
Ennuyeuse!
Essayez-le en ligne!
Légèrement moins ennuyeux!
Essayez-le en ligne!
la source
f(a)(b)
) que vous pouvez voir dans le TIO. Mais oui, nos consensus pour permettre des fonctions au curry et je pense que nous sommes sur le point de parvenir à un consensus sur le fait de permettre à une fonction d'être réellement rendue.SOGL ,
32 à30 octetsEssayez-le ici!
La première entrée ne peut pas contenir la lettre
y
, ce qui semble laisser un sous-ensemble raisonnable d'ASCII (et d'unicode).½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘
est une chaîne compressée de"how much b would a by y if a by could y b?"
(caractères choisis de manière à ce que les mots requis figurent tous dans les 512 premiers mots du dictionnaire qui compressent le mieux), puisb
sont remplacés par la première entrée ety
par le deuxième.la source
y -> wood
etn -> chuck
. Un dixième de point de dignité dit que c'est également le cas ici.b
pas autorisé dans la première entrée alors quee
ok dans la deuxième entrée?e
, sinon elle serait remplacée par la 2e entrée du 2e remplacementR ,
907776 octets-13 grâce à Sumner18
-1 grâce à Giuseppe
Essayez-le en ligne!
la source
gsub
pour -13 octets à la place. tio.run/…gsub
ça a plus de sens.pryr
, vous pouvez le réduire à 73 .x
n'inclut pas le caractère2
; il échoue dans ce cas ( TIO ).PHP , 72 octets
Essayez-le en ligne!
Ou:
PHP , 72 octets
Essayez-le en ligne!
Entrée depuis la ligne de commande, sortie vers
STDOUT
.la source
JavaScript (V8) , 72 octets
Essayez-le en ligne!
En fait, l’affectation de variable permet d’économiser 0 octet, mais j’ai pensé que je la garderais juste pour que cela soit légèrement unique.
la source
ZX Spectrum Basic, 87 octets
Juste pour être complet, une mise en œuvre simple:
En utilisant le
IF
mot clé (1 octet), la golfe par 3 octets, mais rompt la condition de "même capitalisation":la source
Rouille , 75 octets
Essayez-le en ligne!
En utilisant cette astuce , qui vous permettent de sauter l'index est mise en forme une fois par article au format.
Nous utilisons aussi
print!()
, parce que c'est un octet plus court que de construireformat!()
et de renvoyer une chaîne .la source
05AB1E ,
37353130 octets-5 octets grâce à @Grimy .
Prend une liste de deux éléments: en
wood
tant que première valeur et enchuck
tant que deuxième.Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voir cette astuce de la mine de 05AB1E (section Comment utiliser le dictionnaire? ) Pour comprendre pourquoi
“Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“
est"How much1 would a ÿ0 if a ÿ could01?"
.la source
$ù
même principe pour enregistrer l'octet supplémentaire, merci.Applesoft BASIC,
7776 octetsCe qui précède ne ressemble peut-être pas à la norme BASIC, mais Applesoft autorise quelques raccourcis lors de l'utilisation de l'
PRINT
instruction:?
à la place dePRINT
lors de la saisie de la déclaration;
ou+
) peuvent être omisLe numéro de ligne est obligatoire ou la
INPUT
déclaration provoquera un?ILLEGAL DIRECT ERROR
la source
33 , 78 octets
Essayez-le en ligne!
Prend l'entrée en tant qu'argument de ligne de commande.
Bonus: 91 octets
Essayez-le en ligne!
Donne une sortie qui se ressemble quand on donne des entrées
1bztp
et2bztp
la source
Kotlin , 59 octets
Essayez-le en ligne!
la source
PowerShell , 65 octets
Essayez-le en ligne!
La seule chose à noter est que vous devez échapper au point d'interrogation car il peut s'agir de parties valides d'un identifiant PowerShell.
la source
VBA, 107 octets
Devrait aussi fonctionner en VBScript, j’ai utilisé deux raccourcis: "ould" se répète et "chuck" n’apparaît jamais sans espace supplémentaire.
la source
a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?
. Prend les entrées de[A1]
et[B1]
. Nous avons des astuces pour jouer au golf dans VBA que vous envisagez d’examiner.[A]
et[B]
comme entrée la ramener à 73. Je ne comprends pas très bien comment se déroule la vôtre, n'hésitez pas à ajouter votre propre réponse.C # ,
165148133 octetsMerci à Andrew Baumher de m'avoir parlé de chaînes interpolées !!
EDIT: La classe complète est maintenant ajoutée
EDIT: Merci à Kenneth K. de m'avoir donné quelques astuces pour le raccourcir
EDIT: merci encore à Andrew de m'avoir dit que l'utilisation de chaîne interpolée est en réalité plus longue dans ce scénario.
la source
a=>System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?")
void M(string[]a){System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?");}
System.Func<string>M=a=>System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?");
System.Action<string>M=a=>System.Console.WriteLine($"How much {a[0]} would a {a[0]}{a[1]} {a[1]} if a {a[0]}{a[1]} could {a[1]} {a[0]}?");
Haskell , 76 octets
Essayez-le en ligne!
D'abord, j'espère n'avoir enfreint aucune règle.
la source
Gelée , 39 octets
Un programme complet acceptant une liste de deux chaînes.
Essayez-le en ligne!
... Ou (également un programme complet acceptant une liste de deux chaînes)
Essayez-le en ligne!
la source
Python 3 , 80 octets
Essayez-le en ligne!
à Rome, utilisez le format str.
Edité en utilisant le truc du calmar.
la source
lambda n:
avant, et peut laisser tomber leprint()
.How much ...
au lieu dehow much ...
.'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format
.C # (compilateur interactif Visual C #) ,
66 à65 octetsEssayez-le en ligne!
comme tout le monde, sauf C #. -1 octet en utilisant la stratégie de curry a => b => c au lieu de (a, b) => c
la source
Func<string,string,string>
àFunc<string,Func<string,string>>
et changer(x,y)
enx=>y=>
R , 95 octets
Essayez-le en ligne!
la source
a
etb
, ce qui est interdit selon nos règles d'entrée / sortie par défautstringr
vous en épargne quelques-uns.APL (Dyalog Unicode) ,
5659 octetsEssayez-le en ligne!
Assez simple dfn. Enregistre un octet en coupant
∊
si nous sommes autorisés à renvoyer un tableau de chaînes au lieu d'une seule chaîne.3 octets ajoutés car j'avais oublié d'ajouter le point d'interrogation.
la source
Wolfram Language (Mathematica) , 68 octets
Essayez-le en ligne!
la source
Gelée ,
41 à37 octetsEssayez-le en ligne!
Un programme complet prenant une paire de chaînes comme argument et imprimant la chaîne traitée. Un lien monadique pourrait être formé en ajoutant un
F
à la fin (merci à @JonathanAllan pour l'avoir signalé).Je suis maintenant passé à l'utilisation de "b" et "e" comme espaces réservés, inspirés par la réponse SOGL de @ dzaima, alors assurez-vous de passer également à celle-ci! Cela signifie que le premier mot ne peut pas inclure la lettre e.
la source
Japt
-S
,4439 octetsL'essayer
la source
Forth (gforth) , 116 octets
Essayez-le en ligne!
Explication du code
la source
Lua , 82 octets
Essayez-le en ligne!
Programme complet, prenez les arguments comme arguments.
Rien de spécial ici. J'espère qu'il existe une version plus courte, mais aucun moyen évident de le réduire à première vue.
la source
Bash , 58 octets
Prend les entrées en tant qu'arguments de ligne de commande. Essayez-le en ligne!
la source