Wie viel Code würde ein Codegolf spielen, wenn ein Codegolf Code spielen könnte?


55

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 woodwürde ein woodSpannfutter einspannen, wenn ein woodSpannfutter einspannen könnte wood?

und das zweite Wort viermal

  • Wie viel Holz würde ein Holz, chuck chuckwenn ein Holz Holz chuckkönnte chuck?

Der Rest der Ausgabe ist für alle Eingaben gleich.

  • How muchHolz would aWaldmurmeltier chuck if aWaldmurmeltier couldchuck Holz?

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 , 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 ....)


2
Dürfen wir annehmen, dass die zwei Wörter zwei verschiedene Wörter sein werden?
Jonathan Allan

4
... Ich denke, "", ""bedeutet nein: p
Jonathan Allan

1
@Chronocidal Ich kann es nicht ertragen, Sie enttäuscht zu sehen ....
Greg Martin

6
Zwei. Es würde zwei Code Golf.
user2357112

1
Oh, ich hatte gehofft, dass es sich um ein kurzes Programm handelt, das einige einfache Golftransformationen für anderen Code ausführen kann.
aschepler

Antworten:


40

Python 3 , 70 67 Bytes

"How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format

Probieren 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:

lambda a,b:f"How much {a} would a {a+b} {b} if a {a+b} could {b} {a}?"

2
Vielleicht irrelevant, aber die automatische
Formatzeichenfolge

3
@ M.Herzkamp Also?
Ruohola

16
@ruohola Ich denke, M.Herzkamp versucht zu sagen, dass der Titel dieser Antwort "Python 3.6" und nicht "Python 3" sein sollte.
Mr Lister

8
Noch kürzer und Python 2 kompatibel (67 Byte): "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.
Remco Haszing

1
Ich bin kein Python-Experte, aber da 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 :)
Greg Martin

25

T-SQL, 82 Bytes

SELECT'How much '+w+' would a '+w+c+' '+c+' if a '+w+c+' could '+c+' '+w+'?'FROM t

Die Eingabe wird aus bereits bestehenden Tabelle entnommen mit Spalten und , je unsere IO Regeln .twc

Ein Byte länger, aber aus irgendeinem Grund etwas angenehmer:

SELECT REPLACE(REPLACE('How much 1 would a 12 2 if a 12 could 2 1?',1,w),2,c)FROM t

Diese Version arbeitet mit einer Teilmenge von Eingaben, bei denen die Ziffer nicht 2im ersten Wort .w

Da ich in SQL bin, kann ich alle Beispiele vorab in die Tabelle laden und sie alle gleichzeitig ausführen:

Bildbeschreibung hier eingeben


2
+1000000 virtuelle Züge für Megatrain
Greg Martin

5
Ich
gehe

Dies kann in Oracle in 67 Bytes erfolgen, wie von SQL * Plus aufgerufen (also keine Tabelle):select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Ben

16

Bash , 50 Bytes

echo How much $2 {would,$1\ if}\ a\ $2$1 could $@?

Probieren Sie es online!

-5 Bytes wegen Hilfe von Kommentaren unten.




1
Sie haben einen unnötigen Backslash hinzugefügt, als Sie Nahuels Golf angepasst haben. Hier ist 53. (Obwohl es eigentlich 50 sein sollte, hindert Sie nichts daran, das erste Wort als $ 2 und das zweite Wort als $ 1 zu nehmen.)
Grimmy,

2
@Grimy: Ich sehe den Kommentar zur Herausforderung vom Originalposter, der das Umkehren der Parameter ermöglicht. Ich aktualisiere die Antwort auf die hervorragende Antwort von 50 Bytes. Vielen Dank!
21.

1
@roblogic: Die umgekehrten Schrägstriche zitieren die Leerzeichen, um Worttrennungen in den Leerzeichen zu vermeiden. Die geschweiften Klammern werden zweimal erweitert, um zwei Wörter zu bilden, einmal mit jeder Zeichenfolge in den Klammern und den Zeichen, die den Klammern folgen (aber Teil des Wortes). werden am Ende jeder Zeichenfolge hinzugefügt. Hinzufügen von eckigen Klammern, um die Wortteilung zu veranschaulichen: "[a {bc, de} f]" wird zu zwei Wörtern: "[abcf] [adef]". So „[{würde, $ 1 \ if} \ a \ $ 2 $ 1]“ wird „[würde \ a \ $ 2 $ 1] [1 \ $ , wenn \ A \ $ 2 $ 1]“
spuck

