Introducción
La canción de la infancia Eeny, meeny, miny, moe se usaba a menudo para seleccionar quién era "eso" cuando jugaba al tag. Todos se pararían en círculo y señalarían a una persona seleccionada al azar. Ellos cantaban:
Eeny, meeny, miny, moe,
atrapa un tigre por la punta del pie.
Si él grita, déjalo ir,
Eeny, meeny, miny, moe.
Mientras cantaban cada palabra, señalaban a la siguiente persona en el círculo. La persona a la que se señaló cuando se cantó el "moe" final sería "eso". Los niños se levantarían inmediatamente y se dispersarían.
Objetivo
Implemente el programa más corto en bytes que toma una entrada, el número de hijos y enumera las palabras que se cantaron cuando se señalaban.
El ganador será seleccionado en una semana.
Entrada
De STDIN, un número entero positivo, el número de hijos. Esto puede ser más que el número de palabras en la canción.
Salida
Escribe en STDOUT una lista donde cada línea representa a un niño y contiene la palabra cantada mientras se señalaba. Si hay demasiados hijos, se pueden omitir líneas vacías.
Requisitos
- Siempre comienza con el primer hijo.
- Muestra las palabras sin puntuación.
- El "moe" final debe enfatizarse como "MOE". incluyendo puntuación.
Ejemplo
Entrada
3
Salida
Eeny moe tiger toe hollers go miny
meeny Catch by If let Eeny MOE!
miny a the he him meeny
Entrada
7
Salida
Eeny by him
meeny the go
miny toe Eeny
moe If meeny
Catch he miny
a hollers MOE!
tiger let
Entrada
1
Salida
Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!
Entrada
21
Salida
Eeny
meeny
miny
moe
Catch
a
tiger
by
the
toe
If
he
hollers
let
him
go
Eeny
meeny
miny
MOE!
fuente
Respuestas:
TeaScript , 82 bytes
Descomprimir, fragmentar, transponer, unir, salida.
Explicación
Pruébalo en línea
81 bytes no competitivos
El
α
no estaba encadenado,.
así que tuve que arreglar estofuente
Pyth,
1038984 caracteresSe guardaron 18 bytes con compresión de cadena, gracias a @Dennis y @FryAmTheEggman. Se guardó
otro byte gracias a @isaacg.
Advertencia: hay muchos no imprimibles en el código; usa los enlaces a continuación para probarlo.
Pruébalo en línea | Banco de pruebas
Probablemente podría jugar al golf. Sugerencias bienvenidas!
Cómo funciona
fuente
Eeny meeny miny
alguna manera debería ahorrar algunos bytes. Además, Pyth tiene dos funciones integradas para (des) compresión (.Z
y."
).."
ahorra 14 bytes!FNQ
==VQ
, por cierto.Jalea, 84 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 167 bytes
Explicación
fuente
l=Array(n).fill``
No funciona por alguna razón?Haskell,
160157 bytesAnteponga
"Eeny meeny miny "
a las otras partes ("moe Catch ..."
y"MOE!"
), concatene ambas cadenas, divida en palabras, tome trozos del tamaño requerido, transponga y concatene nuevamente en una sola cadena.@Mauris encontró 3 bytes factorizando la subcadena común "Eeny meeny miny" y haciendo que no
f
tenga ningún punto.fuente
s="Eeny meeny miny "
guarda algunos 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
esté completamente libre de puntos, podemos omitir incluso el nombre.Python 2,
154147 bytesEDITAR: ¡ Gracias Joe Willis!
Esto utiliza el truco de que [0 :: n] imprime el enésimo elemento de la lista.
Pruébalo aquí
fuente
::
operador? ¿Es eso como en bucle?Ruby, 160 bytes
Todos mis intentos de "comprimir" la cadena lo han hecho más largo.
Sigo intentando...fuente
JavaScript (ES6), 189 bytes:
Explicación:
fuente
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 tiene 172 bytes de longitud. Devuelve cada línea como un elemento en la matriz. Creo que esto es aceptable..map()
lugar de.forEach()
, puede guardar 3 bytes, reduciendo a 169 bytes. ¡Con un poco más de violín, esto en realidad podría ser tuiteable!STDIN
y,STDOUT
por lo tanto, creo que limita las respuestas de JavaScriptprompt
yalert
desafortunadamente.alert(b.join`<newline>`)
al final. Pero el daño aún se puede reducir con.map()
, en lugar de.forEach()
.Python 3,
279278272173 bytes(¡Gracias a Mathias Ettinger que literalmente me salvó más de 100 BYTES! )
Si alguien tiene consejos o sugerencias, realmente los agradecería. ¡Gracias!
fuente
int(i)
debe tomar el lugar de3
, pero hay otros errores que corregir después de eso.%
. Es ideal para contadores cíclicos..split()
se dividirá en espacios en blanco (espacio, líneas nuevas, pestañas) 2)range(0, x)
se escribe mejor comorange(x)
3) eche un vistazo a la notación de corte:w[0::3]
devolverá una lista de cada tres palabrasw
.Mathematica, 154 bytes
Utiliza el método split-chunk-transpose-join-output de la mayoría de las otras respuestas.
fuente
MATLAB, 167 bytes / caracteres:
Explicación:
No ganará ningún premio por la duración de este, pero fue divertido. :-)
fuente
Japt,
908786 bytesUn montón de no imprimibles. Pruébalo en línea!
Cómo funciona
Intenté comprimir la cadena con diferentes delimitadores. Lo único más eficiente que los espacios sería una letra minúscula, pero la mayoría de estos ya se usan y, por lo tanto, no se pueden usar para dividir la cadena. A continuación se indica cuánta compresión se logra con las restantes:
Actualmente estoy usando
d
. Es posible guardar un byte cons
, sustituyendo alguna otra letra enhollers
.fuente