Quanto código um codegolf jogaria se um codegolf pudesse jogar?


55

Escreva uma função ou programa que use duas palavras como variantes de entrada e saída do popular trava-língua inglês "Quanta madeira uma marmota manda se uma marmota pode manda madeira?".

A saída usará a primeira palavra quatro vezes

  • Quanto woodcustaria um woodmandril se um woodmandril pudesse manda-la wood?

e a segunda palavra quatro vezes

  • Quanta madeira seria uma madeira chuck chuckse madeira chuckpudesse chuckmadeira?

com o restante da saída sendo o mesmo para todas as entradas.

  • How muchmadeira would amarmota mandril if amarmota couldmandril de madeira?

A entrada e a saída podem estar em qualquer formato que seu idioma reconheça razoavelmente como lidando com cadeias de texto. A saída deve estar exatamente no formato indicado, incluindo letras maiúsculas, espaços e falta delas, e o ponto de interrogação final. Uma nova linha opcional à direita é aceitável.

Idealmente, seu código manipulará a entrada que contenha caracteres ASCII imprimíveis. No entanto, é permitido restringir a entrada a subconjuntos razoáveis ​​de ASCII imprimível; apenas indique isso na sua resposta. Lidar com conjuntos de caracteres maiores é claro.

Pares de entrada-saída de exemplo:

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

Isso é , e o menor número de bytes vence. As respostas são bem-vindas em todos os idiomas, mesmo que outro idioma possa fazê-lo em menos bytes.

(Inspirado neste meme , que usa um par de entradas melhor do que esse padrão rígido ...)


2
Podemos assumir que as duas palavras serão duas palavras distintas ?
Jonathan Allan

4
... Acho que "", ""significa não: p
Jonathan Allan

11
@Chronocidal Eu não suporto vê-lo decepcionado ....
Greg Martin

6
Dois. Seria golfe dois código.
user2357112 20/08

11
Ah, eu esperava que isso fosse sobre um programa curto que possa fazer algumas transformações simples de golfe em outro código.
aschepler

Respostas:


40

Python 3 , 70 67 bytes

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

Experimente online!

Quero dizer, se o sapato couber ..

Graças a manatwork por pegar um erro de digitação

Agradecimentos a Remco Haszing pela excelente idéia de -3 bytes

Estou fugindo da suposição de que isso ainda seria uma submissão válida (porque, cara, é muito legal não tentar). Se o OP pudesse esclarecer se isso é aceitável (porque eu não escrevi uma função, por si só), isso seria apreciado.

Atualização: Bênção recebida, tudo é bom :)


Versão anterior:

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

2
Talvez irrelevante, mas a string de formato automático não está prontamente disponível nas versões python anteriores à 3.6
M.Herzkamp

3
@ M.Herzkamp Então?
ruohola

16
@ruohola Acho que M.Herzkamp está tentando dizer que o título dessa resposta deve ser "Python 3.6" em vez de "Python 3".
Sr. Lister

8
Mesmo mais curto e Python 2 compatível (67 bytes): "How much {0} would a {0}{1} {1} if a {1}{0} could {1} {0}?".format. Isso retorna uma função vinculada à sequência não formatada.
Remco Haszing

11
Não sou especialista em Python, mas como print("How much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?".format("wood","chuck"))gera a saída desejada, não vejo razão para não aceitá-la :)
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

A entrada é obtida da tabela preexistente t com as colunas W ec , deacordo com nossas regras de IO.

Um byte a mais, mas por algum motivo um pouco mais agradável:

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

Esta versão funciona em um subconjunto de entradas que não incluem o numeral2 na primeira palavra W .

Como estou no SQL, posso pré-carregar todos os exemplos na tabela e executá-los todos de uma vez:

insira a descrição da imagem aqui


2
+1000000 trens virtuais para megatrain
Greg Martin

5
Eu assumo que "w" e "c" significam "madeira" e "mandril", respectivamente: P
user253751

Isso pode ser feito em 67 bytes no Oracle, conforme chamado do SQL * Plus (portanto, nenhuma tabela):select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Ben

16

Bater , 50 bytes

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

Experimente online!

-5 bytes devido à ajuda dos comentários abaixo.




11
Você adicionou uma barra invertida desnecessária ao adaptar o golfe de Nahuel. Aqui está 53. (Embora realmente deva ser 50, nada impede que você tome a primeira palavra como US $ 2 e a segunda como US $ 1).
Grimmy