15

Stax , 33 31 30 29 Bytes

-1 dank rekursiv !

¢èO∩sP↑å♥|1╧ì}ò♂xb■δå«█Γ╨╦►Q²

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:

X'?+;`IM'`x;+Y`~^$`,y`75\`x`Q)("`LJ
X                                      Set register X to the first word
                                       "wood"
 '?+                                   Append a question mark, popping from the input stack
                                       "wood?"
    ;                                  Peek from input stack and push to main stack
                                       "chuck" "wood?"
     `IM'`                             Literal "could"
                                       "could" "chuck" "wood?"
          x;+Y                         Peek register x. Peek input. Concatenate. Set register Y.
                                       "woodchuck" "could" "chuck" "wood?"
              et cetera, ad nauseam
                                  LJ   Listify the stack and join with spaces
                                       Implicit print

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.

27 26 Bytes mit Eingabebeschränkungen

å▓Zf╢7)╪♪²p╞8ó╪l▼]<¡REïSèΣ

Fü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.


"Sie werden feststellen, dass ich für einige Testfälle beide Eingaben in dieselbe Zeile gestellt habe und dass sie in umgekehrter Reihenfolge sind. Dies ist erforderlich, um leere Zeichenfolgen oder Zeichenfolgen mit Leerzeichen als Eingabe zu verwenden." Wenn Sie kein Eingabetrennzeichen verwenden, ist die Eingabe ungestört , leere Zeichenfolgen und alles. Es ist nur etwas umständlich, mehrere Testfälle anzuzeigen.
rekursiver

1
Darüber hinaus scheint es, dass die führende ,31-Byte-Lösung entfernt werden kann. Folgendes wird +implizit vom Eingabestapel abgerufen, sodass das Verhalten identisch ist.
rekursiver

13

JavaScript, 70 Bytes

Langweilig!

a=>b=>`How much ${a} would a ${a+b} ${b} if a ${a+b} could ${b} ${a}?`

Probieren Sie es online!

Etwas weniger langweilig!

a=>"How much 0 would a 01 1 if a 01 could 1 0?".replace(/\d/g,x=>a[x])

Probieren Sie es online!


Dürfen Sie eine Curry-Funktion wie im ersten Beispiel ausgeben?
Federkrone

@Feathercrown, ich bin nicht die Ausgabe einer Funktion, ich bin Aufruf beide (zB 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.
Shaggy

Mit Ausgabe meine ich, dass der Code eine Funktion zurückgibt, wenn er ausgewertet wird; In dem angegebenen Code ist kein Aufruf vorhanden, der für Bytes zählt. Ich habe nur nachgesehen, ob das Currying in Ordnung ist, da ich immer nur nicht-vertraute Funktionen gesehen habe, die zurückgegeben wurden.
Federkrone

6

SOGL , 32 30 Bytes

^.](9V;⅜‛°@Ε¬tπs%.½Ω‘⁽ b,ŗ y,ŗ

Probieren 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), und bwird dann durch die erste und ydie zweite Eingabe ersetzt .


+2 Internetpunkte für eine der zufälligsten Einschränkungen, an die ich mich erinnern kann (in Ihrer kürzeren Lösung)
Greg Martin

@ GregMartin Nicht so zufällig. Ich spreche kein SOGL, habe aber beim Sequenzieren von zwei Ersetzungen y -> woodund die gleiche Einschränkung für 'n' erhalten n -> chuck. Ein Zehntel eines Dignity Points besagt, dass dies auch hier der Fall ist.
Khuldraeseth na'Barya

Ich denke, der Hauptgedanke dieser Frage ist es, Lösungen zuzulassen ... nur nebenbei möchte ich meinen, dass es etwas skizzenhaft ist, keinen tatsächlichen Buchstaben in einer Eingabe zuzulassen. Wie auch immer: Warum ist bin der ersten Eingabe nicht erlaubt und in der zweiten Eingabe noch eok?
Greg Martin

