Introdução
A música infantil Eeny, meeny, miny, moe era frequentemente usada para selecionar quem era "ele" ao tocar tag. Todo mundo ficava em círculo e apontava para uma pessoa selecionada aleatoriamente. Eles cantariam:
Eeny, meeny, miny, moe,
pegue um tigre pelo dedo do pé.
Se ele gritar, deixe-o ir,
Eeny, meeny, miny, moe.
Ao cantarem cada palavra, apontaram para a próxima pessoa no círculo. A pessoa que está sendo apontada quando o último "moe" foi cantado seria "it". As crianças imediatamente se levantam e se dispersam.
Objetivo
Implemente o programa mais curto em bytes que recebe uma entrada, o número de filhos e lista as palavras que foram cantadas quando estavam sendo apontadas.
O vencedor será selecionado em uma semana.
Entrada
De STDIN, um único número inteiro positivo, o número de filhos. Isso pode ser mais do que o número de palavras na música.
Resultado
Grava em STDOUT uma lista em que cada linha representa um filho e contém a palavra cantada enquanto estavam sendo apontadas. Se houver muitos filhos, linhas vazias podem ser omitidas.
Exigências
- Sempre comece com o primeiro filho.
- Mostre as palavras sem pontuação.
- O "moe" final deve ser enfatizado como "MOE!" incluindo pontuação.
Exemplo
Entrada
3
Resultado
Eeny moe tiger toe hollers go miny
meeny Catch by If let Eeny MOE!
miny a the he him meeny
Entrada
7
Resultado
Eeny by him
meeny the go
miny toe Eeny
moe If meeny
Catch he miny
a hollers MOE!
tiger let
Entrada
1
Resultado
Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!
Entrada
21
Resultado
Eeny
meeny
miny
moe
Catch
a
tiger
by
the
toe
If
he
hollers
let
him
go
Eeny
meeny
miny
MOE!
fonte
Respostas:
TeaScript , 82 bytes
Descompacte, pedaço, transposição, junção, saída.
Explicação
Experimente online
81 bytes não concorrentes
O
α
não estava sendo acorrentado,.
então eu tive que corrigir issofonte
Pyth,
1038984 caracteresSalva 18 bytes com compactação de strings, graças a @Dennis e @FryAmTheEggman
Salva outro byte graças a @isaacg
Aviso: existem muitos não imprimíveis no código; use os links abaixo para experimentá-lo.
Experimente online | Suíte de teste
Provavelmente poderia ser jogado golfe. Sugestões são bem-vindas!
Como funciona
fonte
Eeny meeny miny
alguma forma deve economizar alguns bytes. Além disso, o Pyth possui dois recursos internos para (des) compactação (.Z
e."
).."
economiza 14 bytes!FNQ
==VQ
, a propósito.Geléia, 84 bytes
Experimente online!
fonte
JavaScript (ES6), 167 bytes
Explicação
fonte
l=Array(n).fill``
funciona por algum motivo?Haskell,
160157 bytesAnexar
"Eeny meeny miny "
as outras partes ("moe Catch ..."
e"MOE!"
), concatenar as duas seqüências, dividir em palavras, pegar pedaços do tamanho necessário, transpor e concatenar novamente em uma única sequência.O @Mauris encontrou 3 bytes, fatorando a substring comum "Eeny meeny miny" e tornando o
f
pointfree.fonte
s="Eeny meeny miny "
economize alguns bytes.f=unlines.map unwords.transpose.(`chunksOf`(["moe Catch a tiger by the toe If he hollers let him go","MOE!"]>>=words.("Eeny meeny miny "++)))
f
é completamente sem sentido, podemos omitir até o nome.Python 2,
154147 bytesEDIT: Obrigado Joe Willis!
Isso usa o truque que [0 :: n] imprime o enésimo elemento da lista.
Experimente aqui
fonte
::
operador faz? É assim no loop?Ruby, 160 bytes
Todas as minhas tentativas de "comprimir" a string apenas a prolongaram.
Ainda tentando ...fonte
JavaScript (ES6), 189 bytes:
Explicação:
fonte
I=>(b=Array(I--).fill``,c=0,"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!".split` `.forEach(v=>(b[c]+=v+' ',c+=c>I-1?-c:1)),b)
:, que tem 172 bytes de comprimento. Retorna cada linha como um elemento na matriz. Eu acho que isso é aceitável..map()
vez de.forEach()
, poderá salvar 3 bytes, reduzindo para 169 bytes. Com um pouco mais de brincadeira, isso pode ser realmente tweetable!STDIN
e,STDOUT
portanto, acho que limita as respostas JavaScriptprompt
ealert
infelizmente.alert(b.join`<newline>`)
no final. Mas o dano ainda pode ser reduzido com.map()
, em vez de.forEach()
.Python 3,
279278272173 bytes(obrigado a Mathias Ettinger, que literalmente me salvou 100+ BYTES! )
Se alguém tiver dicas ou sugestões, eu realmente aprecio. Obrigado!
fonte
int(i)
deve substituir3
, mas há outros erros a serem corrigidos depois disso.%
. É ideal para contadores cíclicos..split()
serão divididos em espaços em branco (espaço, novas linhas, guias) 2)range(0, x)
é melhor redigidos comorange(x)
3) dê uma olhada na notação de fatia:w[0::3]
retornará uma lista de três em três palavras emw
.Mathematica, 154 bytes
Usa o método split-chunk-transpose-join-output da maioria das outras respostas.
fonte
MATLAB, 167 bytes / caracteres:
Explicação:
Não ganhará nenhum prêmio pela duração deste, mas foi divertido. :-)
fonte
Japt,
908786 bytesMuitos imprimíveis. Experimente online!
Como funciona
Eu tentei comprimir a string com diferentes delimitadores. A única coisa mais eficiente que os espaços seria uma letra minúscula, mas a maioria deles já é usada e, portanto, não pode ser usada para dividir a sequência. Aqui está a quantidade de compactação obtida com as restantes:
Atualmente estou usando
d
. Pode ser possível salvar um bytes
, substituindo por outra letrahollers
.fonte