2
@ Grimy: Eu vejo o comentário sobre o desafio do pôster original, permitindo a reversão dos parâmetros. Estou atualizando a resposta para a excelente resposta de 50 bytes. Obrigado!
spuck

11
@roblogic: as barras invertidas citam os espaços para evitar a divisão de palavras nos espaços, e as chaves são expandidas duas vezes para formar duas palavras, uma com cada sequência dentro das chaves e os caracteres que seguem as chaves (mas parte da palavra) são adicionados ao final de cada sequência. Adicionando colchetes para ajudar a visualizar a divisão da palavra: “[a {bc, de} f]” se torna duas palavras: “[abcf] [adef]”. Assim, "[{seria, $ 1 \ se} \ a \ $ 2 $ 1]" se torna "[seria \ a \ $ 2 $ 1] [$ 1 \ se \ a \ $ 2 $ 1]"
spuck

15

Stax , 33 31 30 29 bytes

-1 graças a recursiva !

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

Execute e depure-o em staxlang.xyz!

Empurre cada componente para a pilha na ordem inversa e junte todos os espaços.

Descompactado (35 bytes) e explicação:

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

Tudo entre `` é literal de string compactado. Essa vírgula é vital. A última vez que li na pilha de entrada, devo aparecer em vez de espiar para evitar um "chuck" extra no final da minha saída.

Você notará que eu coloco as duas entradas na mesma linha para alguns casos de teste e que elas estão na ordem inversa. Isso é necessário para obter cadeias vazias ou cadeias de espaços como entrada.

27 26 bytes com restrições de entrada

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

Execute e depure-o em staxlang.xyz!

Assim como o SOGL do @ dzaima , isso falhará se a primeira entrada contiver a letra minúscula 'y'. Empurra a string "Quanto b seria a por y se a by poderia yb?" E faz um par de substituições.


"Você notará que eu coloco as duas entradas na mesma linha para alguns casos de teste e que elas estão na ordem inversa. Isso é necessário para usar cadeias vazias ou cadeias de espaços como entrada". Se você não usar um separador de entrada, a entrada não será perturbada , seqüências de caracteres vazias e tudo. Apenas torna estranho mostrar vários casos de teste.
recursivo em

11
Além disso, parece que a ,solução líder em sua solução de 31 bytes pode ser removida. O seguinte +aparece implicitamente da pilha de entrada, portanto o comportamento é idêntico.
recursivo em

13

JavaScript, 70 bytes

Entediante!

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

Experimente online!

Um pouco menos chato!

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

Experimente online!


Você tem permissão para gerar uma função com curry, como no primeiro exemplo?
Feathercrown

@ Plumacrown, não estou produzindo uma função, estou chamando as duas (por exemplo, f(a)(b)) como você pode ver no TIO. Mas sim, nossos consensos permitem permitir funções com caril e acho que estamos perto de um consenso em permitir que uma função seja realmente retornada.
Shaggy

Por saída, quis dizer que o código retorna uma função quando avaliada; nenhuma chamada está no código fornecido, que conta por bytes. Eu estava apenas checando para garantir que o curry estava bom, já que só vi funções não-retornadas.
Feathercrown

6

SOGL , 32 30 bytes

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

Experimente aqui!

A primeira entrada não pode conter a letra y, que parece deixar um subconjunto razoável de ASCII (e unicode) restantes.

½ouiīZģ9Ο|ΧyΚ⅞ō÷Jeq(‚7‘é uma sequência compactada de "how much b would a by y if a by could y b?"(caracteres escolhidos para que as palavras necessárias estejam todas nas 512 palavras principais do dicionário que se compactam melhor) e depois bé substituída pela primeira entrada e ypela segunda.


+2 pontos de internet para uma das restrições mais aleatórias que me lembro (em sua solução mais curta)
Greg Martin

@GregMartin Não é tão aleatório. Eu não falo SOGL, mas acabei com a mesma restrição em 'n' ao sequenciar duas substituições y -> woode n -> chuck. Um décimo de um Dignity Point diz que também é o caso aqui.
Khuldraeseth na'Barya

Penso que o espírito principal desta pergunta é ser aberto sobre permitir soluções ... apenas como um aparte posso opinar que não permitir que uma letra real em uma entrada seja um pouco superficial. Enfim: por que bnão é permitido na primeira entrada e ainda eestá ok na segunda entrada?
Greg Martin

@GregMartin whoops, eu quis dizer que a 1ª entrada não pode conter e, caso contrário, ela seria substituída pela 2ª entrada na 2ª substituição
dzaima

Não é possível que o destino de substituição seja não alfa para evitar a proibição de um alfa da entrada?
WGroleau

5

R , 90 77 76 bytes

-13 graças a Sumner18
-1 graças a Giuseppe

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

Experimente online!


2
Pode fazer um duplo gsubpara -13 bytes. tio.run/...
Sumner18

@ Sumner18 Obrigado. Sim, gsubdefinitivamente faz mais sentido.
Robert S.

Se você quiser usar pryr, pode reduzi-lo para 73 .
Khuldraeseth na'Barya

4
Você deve especificar que assume que a entrada xnão inclui o caractere 2; Falha neste caso ( TIO ).
Robin Ryder


4

PHP , 72 bytes

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

Experimente online!

Ou:

PHP , 72 bytes

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

Experimente online!

Entrada da linha de comando, saída para STDOUT.



4

ZX Spectrum Basic, 87 bytes

Apenas para completar, implementação direta:

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

O uso da IFpalavra - chave (1 byte) reduz em 3 bytes, mas quebra a condição "mesma capitalização":

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

É bom mostrar versões um pouco baratas também :)
Greg Martin