@ GregMartin whoops, ich wollte damit sagen, dass die 1. Eingabe nicht enthalten kann e, da sie sonst durch die 2. Eingabe in der 2. Ersetzung ersetzt würde
dzaima

Ist es nicht möglich, dass das Ersatzziel kein Alpha ist, um zu vermeiden, dass ein Alpha aus der Eingabe verbannt werden muss?
WGroleau

5

R , 90 77 76 Byte

-13 danke an Sumner18
-1 danke an Giuseppe

function(x,y,`[`=gsub)2[y,1[x,"How much 1 would a 12 2 if a 12 could 2 1?"]]

Probieren Sie es online!


2
Kann gsubstattdessen ein Double für -13 Bytes ausführen. tio.run/…
Sumner18

@ Sumner18 Danke. Ja, gsubmacht definitiv mehr Sinn.
Robert S.


4
Sie sollten angeben, dass Sie davon ausgehen, dass die Eingabe xdas Zeichen nicht enthält 2. es schlägt in diesem Fall fehl ( TIO ).
Robin Ryder



4

JavaScript (V8) , 72 Byte

(a,b)=>['How much',a,'would a',c=a+b,b,'if a',c,'could',b,a+'?'].join` `

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 .


Eine große Zeichenfolge ist jedoch 1 Zeichen kürzer: Probieren Sie es online aus! .
Handarbeit

@manatwork Ich habe es versucht, habe aber versehentlich ein zusätzliches Leerzeichen eingefügt: P Danke!
IronFlare

4

ZX Spectrum Basic, 87 Byte

Nur der Vollständigkeit halber, einfache Implementierung:

INPUT a$,b$: PRINT "How much ";a$;" would a ";a$;b$;"  ";b$;" if a ";a$;b$;" could ";b$;" ";a$;"?"

Wenn Sie das IFSchlüsselwort (1 Byte) verwenden, wird es um 3 Byte verkleinert, wobei jedoch die Bedingung "Gleiche Großschreibung" verletzt wird:

INPUT a$,b$: PRINT "How much ";a$;" would a ";a$;b$;"  ";b$;" IF a ";a$;b$;" could ";b$;" ";a$;"?"

Es ist auch schön, leicht betrügerische Versionen zu zeigen :)
Greg Martin

2
Oh, Speccy! Um wieder jung zu sein ...
chx

4

Rust , 75 Bytes

|a,b|print!("How much {} would a {0}{} {1} if a {0}{1} could {1} {0}?",a,b)

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 mit format!()und dessen Rückgabe.


4

05AB1E , 37 35 31 30 Bytes

“Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“T$ú‡

-5 Bytes dank @Grimy .

Nimmt eine Liste von zwei Elementen: woodals ersten Wert und chuckals zweiten.

Probieren Sie es online aus oder überprüfen Sie alle Testfälle .

Erläuterung:

Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“
      # Push dictionary string "How much1 would a ÿ0 if a ÿ could01?",
      # where the `ÿ` are automatically filled with the (implicit) input-list,
      # implicitly joined together to a single string
      #  i.e. ["wood","chuck"] → "How much1 would a woodchuck0 if a woodchuck could01?"
T     # Push 10
 $    # Push the input-list and 1
  ù   # Pad the strings in the input-list with this 1 amount of leading spaces
      #  ["wood","chuck"] → [" wood"," chuck"]
     # Transliterate the 10 ([1,0]) to these strings in the sentence
      #  → "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
      # (after which the result is output implicitly)

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?".




1
@ Grimy Sehr schön! Ich mag beide wirklich. Geniale Idee , so etwas zu verwenden, um das zusätzliche Byte zu speichern, danke.
Kevin Cruijssen


4

Applesoft BASIC, 77 76 Bytes

1INPUTA$,B$:?"How much "A$" would a "A$B$" "B$" if a "A$B$" could "B$" "A$"?

