¿Cuánto código un codegolf jugaría golf si un codegolf pudiera jugar golf?

55

Escriba una función o programa que tome dos palabras como variantes de entrada y salida del popular trabalenguas inglés "¿Cuánta madera arrojaría una marmota si una marmota pudiera arrojar madera?".

La salida usará la primera palabra cuatro veces

  • ¿Cuánto woodcostaría un woodmandril si un woodmandril pudiera arrojarse wood?

y la segunda palabra cuatro veces

  • ¿Cuánta madera tendría una madera chuck chucksi una madera chuckpudiera chuckmadera?

con el resto de la salida siendo el mismo para cualquier entrada.

  • How muchmadera would amarmota Chuck if amarmota couldChuck madera?

La entrada y la salida pueden estar en cualquier formato que su idioma reconozca razonablemente que trata con cadenas de texto. El resultado debe estar exactamente en el formato indicado, incluyendo mayúsculas, espacios y falta de ellos, y el signo de interrogación final. Una nueva línea final opcional es aceptable.

Idealmente, su código manejará entradas que contengan caracteres ASCII imprimibles. Sin embargo, está permitido restringir la entrada a subconjuntos razonables de ASCII imprimible; solo indica esto en tu respuesta. Por supuesto, manejar conjuntos de caracteres más grandes está bien.

Ejemplo de pares de entrada-salida:

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

Este es el , por lo que gana menos bytes. Las respuestas son bienvenidas en todos los idiomas, incluso si algún otro idioma puede hacerlo en menos bytes.

(Inspirado por este meme , que usa un par de entrada mejor que este patrón rígido ...)

Greg Martin
fuente
2
¿Podemos suponer que las dos palabras serán dos palabras distintas ?
Jonathan Allan
44
... Supongo que "", ""significa no: p
Jonathan Allan
1
@Chronocidal No puedo soportar verte decepcionado ...
Greg Martin
66
Dos. Golfizaría dos códigos.
user2357112
1
Aw, esperaba que esto se tratara de un programa corto que puede hacer algunas transformaciones simples de golf en otro código.
Aschepler

Respuestas:

40

Python 3 , 70 67 bytes

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

Pruébalo en línea!

Quiero decir, si el zapato te queda ...

Gracias a manatwork por atrapar un error tipográfico

Gracias a Remco Haszing por la excelente idea de -3 bytes

Estoy huyendo de la suposición de que esto todavía sería una presentación válida (porque, hombre, es demasiado genial para no intentarlo). Si OP pudiera aclarar si esto es aceptable (porque no he escrito una función, per se), eso sería apreciado.

Actualización: Bendición recibida, todo es bueno :)


Versión previa:

