Aquí está la canción (bastante aterradora) de los cinco patitos (no es larga):
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Four little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only three little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
One little duck went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but none of the little ducks came back.
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Su tarea no es emitir esta canción. Debe tomar un verso y sacar el siguiente verso (el siguiente verso del último verso es el primer verso).
Reglas
- No hay lagunas estándar, por favor.
- La entrada / salida se tomará a través de nuestros métodos de entrada / salida estándar.
- Se debe emitir el verso exacto , y no debe haber diferencias en comparación con la letra de la canción. La entrada no será diferente cuando se compara con la letra de la canción también.
Ejemplos
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Esperado:
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Esperado:
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
Respuestas:
Stax ,
115111 bytesEjecutar y depurarlo
Todos los versos como casos de prueba
fuente
JavaScript (ES9), 227 bytes
Esto es similar a la versión de Nodo a continuación, pero utiliza una fórmula basada en
parseInt()
lugar deBuffer()
identificar el verso de entrada.Esto es ES2018 (también conocido como ES9) porque estamos usando una expresión regular con la
/s
bandera ( dotAll ).Pruébalo en línea!
¿Cómo?
En esta versión, analizamos todo el verso de entrada como base 30 (
0
at
) y realizamos un bit Y con 7. El análisis se detiene en el primer carácter no válido, lo que lleva a:JavaScript (Node.js) ,
233 231227 bytesGuardado 2 bytes gracias a @Shaggy
Pruébalo en línea!
¿Cómo?
El tercer carácter de cada verso de entrada se puede usar como un identificador único. Al tomar su código ASCII módulo 9, obtenemos:
Los versos de salida están codificados con las siguientes plantillas:
Donde cada dígito se reemplaza con una cadena de acuerdo con la siguiente tabla:
Donde la expresión regular
/ w.*\n/s
extrae esta parte común de la entrada:Finalmente agregamos los últimos 11 caracteres de la entrada, que es
" came back."
.fuente
exec
cuándo se volvió a cargar la página. Grandes mentes ... !Python 3 ,
267 263254 bytes4 bytes guardados gracias a @ovs
Pruébalo en línea!
Funciona reemplazando las partes relevantes por las partes respectivas del siguiente verso.
Después de la preinicialización,
T
es['8', '9', 'and all of the little ducks', 'One little duck', 'but none of the little ducks', 'Two little ducks', 'but only one little duck', 'Three little ducks', 'but only two little ducks', 'Four little ducks', 'but only three little ducks', 'Five little ducks', 'but only four little ducks', 'Mother duck herself']
.Python alternativo 2 , 252 bytes
por @ovs
Pruébalo en línea!
fuente
for a in zip(T,T[-2:]+T):s=s.replace(*a)
para 264 bytes.lambda s:reduce(lambda s,a:s.replace(*a),zip(T,T[-2:]+T),s)
de 262 bytes en Python 2.T[2:]
lugar deT[-2:]
QuadR ,
257242 bytes-14 gracias a Black Owl Kai, -1 gracias a Kevin Cruijssen
Pruébalo en línea!
fuente
Java 10, 347 bytes
Pruébalo en línea.
Explicación:
fuente
T-SQL,
407 390 388382 bytesVARCHAR(MAX)
Después de un par de bytes que guardan bytes
REPLACE
, ejecuta lo siguiente como SQL dinámico:Utiliza una
CASE
instrucción ySTUFF
comandos para insertar / sobrescribir caracteres en las posiciones enumeradas.EDICIONES :
LEFT
lugar deSUBSTRING
y eliminando un espacioCHAR
y moviendo una letra adicional a la segundaREPLACE
(¡gracias, @CDC!)Aquí está mi primera versión, usando un método diferente (post-reemplazo, formateado):
STRING_SPLIT
yPARSENAME
se utilizan para romper una cadena en filas y columnas vía-
y.
separadores.La primera columna es un personaje clave que se compara con la tercera letra del verso de entrada (gracias por la idea, @ Night2). El segundo y el tercero son los reemplazos que se realizan para ese versículo.
fuente
Python 2 , 1034 bytes
Este es mi código! Emplea un diccionario simple. Después de ejecutar este código, puede ingresar cualquier verso y generará el siguiente verso.
PD: Soy nuevo en este canal y esta es mi primera publicación. Realmente me gustó este desafío, así que decidí probarlo. Por favor, siéntase libre de corregirme.
fuente
x
oa
) 2) Python es bastante permisivo con espacios en blanco, por lo que trataría de eliminar algunos de sus espacios en blanco también. Por ejemplo, no necesitas espacios alrededor=
. Por último, tenemos una página para jugar golf en Python que puedes visitar para mejorar tu juego.sys
usandoraw_input()
, por ejemplo , acortando la clave del diccionario, etc. Definitivamente, debe sacar las secciones repetidas de la canción y agregarlas por separadoPHP (7.4),
253247 bytes-6 bytes mejorando la forma en que se construye la matriz de reemplazos con más ayuda de "Desempaquetar dentro de las matrices".
Pruébalo en línea!
Esto crea una matriz de cada posible reemplazo (12 usados + 2 sin usar) en un
key=>value
formato. Ejemplo:['Mother duck herself' => 'Five little ducks', etc...]
y luego simplemente reemplaza los que usan strtr .Lo único interesante es mi primer uso de "Desempaquetar dentro de arreglos", que es una nueva característica en PHP 7.4.
PHP , 264 bytes
Pruébalo en línea!
He almacenado diferentes palabras de cada verso en una matriz. Encuentro qué verso la entrada está usando el tercer carácter de la entrada, ya que es única (
vuroet
). Luego simplemente reemplazo las diferentes palabras de ese versículo con diferentes palabras del siguiente versículo.fuente
Limpiar , 352 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 262 bytes
Pruébalo en línea!
fuente
PowerShell ,
356343340336 bytesPruébalo en línea .
Versión más legible:
fuente
PowerShell ,
265263255251246 bytesPruébalo en línea!
Usé la fuerza bruta para encontrar la expresión
+"$args"[2]*37%724%7
.Gracias @Arnauld por el
3rd char
.fuente
Japt v2.0a0, 143 bytes
Intenté codificar un solo verso con reemplazos pero, al final, adaptar la solución de Arnauld terminó siendo más corto. Tengo otra idea que, con suerte, podría funcionar de nuevo, pero no sé cuándo voy a intentarlo.
Pruébalo : incluye todos los versos
fuente
Bash ,
373bytesNada demasiado loco aquí. Una reducción fácil de pocos bytes sería reemplazar las variables de dos caracteres (a1, a2, a3, e1..e6) con las de un solo carácter.
Pruébalo en línea!
Pruébalo en línea!fuente
05AB1E , 134 bytes
Pruébalo en línea!
Como soy relativamente nuevo en 05AB1E, esto puede ser mucho golf
fuente
Perl 6 , 247 bytes
Pruébalo en línea!
Definitivamente golfable, especialmente los últimos 5 elementos de la lista en el formulario
"num $l num-1"
, o la expresión regular inicial que coincide con las partes correctas de la entrada anterior.fuente
Carbón , 156 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Mire el tercer carácter de la primera línea para determinar qué versículo queremos.
Salida de la primera parte de la primera línea de la indexación en la lista de cadenas
Five
,Four
,Three
,Two
,One
,Mother duck herself
. Luego imprimalittle duck
ys
según corresponda, seguido de los últimos 18 caracteres de la línea de entrada (que siempre son los mismos en cada verso).Las dos líneas del medio son siempre las mismas en cada verso.
Para la última línea resulta más golfista incluir
little ducks
en la lista de alternativas por alguna razón, pero los últimos 11 caracteres aún se copian de la entrada.fuente
tinta , 353 bytes
Pruébalo en línea!
Primero, usa controles de subcadena para descubrir en qué verso estamos, eso es bastante fácil gracias a las mayúsculas de los números al principio
F
,T
yO
no ocurre en ningún otro lugar, y puede distinguir el segundo y cuarto verso de el primero y el tercero al verificarFi
yTh
respectivamente.Luego, hacemos lo que mejor hace la tinta e imprimimos texto sin formato con puntos condicionales. Al principio intenté usar sentencias de cambio, pero si bien se veía mejor, en realidad terminó por más tiempo.
Uno pensaría que el
Quack
s sería un buen lugar para usar variables, ya que una cadena se repite un montón, pero las variables vienen con suficiente sobrecarga que cada forma que intenté hacer hizo que el código fuera más largo. Tal vez sea una señal de que no se supone que debo jugar al golf con tinta.fuente