Das obige sieht möglicherweise nicht wie richtiges BASIC aus, aber Applesoft lässt einige Verknüpfungen zu, wenn die PRINTAnweisung verwendet wird:

  • Verwendung von ?anstelle von PRINTbei der Eingabe der Anweisung
  • Verknüpfungszeichen (entweder ;oder +) können weggelassen werden
  • Wenn die Anweisung in einer Anführungszeichenfolge endet, kann das letzte Anführungszeichen weggelassen werden. Danke, Mark !

Die Zeilennummer ist erforderlich, oder die INPUTAnweisung führt zu einem?ILLEGAL DIRECT ERROR


1
Können Sie das nachstehende Anführungszeichen weglassen? Applesoft Basic ist ein Microsoft Basic-Derivat. In vielen Versionen von Microsoft Basic können Sie das schließende Anführungszeichen für eine Zeichenfolge weglassen, wenn die Zeile damit endet.
Mark

@Mark, Danke für den Tipp!
Lee

4

33 , 78 Bytes

"How much "p1btpt" would a "ptpz2btp" "ptbtp" if a "ptpbtp" could "ptbtp" "ptp

Probieren Sie es online!

Übernimmt die Eingabe als Befehlszeilenargumente.

Bonus: 91 Bytes

"How much "p1bztp" would a "p1bztp2bztp" "p2bztp" if a "p1bztp2bztp" could "p2bztp" "p1bztp

Probieren Sie es online!

Gibt eine Ausgabe, die sich selbst ähnelt, wenn die Eingaben 1bztpund gegeben werden2bztp


Sagte dies laut, jetzt muss ich den ganzen Spieß von meinem Monitor reinigen.
BradC


3

PowerShell , 65 Byte

param($a,$b)"How much $a would a $a$b $b if a $a$b could $b $a`?"

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


3

VBA, 107 Bytes

Function q(a,b)
b=b&" "
c="ould "
q="How much "&a&" w"&c&"a "&a&b&b&"if a "&a&b&"c"&c&b&a&"?"
End Function

Sollte es auch als VBScript laufen, habe ich zwei Verknüpfungen verwendet: "ould" wird wiederholt und "chuck" wird nie ohne zusätzlichen Leerraum angezeigt.


Sie können dies auf 75 Bytes reduzieren, indem Sie in die Funktion "Sofortiges Fenster" als konvertieren 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.
Taylor Scott

Dann könnten Sie den benannten Eingabebereich verwenden [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.
User3819867

1
Das widerspricht leider der Definition von STDIN und STDOUT für Excel VBA - Sie können einen beliebigen unbenannten Bereich auf dem aktiven Blatt verwenden, dürfen jedoch keine benannten Bereiche gemäß einer früheren Entscheidung der Community verwenden
Taylor Scott

3

C # , 165 148 133 Bytes

class P{static void Main(string[]a){System.Console.Write("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?\n",a[0],a[1]);}}

Vielen 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.


Wenn Sie moderne C # 's' $ '( interpolierte Zeichenfolgen ) verwenden, können Sie ein paar Bytes sparen, indem Sie {0} durch {a [0]} ersetzen, oder besser zwei Variablen anstelle eines Arrays, sodass Sie einfach a und b verwenden können.
Um

Wow wusste nichts davon! Vielen Dank für die Info
Canttalkjustcode

2
@canttalkjustcode Im Allgemeinen werden Funktionen akzeptiert. Für C # umfasst dies Lambdas: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]}?")
JAD

Dies ist wahr, aber nur in C # Interactive können Sie Lambda-Ausdrücke wie diesen verwenden. In vollständigem C # benötigen Sie eine vollständige Lamda-Anweisung. Eine einfache
Ungültigkeitserklärung

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]}?");
Canttalkjustcode

3

Haskell , 76 Bytes

a?b=a++" "++b
a!b="How much"?a?"would a"?a++b?b?"if a"?a++b?"could"?b?a++"?"

Probieren Sie es online!

Versuchen Sie es zuerst, also hoffe ich, dass ich keine Regeln gebrochen habe.


2

Jelly , 39 Bytes

ŒPKŒP“µkþ¿µ‘ị“þ>Æƈ)taJṖ;ạʂ\4S%dñl»Ỵ¤ż”?

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)