2
Oh, Speccy! Para ser jovem de novo ...
chx

4

Ferrugem , 75 bytes

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

Experimente online!

Usando esse truque , você pode pular o índice de formatação uma vez por item para formatar.

Também usando print!(), porque é um byte menor do que construir format!()e retornar uma string .


4

05AB1E , 37 35 31 30 bytes

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

-5 bytes graças a @Grimy .

Leva uma lista de dois itens: woodcomo primeiro valor e chuckcomo segundo.

Experimente online ou verifique todos os casos de teste .

Explicação:

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)

Veja esta dica 05AB1E meu (seção Como usar o dicionário? ) Para entender por que “Howƒ×1€Þ a ÿ0€¬ a ÿƒˆ01?“é "How much1 would a ÿ0 if a ÿ could01?".




11
@Grimy Very nice! Eu realmente gosto dos dois. Ideia engenhosa de usar coisas assim para salvar o byte adicional, obrigado.
Kevin Cruijssen 20/08

11
Alternativa 30 . Eu não estou encontrando nenhum 29, então sua explicação está segura por enquanto;)
Grimmy

4

Applesoft BASIC, 77 76 bytes

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

O exemplo acima pode não parecer o BASIC adequado, mas a Applesoft permite alguns atalhos ao usar a PRINTinstrução:

  • Uso de ?no lugar de PRINTao inserir a declaração
  • Os caracteres de concatenação ( ;ou +) podem ser omitidos
  • Se a instrução terminar em uma string entre aspas, a citação final poderá ser omitida Obrigado, Mark !

O número da linha é obrigatório ou a INPUTinstrução causará uma?ILLEGAL DIRECT ERROR


11
Você pode omitir as aspas à direita? O Applesoft Basic é um derivado do Microsoft Basic, e muitas versões do Microsoft Basic permitem omitir a cotação de fechamento de uma seqüência de caracteres se ela terminar a linha.
Mark

@ Mark, obrigado pela dica!
lee

4

33 , 78 bytes

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

Experimente online!

Aceita a entrada como argumentos da linha de comando.

Bônus: 91 bytes

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

Experimente online!

Dá saída semelhante a si mesmo quando recebe entradas 1bztpe2bztp


Disse isso em voz alta, agora eu preciso limpar todo o cuspe do meu monitor.
BradC


3

PowerShell , 65 bytes

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

Experimente online!

A única coisa a observar é que você precisa escapar do ponto de interrogação, porque essas podem ser partes válidas de um identificador do PowerShell


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

Também deveria funcionar como VBScript, usei dois atalhos: "ould" está se repetindo e "chuck" nunca aparece sem um espaço adicional.


Você pode reduzir isso para 75 bytes convertendo para a função de janela imediata como a=[A1]:b=[B1&" "]:o="ould ":?"How much "a" w"o"a "a b b"if a "a b"c"o b a"?. Recebe entrada de [A1]e [B1]. Temos dicas de golfe no VBA que você considera dar uma olhada.
Taylor Scott

Então você pode pegar a entrada nomeada range [A]e, [B]como entradas, reduzi-la para 73. Não entendo bem como a sua passa, fique à vontade para adicionar sua própria resposta.
user3819867 26/08

11
Infelizmente, isso contraria a maneira como STDIN e STDOUT são definidos para o Excel VBA - você pode usar qualquer intervalo sem nome na folha de atividades, mas não tem permissão para usar intervalos nomeados por uma decisão anterior da comunidade
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]);}}

