Schreiben Sie eine Funktion oder ein Programm, das zwei Wörter als Eingabe- und Ausgabevarianten des beliebten englischen Zungenbrechers "Wie viel Holz würde ein Waldmurmeltier einspannen, wenn ein Waldmurmeltier Holz einspannen könnte?" Verwendet.
Die Ausgabe verwendet das erste Wort viermal
- Wie viel
wood
würde einwood
Spannfutter einspannen, wenn einwood
Spannfutter einspannen könntewood
?
und das zweite Wort viermal
- Wie viel Holz würde ein Holz,
chuck
chuck
wenn ein Holz Holzchuck
könntechuck
?
Der Rest der Ausgabe ist für alle Eingaben gleich.
How much
Holzwould a
Waldmurmeltierchuck
if a
Waldmurmeltiercould
chuckHolz
?
Die Eingabe und Ausgabe kann in jedem Format erfolgen, das Ihre Sprache vernünftigerweise als Umgang mit Textzeichenfolgen erkennt. Die Ausgabe muss genau das angegebene Format haben, einschließlich Groß- und Kleinschreibung, Leerzeichen und fehlendem Fragezeichen. Ein optionaler abschließender Zeilenumbruch ist zulässig.
Idealerweise verarbeitet Ihr Code Eingaben, die druckbare ASCII-Zeichen enthalten. Es ist jedoch zulässig, die Eingabe auf angemessene Teilmengen von druckbarem ASCII zu beschränken. Geben Sie dies einfach in Ihrer Antwort an. Der Umgang mit größeren Zeichensätzen ist natürlich in Ordnung.
Beispiel für Eingabe-Ausgabe-Paare:
"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?"
Das ist Code-Golf , also gewinnen die wenigsten Bytes. Antworten sind in allen Sprachen willkommen, auch wenn dies in einer anderen Sprache in weniger Bytes möglich ist.
(Inspiriert von diesem Mem , das ein Eingangspaar besser verwendet als dieses starre Muster ....)
"", ""
bedeutet nein: pAntworten:
Python 3 ,
7067 BytesProbieren Sie es online!
Ich meine, wenn der Schuh passt ..
Dank an manatwork für den Tippfehler
Vielen Dank an Remco Haszing für die hervorragende -3-Byte-Idee
Ich gehe davon aus, dass dies immer noch eine gültige Vorlage ist (weil es zu cool ist, es nicht zu versuchen). Wenn OP klären könnte, ob dies akzeptabel ist (weil ich an sich keine Funktion geschrieben habe ), wäre dies sehr zu begrüßen.
Update: Segen erhalten, alles ist gut :)
Vorherige Version:
quelle
"How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format
. Dies gibt eine Funktion zurück, die an die unformatierte Zeichenfolge gebunden ist.print("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))
die gewünschte Ausgabe generiert wird, sehe ich keinen Grund, dies nicht zu akzeptieren :)T-SQL, 82 Bytes
Die Eingabe wird aus bereits bestehenden Tabelle entnommen mit Spalten und , je unsere IO Regeln .t w c
Ein Byte länger, aber aus irgendeinem Grund etwas angenehmer:
Diese Version arbeitet mit einer Teilmenge von Eingaben, bei denen die Ziffer nichtw
2
im ersten Wort .Da ich in SQL bin, kann ich alle Beispiele vorab in die Tabelle laden und sie alle gleichzeitig ausführen:
quelle
select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Bash , 50 Bytes
Probieren Sie es online!
-5 Bytes wegen Hilfe von Kommentaren unten.
quelle
Stax ,
33313029 Bytes-1 dank rekursiv !
Führen Sie es aus und debuggen Sie es unter staxlang.xyz!
Schieben Sie jede Komponente in umgekehrter Reihenfolge auf den Stapel, und verbinden Sie alle mit Leerzeichen.
Entpackt (35 Bytes) und Erklärung:
Alles zwischen `` ist ein komprimiertes String-Literal. Das Komma ist wichtig. Das letzte Mal, wenn ich vom Eingabestapel lese, muss ich nicht gucken, sondern platzen, um ein zusätzliches "Chuck" am Ende meiner Ausgabe zu vermeiden.
Sie werden feststellen, dass ich für einige Testfälle beide Eingänge in die gleiche Zeile gesetzt habe und dass sie in umgekehrter Reihenfolge sind. Dies ist erforderlich, um leere Zeichenfolgen oder Leerzeichenfolgen als Eingabe zu verwenden.
2726 Bytes mit EingabebeschränkungenFühren Sie es aus und debuggen Sie es unter staxlang.xyz!
Genau wie bei der SOGL von @ dzaima schlägt dies fehl, wenn die erste Eingabe den Kleinbuchstaben 'y' enthält. Drückt man die Zeichenfolge "Wie viel b würde a von y sein, wenn a von yb könnte?", So werden zwei Ersetzungen vorgenommen.
quelle
,
31-Byte-Lösung entfernt werden kann. Folgendes wird+
implizit vom Eingabestapel abgerufen, sodass das Verhalten identisch ist.JavaScript, 70 Bytes
Langweilig!
Probieren Sie es online!
Etwas weniger langweilig!
Probieren Sie es online!
quelle
f(a)(b)
) , wie Sie in der TIO sehen können. Aber ja, unsere Einverständnisse, um Curry-Funktionen zuzulassen, und ich denke, wir sind nahe an einem Konsens darüber, dass eine Funktion tatsächlich zurückgegeben werden kann.SOGL ,
3230 BytesProbieren Sie es hier aus!
Die erste Eingabe darf den Buchstaben nicht enthalten
y
, da anscheinend eine angemessene Teilmenge von ASCII (und Unicode) übrig bleibt.½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘
ist eine komprimierte Zeichenfolge aus"how much b would a by y if a by could y b?"
(Zeichen, die ausgewählt wurden, damit die erforderlichen Wörter in den Top 512-Wörtern des Wörterbuchs enthalten sind, die besser komprimiert werden), undb
wird dann durch die erste undy
die zweite Eingabe ersetzt .quelle
y -> wood
und die gleiche Einschränkung für 'n' erhaltenn -> chuck
. Ein Zehntel eines Dignity Points besagt, dass dies auch hier der Fall ist.b
in der ersten Eingabe nicht erlaubt und in der zweiten Eingabe noche
ok?e
, da sie sonst durch die 2. Eingabe in der 2. Ersetzung ersetzt würdeR ,
907776 Byte-13 danke an Sumner18
-1 danke an Giuseppe
Probieren Sie es online!
quelle
gsub
stattdessen ein Double für -13 Bytes ausführen. tio.run/…gsub
macht definitiv mehr Sinn.pryr
, können Sie es auf 73 reduzieren .x
das Zeichen nicht enthält2
. es schlägt in diesem Fall fehl ( TIO ).PHP , 72 Bytes
Probieren Sie es online!
Oder:
PHP , 72 Bytes
Probieren Sie es online!
Eingabe von der Kommandozeile, Ausgabe an
STDOUT
.quelle
JavaScript (V8) , 72 Byte
Probieren Sie es online!
Die variable Zuweisung spart tatsächlich 0 Bytes, aber ich dachte, ich würde es behalten, nur um dies etwas einzigartig zu machen .
quelle
ZX Spectrum Basic, 87 Byte
Nur der Vollständigkeit halber, einfache Implementierung:
Wenn Sie das
IF
Schlüsselwort (1 Byte) verwenden, wird es um 3 Byte verkleinert, wobei jedoch die Bedingung "Gleiche Großschreibung" verletzt wird:quelle
Rust , 75 Bytes
Probieren Sie es online!
Mit diesem Trick können Sie den Formatierungsindex einmal pro zu formatierendem Element überspringen.
Wird auch verwendet
print!()
, da es ein Byte kürzer ist als das Erstellen eines Strings mitformat!()
und dessen Rückgabe.quelle
05AB1E ,
37353130 Bytes-5 Bytes dank @Grimy .
Nimmt eine Liste von zwei Elementen:
wood
als ersten Wert undchuck
als zweiten.Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Sehen Sie diese 05AB1E Spitze von mir (Abschnitt Wie das Wörterbuch benutzen? ) Zu verstehen , warum
“Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“
ist"How much1 would a ÿ0 if a ÿ could01?"
.quelle
$ù
, so etwas zu verwenden, um das zusätzliche Byte zu speichern, danke.Applesoft BASIC,
7776 BytesDas obige sieht möglicherweise nicht wie richtiges BASIC aus, aber Applesoft lässt einige Verknüpfungen zu, wenn die
PRINT
Anweisung verwendet wird:?
anstelle vonPRINT
bei der Eingabe der Anweisung;
oder+
) können weggelassen werdenDie Zeilennummer ist erforderlich, oder die
INPUT
Anweisung führt zu einem?ILLEGAL DIRECT ERROR
quelle
33 , 78 Bytes
Probieren Sie es online!
Übernimmt die Eingabe als Befehlszeilenargumente.
Bonus: 91 Bytes
Probieren Sie es online!
Gibt eine Ausgabe, die sich selbst ähnelt, wenn die Eingaben
1bztp
und gegeben werden2bztp
quelle
Kotlin , 59 Bytes
Probieren Sie es online!
quelle
PowerShell , 65 Byte
Probieren Sie es online!
Das Einzige, was zu beachten ist, ist, dass Sie das Fragezeichen umgehen müssen, da dies gültige Teile eines PowerShell-Bezeichners sein können
quelle
VBA, 107 Bytes
Sollte es auch als VBScript laufen, habe ich zwei Verknüpfungen verwendet: "ould" wird wiederholt und "chuck" wird nie ohne zusätzlichen Leerraum angezeigt.
quelle
a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?
. Nimmt Eingaben von[A1]
und auf[B1]
. Wir haben Tipps zum Golfen in VBA , die Sie sich ansehen sollten.[A]
und[B]
ihn auf 73 herabsetzen. Ich verstehe jedoch nicht ganz, wie der Ihre abläuft. Sie können gerne Ihre eigene Antwort hinzufügen.C # ,
165148133 BytesVielen Dank an Andrew Baumher , der mir von interpolierten Strings erzählt hat !!
EDIT: Volle Klasse jetzt hinzugefügt
EDIT: Danke an Kenneth K. , der mir ein paar Tipps zum Verkürzen gegeben hat.
EDIT: Danke an Andrew, der mir gesagt hat, dass die Verwendung von interpolierten Strings in diesem Szenario tatsächlich länger ist.
quelle
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 Bytes
Probieren Sie es online!
Versuchen Sie es zuerst, also hoffe ich, dass ich keine Regeln gebrochen habe.
quelle
Jelly , 39 Bytes
Ein vollständiges Programm, das eine Liste mit zwei Zeichenfolgen akzeptiert.
Probieren Sie es online!
... oder (auch ein vollständiges Programm, das eine Liste mit zwei Zeichenfolgen akzeptiert)
Probieren Sie es online!
quelle
Python 3 , 80 Bytes
Probieren Sie es online!
Verwenden Sie in Rom das Format str.
Mit Squid's Trick bearbeitet .
quelle
lambda n:
davor und kann den fallen lassenprint()
.How much ...
statt zu druckenhow much ...
.'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format
.C # (Visual C # Interactive Compiler) ,
66 bis65 ByteProbieren Sie es online!
Wie alle anderen, außer C #. -1 Byte unter Verwendung von currying strat a => b => c anstelle von (a, b) => c
quelle
Func<string,string,string>
bisFunc<string,Func<string,string>>
und wechseln Sie(x,y)
zux=>y=>
R , 95 Bytes
Probieren Sie es online!
quelle
a
b
stringr
sparen Sie ein paar.APL (Dyalog Unicode) ,
5659 BytesProbieren Sie es online!
Ziemlich unkompliziert dfn. Speichert ein Byte durch Ausschneiden,
∊
wenn wir anstelle eines einzelnen Strings ein Array von Strings zurückgeben dürfen.3 Bytes hinzugefügt, weil ich vergessen hatte, das Fragezeichen hinzuzufügen.
quelle
Wolfram Language (Mathematica) , 68 Byte
Probieren Sie es online!
quelle
Jelly ,
4137 BytesProbieren Sie es online!
Ein vollständiges Programm, das ein Paar von Zeichenfolgen als Argument verwendet und die verarbeitete Zeichenfolge druckt. Ein monadischer Link kann durch Hinzufügen eines
F
am Ende erstellt werden (danke an @JonathanAllan für den Hinweis).Ich habe eingeschaltet nun auf „b“ und „e“ als Platzhalter verwendet, inspiriert von @ dzaima der SOGL Antwort so sicher sein , auch , dass man upvote! Dies bedeutet, dass das erste Wort den Buchstaben e nicht enthalten kann.
quelle
Japt
-S
,4439 BytesVersuch es
quelle
Viertens (gviertens) , 116 Bytes
Probieren Sie es online!
Code Erklärung
quelle
Lua , 82 Bytes
Probieren Sie es online!
Vollständiges Programm, Eingabe als Argumente.
Nichts besonderes hier. Ich hoffe, dass es eine kürzere Version gibt, aber keine offensichtlichen Möglichkeiten, dies auf den ersten Blick zu verkürzen.
quelle
Bash , 58 Bytes
Übernimmt Eingaben als Befehlszeilenargumente. Probieren Sie es online!
quelle