⁽4ṀDBịs€2ṭ€€⁶“þ>Æƈ)taJṖ;ạʂ\4S%dñl»Ỵ¤ż”?

Probieren Sie es online!


2

Python 3 , 80 Bytes

lambda n:'How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format(*n)

Probieren Sie es online!

Verwenden Sie in Rom das Format str.

Mit Squid's Trick bearbeitet .


3
Wäre das nicht ungültig? Es ist ein Ausschnitt - keine Funktion oder ein Programm, oder?
Setzen Sie Monica

Ja; braucht einen lambda n:davor und kann den fallen lassen print().
Wizzwizz4

Sie sollten Ihren Code ändern, um How much ...statt zu drucken how much ....
Ruohola

3
Es sollte ausreichen, nur eine anonyme Funktion als zu definieren 'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format.
20.

@xnor Noch ziemlich neu, wie würde der TIO dann dafür aussehen? Ich würde denken, dass es ohne eine Möglichkeit, ein Argument einzureichen, lauffähig wäre.
Tryer

2

C # (Visual C # Interactive Compiler) , 66 bis 65 Byte

x=>y=>$"How much {x} would a {x+y} {y} if a {x+y} could {y} {x}?"

Probieren Sie es online!

Wie alle anderen, außer C #. -1 Byte unter Verwendung von currying strat a => b => c anstelle von (a, b) => c


Ändern Sie die Funktionssignatur von Func<string,string,string>bis Func<string,Func<string,string>>und wechseln Sie (x,y)zux=>y=>
Ausführungsform der Ignoranz

Scheint wie eine billige Taktik, aber eine Metadiskussion besagt, dass es faires Spiel ist. Vielen Dank.
Andrew Baumher

2

R , 95 Bytes

function(a,b)cat("How much ",a," would a ",a,b," ",b," if a ",a,b," could ",b," ",a,"?",sep='')

Probieren Sie es online!


2
Willkommen auf der Seite! Ihr TIO-Link scheint auf den falschen Code zu verlinken? Darüber hinaus haben Sie, soweit ich das ab
beurteilen

Danke @cairdcoinheringaahing für den Kommentar. Ich habe es in Funktionsform umgeschrieben, hoffe es entspricht jetzt den Regeln.
Minhsphuc12


1

APL (Dyalog Unicode) , 56 59 Bytes

{∊'How much '' would a '⍺⍵' '' if a '⍺⍵' could '' ''?'}

Probieren 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.


Haben Sie die griechischen Buchstaben als ein Byte gezählt?
Tomáš Zato

@ TomášZato ja. Dyalog APLs Glyphen können mit Adáms Single Byte Character Sheet, das hier Standard für APL-Antworten ist, in einem einzelnen Byte dargestellt werden .
J. Sallé,


1

Jelly , 41 37 Bytes

⁾be,y“Ø[gœıJ9°m.OṚuHlh3Ƥ⁾$ɲ0øḲʂṇHẎṆȥ»

Probieren 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 Fam 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.


@ JonathanAllan ganz richtig! Vielen Dank.
Nick Kennedy


1

Viertens (gviertens) , 116 Bytes

: x 2over type ; : y 2dup type ; : f ." How much "x ."  would a "x y ."  "y ."  if a "x y ."  could "y ."  "x ." ?";

Probieren Sie es online!

Code Erklärung

\ x = output the first word
: x               \ start a new word definition
  2over type      \ copy the "first" word to the top of the stack and print it
;                 \ end word definition

\ y = output the second word
: y               \ start a new word definition
  2dup type       \ copy the "second" word to the top of the stack and print it
;                 \ end word definition

: f               \ start a new word definition
  ." How much "x  \ print "How much " followed by the first word   
  ."  would a "x  \ print " would a " followed by the first word
  y ."  if a "x   \ print the second word followed by " if a " and then the first word
  y ."  could "y  \ print the second word, then " could " then the second word again
  ."  "x ." ?"    \ print a space followed by the first word, followed by "?"
;                 \ end word definition

1

Lua , 82 Bytes

a,b=...print((('How much x would a xy y if a xy could y x?'):gsub('.',{x=a,y=b})))

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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.