lambda a,b:f"How much {a} would a {a+b} {b} if a {a+b} could {b} {a}?"
Reinstalar a Mónica
fuente
2
Tal vez sea irrelevante, pero la cadena de formato automático no está disponible en las versiones de Python anteriores a 3.6
M.Herzkamp
3
@ M.Herzkamp Entonces?
Ruohola
16
@ruohola Creo que M.Herzkamp está tratando de decir que el título de esta respuesta debería ser "Python 3.6" en lugar de "Python 3".
Sr. Lister
8
Aún más corto y Python 2 compatible (67 bytes): "How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format. Esto devuelve una función vinculada a la cadena sin formato.
Remco Haszing
1
No soy un experto en Python, pero dado que print("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))genera el resultado deseado, no veo ninguna razón para no aceptarlo :)
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

La entrada se toma de la tabla existente con las columnas y , según nuestras reglas de IO .twc

Un byte más, pero por alguna razón un poco más agradable:

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

Esta versión funciona en un subconjunto de entradas que no incluyen el número 2en la primera palabra .w

Como estoy en SQL, puedo precargar todos los ejemplos en la tabla y ejecutarlos todos a la vez:

ingrese la descripción de la imagen aquí

BradC
fuente
2
+1000000 trenes virtuales para megatrain
Greg Martin
55
Supongo que "w" y "c" significan "madera" y "mandril" respectivamente: P
user253751
Esto se puede hacer en 67 bytes en Oracle como se llama desde SQL * Plus (por lo que no hay tabla):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 $@?

Pruébalo en línea!

-5 bytes debido a la ayuda de los comentarios a continuación.

golpear
fuente
-3 bytes
Grimmy
1
-2 bytes más
Nahuel Fouilleul
1
Agregaste una barra invertida innecesaria al adaptar el golf de Nahuel. Aquí hay 53. (Aunque en realidad debería ser 50, nada le impide tomar la primera palabra como $ 2 y la segunda palabra como $ 1.)
Grimmy
2
@Grimy: veo el comentario sobre el desafío del póster original que permite la inversión de los parámetros. Estoy actualizando la respuesta a la excelente respuesta de 50 bytes. ¡Gracias!
Spuck
1
@roblogic: las barras invertidas indican los espacios para evitar la división de palabras en los espacios, y las llaves se expanden dos veces para formar dos palabras, una con cada cadena dentro de las llaves y los caracteres que siguen a las llaves (pero parte de la palabra) se agregan al final de cada cadena. Agregar llaves cuadradas para ayudar a visualizar la división de palabras: “[a {bc, de} f]” se convierte en dos palabras: “[abcf] [adef]”. Entonces, “[{would, $ 1 \ if} \ a \ $ 2 $ 1]” se convierte en “[would \ a \ $ 2 $ 1] [$ 1 \ if \ a \ $ 2 $ 1]”
descarte el
15

Stax , 33 31 30 29 bytes

-1 gracias a recursivo !

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

¡Ejecútelo y depúrelo en staxlang.xyz!

Empuja cada componente a la pila en orden inverso, luego une todos los espacios.

Desempaquetado (35 bytes) y explicación:

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

Todo entre `` es un literal de cadena comprimido. Esa coma es vital. La última vez que leí de la pila de entrada, debo hacer estallar en lugar de mirar para evitar una "tirada" adicional al final de mi salida.

Notarás que pongo ambas entradas en la misma línea para algunos casos de prueba, y que están en orden inverso. Esto es necesario para tomar cadenas vacías o cadenas de espacios como entrada.

27 26 bytes con restricciones de entrada

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

¡Ejecútelo y depúrelo en staxlang.xyz!

Al igual que SOGL de @ dzaima , esto fallará si la primera entrada contiene la letra minúscula 'y'. Empuja la cadena "¿Cuánto b a a y si a by podría yb?", Luego realiza un par de reemplazos.

Khuldraeseth na'Barya
fuente
"Notarás que pongo ambas entradas en la misma línea durante algunos casos de prueba, y que están en orden inverso. Esto es necesario para tomar cadenas vacías o cadenas de espacios como entrada". Si no utiliza un separador de entrada, la entrada no se verá afectada , las cadenas estarán vacías y todo. Simplemente hace que sea un poco incómodo mostrar múltiples casos de prueba.
recursivo
1
Además, parece ,que se puede eliminar el líder en su solución de 31 bytes. Lo siguiente +aparece implícitamente en la pila de entrada, por lo que el comportamiento es idéntico.
recursivo
13

JavaScript, 70 bytes

¡Aburrido!

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

Pruébalo en línea!

¡Un poco menos aburrido!

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

Pruébalo en línea!

Lanudo
fuente
¿Se le permite generar una función curry como en ese primer ejemplo?
Feathercrown
@Feathercrown, no estoy dar salida a una función, estoy llamando a ambos (por ejemplo, f(a)(b)) como se puede ver en el TIO. Pero sí, nuestros consensos para permitir funciones curry y creo que estamos cerca de un consenso sobre permitir que una función sea realmente devuelta.
Shaggy
Por salida quise decir que el código devuelve una función cuando se evalúa; no hay llamadas en el código dado que cuenta para bytes. Solo estaba revisando para asegurarme de que curry estaba bien, ya que solo he visto regresar funciones no curries.
Feathercrown
6

SOGL , 32 30 bytes

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

Pruébalo aquí!

La primera entrada no puede contener la letra y, que parece dejar un subconjunto razonable de ASCII (y unicode) a la izquierda.

½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘es una cadena comprimida de "how much b would a by y if a by could y b?"(caracteres elegidos para que las palabras requeridas estén todas en las 512 palabras superiores del diccionario que se comprimen mejor), luego bse reemplaza con la primera entrada y ycon la segunda.

dzaima
fuente
+2 puntos de Internet para una de las restricciones más aleatorias que puedo recordar (en su solución más corta)
Greg Martin
@ GregMartin No es tan aleatorio. No hablo SOGL, pero terminé con la misma restricción en 'n' al secuenciar dos reemplazos y -> woody n -> chuck. Una décima parte de un Punto de Dignidad dice que ese es el caso aquí también.
Khuldraeseth na'Barya
Creo que el espíritu principal de esta pregunta es ser abierto acerca de permitir soluciones ... solo como un aparte, podría opinar que no permitir que una letra real en una entrada sea un poco incompleta. De todos modos: ¿por qué bno está permitido en la primera entrada pero eestá bien en la segunda entrada?
Greg Martin
@GregMartin whoops, quise decir que la primera entrada no puede contener e, ya que de lo contrario se reemplazaría con la segunda entrada en el segundo reemplazo
dzaima
¿No es posible que el objetivo de reemplazo sea no alfa para evitar tener que prohibir un alfa de la entrada?
WGroleau
5

R , 90 77 76 bytes

-13 gracias a Sumner18
-1 gracias a Giuseppe

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

Pruébalo en línea!

Robert S.
fuente
2
Puede hacer un doble gsubpara -13 bytes en su lugar. tio.run/…
Sumner18
@ Sumner18 Gracias. Sí, gsubdefinitivamente tiene más sentido.
Robert S.
Si tiene ganas de usar pryr, puede bajarlo a 73 .
Khuldraeseth na'Barya
44
Debe especificar que asume que la entrada xno incluye el carácter 2; falla en este caso ( TIO ).
Robin Ryder
44
76 con alias de gsub
Giuseppe
4

PHP , 72 bytes

[,$a,$b]=$argv;echo"How much $a would a $a$b $b if a $a$b could $b $a?";

Pruébalo en línea!

O:

PHP , 72 bytes

How much <?=![,$a,$b]=$argv,"$a would a $a$b $b if a $a$b could $b $a?";

Pruébalo en línea!

Entrada de línea de comando, salida a STDOUT.

640 KB
fuente
4

JavaScript (V8) , 72 bytes

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

Pruébalo en línea!

La asignación de variables en realidad ahorra 0 bytes, pero pensé que la mantendría solo para hacer esto un poco único.

Llamarada de hierro
fuente
Pero una cadena de plantilla grande tiene 1 carácter más corto: ¡ Pruébelo en línea! .
manatwork
@manatwork Intenté esto pero incluí un espacio extra por error: P ¡Gracias!
IronFlare
4

ZX Spectrum Basic, 87 bytes

Solo para completar, implementación sencilla:

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

Al usar la IFpalabra clave (1 byte) se reduce en 3 bytes, pero se rompe la condición de "misma capitalización":

INPUT a$,b$: PRINT "How much ";a$;" would a ";a$;b$;"  ";b$;" IF a ";a$;b$;" could ";b$;" ";a$;"?"
Radovan Garabík
fuente
También es bueno mostrar versiones ligeramente engañosas :)
Greg Martin
2
¡Oh, Speccy! Ser joven otra vez ...
chx
4

