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
wood
custaria umwood
mandril se umwood
mandril pudesse manda-lawood
?
e a segunda palavra quatro vezes
- Quanta madeira seria uma madeira
chuck
chuck
se madeirachuck
pudessechuck
madeira?
com o restante da saída sendo o mesmo para todas as entradas.
How much
madeirawould a
marmotamandril
if a
marmotacould
mandrilde 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 é código-golfe , 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 ...)
"", ""
significa não: pRespostas:
Python 3 ,
7067 bytesExperimente 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:
fonte
"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.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 :)T-SQL, 82 bytes
A entrada é obtida da tabela preexistentet com as colunas W ec , deacordo com nossas regras de IO.
Um byte a mais, mas por algum motivo um pouco mais agradável:
Esta versão funciona em um subconjunto de entradas que não incluem o numeralW .
2
na primeira palavraComo estou no SQL, posso pré-carregar todos os exemplos na tabela e executá-los todos de uma vez:
fonte
select'How much &1 would a &1&2 &2 if a &1&2 could &2 &1?'from dual
Bater , 50 bytes
Experimente online!
-5 bytes devido à ajuda dos comentários abaixo.
fonte
Stax ,
33313029 bytes-1 graças a recursiva !
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:
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.
2726 bytes com restrições de entradaExecute 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.
fonte
,
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.JavaScript, 70 bytes
Entediante!
Experimente online!
Um pouco menos chato!
Experimente online!
fonte
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.SOGL ,
3230 bytesExperimente 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 depoisb
é substituída pela primeira entrada ey
pela segunda.fonte
y -> wood
en -> chuck
. Um décimo de um Dignity Point diz que também é o caso aqui.b
não é permitido na primeira entrada e aindae
está ok na segunda entrada?e
, caso contrário, ela seria substituída pela 2ª entrada na 2ª substituiçãoR ,
907776 bytes-13 graças a Sumner18
-1 graças a Giuseppe
Experimente online!
fonte
gsub
para -13 bytes. tio.run/...gsub
definitivamente faz mais sentido.pryr
, pode reduzi-lo para 73 .x
não inclui o caractere2
; Falha neste caso ( TIO ).PHP , 72 bytes
Experimente online!
Ou:
PHP , 72 bytes
Experimente online!
Entrada da linha de comando, saída para
STDOUT
.fonte
JavaScript (V8) , 72 bytes
Experimente online!
A atribuição da variável na verdade salva 0 bytes, mas achei que a manteria apenas para tornar isso um pouco exclusivo.
fonte
ZX Spectrum Basic, 87 bytes
Apenas para completar, implementação direta:
O uso da
IF
palavra - chave (1 byte) reduz em 3 bytes, mas quebra a condição "mesma capitalização":fonte
Ferrugem , 75 bytes
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 construirformat!()
e retornar uma string .fonte
05AB1E ,
37353130 bytes-5 bytes graças a @Grimy .
Leva uma lista de dois itens:
wood
como primeiro valor echuck
como segundo.Experimente online ou verifique todos os casos de teste .
Explicação:
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?"
.fonte
$ù
coisas assim para salvar o byte adicional, obrigado.Applesoft BASIC,
7776 bytesO exemplo acima pode não parecer o BASIC adequado, mas a Applesoft permite alguns atalhos ao usar a
PRINT
instrução:?
no lugar dePRINT
ao inserir a declaração;
ou+
) podem ser omitidosO número da linha é obrigatório ou a
INPUT
instrução causará uma?ILLEGAL DIRECT ERROR
fonte
33 , 78 bytes
Experimente online!
Aceita a entrada como argumentos da linha de comando.
Bônus: 91 bytes
Experimente online!
Dá saída semelhante a si mesmo quando recebe entradas
1bztp
e2bztp
fonte
Kotlin , 59 bytes
Experimente online!
fonte
PowerShell , 65 bytes
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
fonte
VBA, 107 bytes
Também deveria funcionar como VBScript, usei dois atalhos: "ould" está se repetindo e "chuck" nunca aparece sem um espaço adicional.
fonte
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.[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.C # ,
165148133 bytesObrigado 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.
fonte
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
Experimente online!
Primeira tentativa, então espero não ter quebrado nenhuma regra.
fonte
Geléia , 39 bytes
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)
Experimente online!
fonte
Python 3 , 80 bytes
Experimente online!
quando estiver em roma, use o formato str.
Editado usando o truque do squid.
fonte
lambda n:
antes dele e pode soltar oprint()
.How much ...
vez dehow much ...
.'how much {0} would a {0}{1} {1} if a {0}{1} could {1} {0}?'.format
.C # (compilador interativo do Visual C #) ,
6665 bytesExperimente 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
fonte
Func<string,string,string>
paraFunc<string,Func<string,string>>
e mude(x,y)
parax=>y=>
R , 95 bytes
Experimente online!
fonte
a
eb
que não é permitida pelas regras de entrada / saída padrãostringr
poupa alguns.APL (Dyalog Unicode) ,
5659 bytesExperimente 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.
fonte
Wolfram Language (Mathematica) , 68 bytes
Experimente online!
fonte
Geléia ,
4137 bytesExperimente 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
F
no 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.
fonte
Japonês
-S
,4439 bytesTente
fonte
Quarto (gforth) , 116 bytes
Experimente online!
Código Explicação
fonte
Lua , 82 bytes
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.
fonte
Bash , 58 bytes
Recebe entrada como argumentos de linha de comando. Experimente online!
fonte