Debido a que el rickrolling es el mejor meme en la Tierra, usted [conoce las reglas y yo también] debe escribir el código más corto que pueda rickroll textualmente al lector desprevenido. Deje que [abajo] haya un texto de entrada que contenga letras, signos de puntuación y espacios. Cada vez que aparece una frase [mentir y lastimarte] de las dos primeras estrofas en el texto ...
We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
... inserte el resto de la línea entre paréntesis después.
Entrada
La entrada es una cadena de línea única que contiene solo ASCII imprimible con nueva línea final opcional.
Salida
La salida es una cadena de una sola línea. Cada vez que un grupo de palabras (definido como la cadena de entrada dividida en espacios) coincida con un grupo de palabras en las líneas de las letras de arriba, inserte las palabras restantes de la línea en la cadena, agrupadas entre corchetes.
Descripción adicional:
Este es el código de golf , gana menos bytes. Puede escribir un programa o función.
- la correspondencia debe ser insensible a mayúsculas y minúsculas:
we're
se convierte awe're [no strangers to love]
pesar de queWe're
está en mayúscula en las letras - el emparejamiento debe ser codicioso.
Does he know the answer?
debe convertirse enDoes he know the [rules and so do I] answer?
lugar deDoes he know [the rules and so do I] the [rules and so do I] answer?
- Si una palabra aparece más de una vez en la letra proporcionada, elija cualquiera de las apariciones para completar la línea.
- Si una palabra es la última palabra en la línea de la letra, no inserte nada después.
- La puntuación se incluye como parte de una "palabra".
I'm
es una sola palabra y no puede coincidir conI
. Del mismo modo,you.
no coincide con ninguna letra debido al período.
Algunas palabras como I
aparecen varias veces a lo largo de la letra, así como al final de una línea. Dado que la regla es que se puede usar cualquier ocurrencia en las letras anteriores, y una de esas ocurrencias está al final de una línea, no I
es necesario que coincida . La otra opción para I
es [just wanna tell you how I'm feeling]
.
Si se superponen dos coincidencias, puede elegir cualquiera de las dos. Esto significa que how I'm thinking
podría convertirse en how I'm [feeling] thinking [of]
OR how [I'm feeling] I'm thinking [of]
ya que I'm
podría ser parte de cualquiera how I'm
o I'm thinking
. Sin embargo, si el texto de entrada era simple I'm thinking
, entonces la salida debería ser I'm thinking [of]
.
Casos de prueba adicionales:
I don't know what I'm doing with my life.
is converted to
I [just wanna tell you how I'm feeling] don't know [the rules and so do I] what I'm [thinking of] doing with my life.
Many additional solutions are possible, since words like `I` appear multiple times.
Will someone please save me from these memes?
is converted to
Will someone please save me from [any other guy] these memes?
Two strangers walked into a bar. One said "hello." The other said "goodbye."
is converted to
Two strangers [to love] walked into a [lie and hurt you] bar. One said "hello." The [rules and so do I] other [guy] said "goodbye."
Desafío inspirado en este tipo .
from
debería llegar a serfrom [any other guy]
).Respuestas:
gawk, 316 + 377 = 693
El primer parámetro de línea de comando es el nombre de archivo de la letra (375 bytes + 2 para invocación = 377). Rickrolls todos los demás archivos. Imprime a
stdout
.Sin golf
Resultados de la prueba
Entrada:
Salida:
fuente
what
yI'm
, que es una coincidencia "no codiciosa"). 2. Esto falla el tercer caso de prueba (convierte los dos espacios en uno). 3. Si almacena la letra en un archivo separado, debe contar ese archivo (así como también +2 para incluirlo en elawk
comando) en su conteo de bytes.awk
el código fuente.gonna run
(salida esperadagonna run [around and desert you]
, salida realgonna [tell a lie and hurt you] run [around and desert you]
). También todavía muerde múltiples espacios en una fila. Debe contar el archivo de letras en el recuento de bytes, ya que es una invocación no estándar delawk
programa.gawk
ahora la separación del campo para preservar el espacio. Pasa todos los casos de prueba ahora.