Óxido , 75 bytes

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

Pruébalo en línea!

Usando este truco , que le permite omitir el índice de formato una vez por elemento para formatear.

También se usa print!(), porque es un byte más corto que construir una cadena format!()y devolverla.

ruohola
fuente
4

05AB1E , 37 35 31 30 bytes

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

-5 bytes gracias a @Grimy .

Toma una lista de dos elementos: woodcomo primer valor y chuckcomo segundo.

Pruébelo en línea o verifique todos los casos de prueba .

Explicación:

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)

Ver este consejo 05AB1E mío (sección Cómo usar el diccionario? ) Para entender por qué “Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“es "How much1 would a ÿ0 if a ÿ could01?".

Kevin Cruijssen
fuente
1
31
Grimmy
1
30
Grimmy
1
@ Grimy Muy bien! Realmente me gustan ambos. Idea ingeniosa de usar ese tipo para guardar el byte adicional, gracias.
Kevin Cruijssen
1
Alterno 30 . No encuentro 29, así que su explicación es segura por ahora;)
Grimmy
4

Applesoft BASIC, 77 76 bytes

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

Lo anterior puede no parecer BASIC adecuado, pero Applesoft permite algunos atajos cuando se usa la PRINTdeclaración:

  • Uso de ?en lugar de PRINTal ingresar la declaración
  • Los caracteres de concatenación (ya sea ;o +) pueden omitirse
  • Si la declaración termina en una cadena entre comillas, la cita final puede omitirse ¡ Gracias, Mark !