Obrigado a Andrew Baumher por me falar sobre seqüências de caracteres interpoladas !!
EDIT: Classe completa agora adicionada
EDIT: Obrigado a Kenneth K. por me dar algumas dicas para reduzi-lo
EDIT: Obrigado a Andrew novamente por me dizer que o uso de seqüências de caracteres interpoladas é realmente mais longo nesse cenário.


Usando C # 's' $ 'modernos ( seqüências de caracteres interpoladas ), você pode salvar alguns bytes substituindo {0} por {a [0]}, ou melhor ainda, usando duas variáveis ​​em vez de uma matriz para poder usar apenas aeb. Para não roubar seu trovão, por assim dizer, vou adicioná-lo como uma versão diferente do c #
Andrew Baumher 19/08/08

Uau não sabia disso! Obrigado pela informação
canttalkjustcode

2
@canttalkjustcode geralmente, as funções são aceitas. Para C #, isso inclui 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

Isso é verdade, mas é apenas no C # Interactive que você pode usar expressões lambda como esta. No C # completo, você precisa de uma instrução lamda completa. Uma declaração nula simples seria mais rápida, conforme mostrado no seguinte trecho:
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++"?"

Experimente online!

Primeira tentativa, então espero não ter quebrado nenhuma regra.


2

Geléia , 39 bytes

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

Um programa completo que aceita uma lista de duas strings.

Experimente online!

... Ou (também um programa completo que aceita uma lista de duas strings)

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

Experimente 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)

Experimente online!

quando estiver em roma, use o formato str.

Editado usando o truque do squid.


3
Isso não seria inválido? É um trecho - não é uma função ou um programa, certo?
Restabelecer Monica

Sim; precisa de um lambda n:antes dele e pode soltar o print().
wizzwizz4

Você deve alterar seu código para imprimir em How much ...vez de how much ....
ruohola

3
Basta definir apenas uma função anônima como 'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format.
xnor 20/08

@xnor Ainda bem novo, como seria o TIO para isso? Eu pensaria que, sem alguma maneira de passar um argumento, seria executável.
Tryer

2

C # (compilador interativo do Visual C #) , 66 65 bytes

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

Experimente online!

igual a todos os outros, exceto C #. -1 byte usando a sequência de curry a => b => c em vez de (a, b) => c


Altere a assinatura da função de Func<string,string,string>para Func<string,Func<string,string>>e mude (x,y)parax=>y=>
Modalidade de ignorância

Parece uma tática barata, mas a meta-discussão diz que é um jogo justo, assim também pode ser. Obrigado.
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='')

Experimente online!


2
Bem vindo ao site! O link do seu TIO parece estar vinculado ao código errado? Além disso, até onde eu sei, você assumiu que a entrada está nas variáveis ae bque não é permitida pelas regras de entrada / saída padrão
caird coinheringaahing

Obrigado @cairdcoinheringaahing pelo comentário. Eu o reescrevi em forma de função, espero que esteja em conformidade com as regras agora.
minhsphuc12


1

APL (Dyalog Unicode) , 56 59 bytes

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

Experimente online!

Dfn bastante simples. Salva um byte cortando se for permitido retornar uma matriz de seqüências de caracteres em vez de uma única sequência.

3 bytes adicionados porque eu tinha esquecido de adicionar o ponto de interrogação.


Você contou as letras gregas como um byte?
Tomáš Zato

@ TomášZato sim. Os glifos de Dyalog APL podem ser representados em um único byte usando a Folha de caracteres de byte único de Adám, que é padrão para respostas de APL aqui.
J. Sallé


1

Geléia , 41 37 bytes

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

Experimente online!

Um programa completo usando um par de cadeias como argumento e imprimindo a cadeia processada. Um link monádico pode ser formado adicionando um Fno final (obrigado a @ JonathanAllan por apontar isso).

Agora mudei para o uso de "b" e "e" como espaços reservados, inspirados em na resposta SOGL do @ dzaima . Isso significa que a primeira palavra não pode incluir a letra e.


@JonathanAllan bastante certo! Obrigado.
Nick Kennedy


1

Quarto (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 ." ?";

Experimente online!

Código Explicação

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

Experimente online!

Programa completo, tome entrada como argumentos.

Nada de especial aqui. Espero que exista uma versão mais curta, mas não há maneiras óbvias de encurtar isso à primeira vista.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.