Una placa de bronce en el pedestal de la Estatua de la Libertad muestra el poema " El nuevo coloso " de Emma Lazarus, parte del cual dice:
Dame tu cansado, tu pobre,
tus masas acurrucadas que anhelan respirar libremente,
la basura miserable de tu orilla llena.
¡Envíenme a estos, los desamparados, la tormenta de lluvia,
levanto mi lámpara al lado de la puerta dorada!
Para simplificar esta sección del poema para este desafío, lo pondremos todo en mayúscula y reemplazaremos las nuevas líneas con barras ( /
), manteniendo las comas y otros signos de puntuación como es:
GIVE ME YOUR TIRED, YOUR POOR,/YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,/THE WRETCHED REFUSE OF YOUR TEEMING SHORE./SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,/I LIFT MY LAMP BESIDE THE GOLDEN DOOR!
Llamaremos a esta cadena S. Tiene md5 hash 8c66bbb9684f591c34751661ce9b5cea
. Opcionalmente, puede suponer que tiene una nueva línea final, en cuyo caso el hash md5 es 0928ff6581bc207d0938b193321f16e6
.
Escriba un programa o función que tome una sola cadena. Cuando la cadena es S, salida en orden , una por línea, las seis frases que describen el tipo de personas que el poema representa a Lady Liberty pidiendo:
TIRED
POOR
HUDDLED MASSES YEARNING TO BREATHE FREE
WRETCHED REFUSE OF YOUR TEEMING SHORE
HOMELESS
TEMPEST-TOST
(Esta cadena precisa, opcionalmente seguida de una nueva línea final, debe ser su salida para la entrada S.)
Para al menos una cadena de entrada que no es S, su salida debe ser cualquier cadena distinta de las seis líneas anteriores. Esto podría ser tan simple como generar solo TIRED
si la entrada es solo GIVE ME YOUR TIRED
. Esta regla es para evitar la codificación pura. De lo contrario, cuando la cadena de entrada no es S, su código puede hacer cualquier cosa.
Esto es esencialmente un desafío de salida constante donde se le da una entrada que está relativamente cerca de la salida. Por supuesto, podría ignorar la entrada y codificar la salida, pero puede ser mejor, por ejemplo, quitar las subcadenas de la entrada necesaria para la salida.
Como referencia, aquí están los índices basados en cero y las longitudes de las seis líneas de salida en S:
13 5, 25 4, 36 39, 81 37, 136 8, 146 12
El código más corto en bytes gana.
fuente
Respuestas:
Jalea , 19 bytes
Pruébalo en línea! o inténtalo con otro texto .
¿Cómo?
Índices en la lista de todos los sectores contiguos no vacíos de la cadena de entrada y se une con los avances de línea.
Código anterior, 22 bytes:
Particiona la cadena de entrada, toma cada segundo elemento y se une con los avances de línea.
“ÇŒȷœ%LRw⁹ƊƓɠ‘
es una lista de índices de páginas de códigos,Ṭ
hace una lista de ceros con unos en esos índices,œṗ
divide la entrada en los índices verdaderos de esa lista,Ḋ
elimina el primer elemento,m2
toma cada segundo elemento y seY
une con los avances de línea.fuente
JavaScript (ES6),
12869 bytesPuede generar líneas vacías o algo de basura cuando la entrada es diferente de
S
.fuente
Bash ,
766560 bytesPruébalo en línea!
fuente
Mathematica , 71
fuente
PowerShell , 72 bytes
Pruébalo en línea!
Explicación
Esta es una solución regex bastante mala.
Dividiendo la cadena en una matriz en
/
o.
o,
y luego reemplazando partes de cada cadena que coinciden con el primer patrón, lo que da una matriz de-replace
cadenas d, luego usa el-match
operador para devolver una matriz de los elementos que coinciden con el segundo patrón (que se elimina de las líneas en blanco y 2 líneas que no se filtraron antes).fuente
Mathematica, 86 bytes
Función sin nombre que toma una lista de caracteres como entrada y devuelve una cadena. Simplemente extrae las subcadenas relevantes de la entrada y concatena con nuevas líneas.
fuente
String
sino una lista deCharacter
s.TI-Basic, 58 bytes
Muy sencillo
Disp
es comoprintln
, entonces hay nuevas líneas en el medio.fuente
Retina ,
3832 bytesProbablemente se pueda mejorar, ¡pero este es un trabajo para expresiones regulares!
Pruébalo en línea!
fuente