Se requiere el número de línea, o la INPUTdeclaración causará un?ILLEGAL DIRECT ERROR

sotavento
fuente
1
¿Puedes omitir las comillas finales? Applesoft Basic es un derivado de Microsoft Basic, y muchas versiones de Microsoft Basic le permiten omitir la cita de cierre en una cadena si termina la línea.
Mark
@ Mark, gracias por el consejo!
Lee
4

33 , 78 bytes

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

Pruébalo en línea!

Toma la entrada como argumentos de línea de comandos.

Bonus: 91 bytes

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

Pruébalo en línea!

Da una salida que se parece a sí misma cuando se le dan entradas 1bztpy2bztp

TheOnlyMrCat
fuente
Dicho esto en voz alta, ahora necesito limpiar todo el asador de mi monitor.
BradC
3

Kotlin , 59 bytes

{i,j->"How much $i would a $i$j $j if a $i$j could $j $i?"}

Pruébalo en línea!

Quinn
fuente
¡Kotlin suena muy divertido!
M.Herzkamp
1
@ M.Herzkamp seguro que es!
Quinn
3

PowerShell , 65 bytes

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

Pruébalo en línea!

Lo único que debe tener en cuenta es que debe escapar del signo de interrogación porque pueden ser partes válidas de un identificador de PowerShell

Veskah
fuente
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

También debería ejecutarse como VBScript, utilicé dos accesos directos: "ould" se repite y "chuck" nunca aparece sin un espacio adicional.

usuario3819867
fuente
Puede reducir esto a 75 bytes mediante la conversión a la función de ventana inmediata como a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?. Toma entrada de [A1]y [B1]. Tenemos consejos para jugar golf en VBA en los que consideras echar un vistazo.
Taylor Scott
Luego, podría tomar el rango de entrada con nombre [A]y [B]como entradas reduciéndolo a 73. Sin embargo, no entiendo cómo funciona el suyo, no dude en agregar su propia respuesta.
user3819867
1
Desafortunadamente, eso va en contra de cómo se definen STDIN y STDOUT para Excel VBA: puede usar cualquier rango sin nombre en la hoja activa, pero no puede usar rangos con nombre según una decisión anterior de la comunidad
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]);}}

¡Gracias a Andrew Baumher por contarme sobre cadenas interpoladas!
EDITAR: La clase completa ahora agregó
EDITAR: Gracias a Kenneth K. por darme algunos consejos para acortarlo
EDITAR: Gracias a Andrew nuevamente por decirme que usar una cadena interpolada es en realidad más largo en este escenario.

canttalkjustcode
fuente
Usando C # 's' $ '( cadenas interpoladas ) modernas , puede guardar algunos bytes reemplazando {0} con {a [0]}, o mejor aún, tomando dos variables en lugar de una matriz para que pueda usar ayb. Para no robar tu trueno, por así decirlo, lo
agregaré
¡Wow no sabía sobre eso! Gracias por la información
canttalkjustcode
2
@canttalkjustcode en general, se aceptan funciones. Para C #, esto incluye 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
Esto ES cierto, pero solo en C # Interactive puede usar expresiones lambda como esta. En C # completo, necesita una declaración lamda completa. Una declaración nula simple sería más rápida como se muestra en el siguiente fragmento:
canttalkjustcode
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++"?"

Pruébalo en línea!

Primer intento, así que espero no haber roto ninguna regla.

david
fuente
2

Jalea , 39 bytes

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

Un programa completo que acepta una lista de dos cadenas.

Pruébalo en línea!

... O (también un programa completo que acepta una lista de dos cadenas)

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

Pruébalo en línea!

Jonathan Allan
fuente
2

Python 3 , 80 bytes

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

Pruébalo en línea!

cuando estés en roma, usa el formato str.

Editado con el truco del calamar.

Tryer
fuente
3
¿No sería esto inválido? Es un fragmento, no una función o un programa, ¿verdad?
Restablece a Mónica el
Sí; necesita un lambda n:antes y puede soltar el print().
wizzwizz4
Debe cambiar su código para imprimir en How much ...lugar de how much ....
Ruohola
3
Debería bastar simplemente definir una función anónima como 'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format.
xnor
@xnor Todavía es bastante nuevo, ¿cómo sería el TIO para eso entonces? Creo que sin alguna forma de pasar un argumento sería ejecutable.
Tryer
2

C # (compilador interactivo de Visual C #) , 66 65 bytes

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

Pruébalo en línea!

igual que todos los demás, excepto C #. -1 byte usando curt strat a => b => c en lugar de (a, b) => c

Andrew Baumher
fuente
El cambio de función de la firma Func<string,string,string>para Func<string,Func<string,string>>y el cambio (x,y)ax=>y=>
Realización de la Ignorancia
Parece una táctica barata, pero la meta discusión dice que es un juego justo, por lo que también podría serlo. Gracias.
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='')

Pruébalo en línea!

minhsphuc12
fuente
2
Bienvenido al sitio! ¿Parece que su enlace TIO está vinculado al código incorrecto? Además, por lo que puedo decir, ha asumido que la entrada está en las variables ay b, lo que está prohibido según nuestras reglas de Entrada / Salida predeterminadas
caird coinheringaahing
Gracias @cairdcoinheringaahing por el comentario. Lo reescribí en forma de función, espero que cumpla con las reglas ahora.
minhsphuc12
Usar stringrte ahorra algunos.
Khuldraeseth na'Barya
1

APL (Dyalog Unicode) , 56 59 bytes

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

Pruébalo en línea!

Bastante sencillo dfn. Guarda un byte cortando si se nos permite devolver una matriz de cadenas en lugar de una sola cadena.

Se agregaron 3 bytes porque olvidé agregar el signo de interrogación.

J. Sallé
fuente
¿Contaste las letras griegas como un byte?
Tomáš Zato
@ TomášZato sí. Los glifos de Dyalog APL se pueden representar en un solo byte utilizando la Hoja de caracteres de un solo byte de Adám, que es estándar para las respuestas de APL aquí.
J. Sallé
1

Jalea , 41 37 bytes

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

Pruébalo en línea!

Un programa completo que toma un par de cadenas como argumento e imprime la cadena procesada. Se podría formar un enlace monádico agregando un Fal final (gracias a @JonathanAllan por señalar esto).

Ahora he cambiado a usar "b" y "e" como marcadores de posición, inspirados por la respuesta SOGL de @ dzaima, ¡ así que asegúrese de votar esa también! Esto significa que la primera palabra no puede incluir la letra e.

Nick Kennedy
fuente
@JonathanAllan muy bien! Gracias.
Nick Kennedy
1

Adelante (gforth) , 116 bytes

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

Pruébalo en línea!

Explicación del Código

\ 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
reffu
fuente
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})))

Pruébalo en línea!

Programa completo, tome la entrada como argumentos.

Nada especial aquí. Espero que haya una versión más corta, pero no hay formas obvias de acortar esto a primera vista.

val
fuente
1

Bash , 58 bytes

echo "How much $1 could a $1$2 $2 if a $1$2 could $2 $1?"

Toma datos como argumentos de línea de comando. Pruébalo en línea!

gadzooks02
fuente