En la interpretación musical de Les Miserables, aparece una canción llamada "Red and Black". Aquí hay parte de esa canción:
Rojo: ¡la sangre de los hombres enojados!
Negro: ¡la oscuridad del pasado!
Rojo: ¡un mundo a punto de amanecer!
Negro: ¡la noche que termina por fin!
Su tarea es convertir la entrada en un himno rotundo "rojo y negro".
Entrada
Texto delimitado por nuevas líneas o una entrada de texto adecuada similar. Por ejemplo,
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!
La entrada vacía no está definida (fuera de alcance).
Salida
Si la longitud (número de líneas, o la longitud de la matriz de entrada, o similar) de la entrada es impar, no envíe nada o envíe falsey. Su envío puede no generar errores o intentar generar el resultado correcto.
De lo contrario, convierta la entrada en una letra roja / negra. Convierta las letras mayúsculas al comienzo de una línea en minúsculas. Agregue Redmás un delimitador al frente de las líneas impares, y Blackmás un delimitador (visible) al frente de las líneas pares. El delimitador también debe estar rodeado de espacios, por lo que la salida parece no estar abarrotada (y sin campos).
Ahora tienes tu salida.
Casos de prueba
El delimitador de salida es -.
In:
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!
Out:
Red - the blood of angry men!
Black - the dark of ages past!
Red - a world about to dawn!
Black - the night that ends at last!
In:
test test
1
[][][]
BBB
Out:
Red - test test
Black - 1
Red - [][][]
Black - bBB
In:
I feel my soul on fire!
The color of desire!
The color of despair!
Out:
falsey OR nothing
In:
Red - I feel my soul on fire!
Black - My world if she's not there!
Out:
Red - red - I feel my soul on fire!
Black - black - My world if she's not there!

Respuestas:
05AB1E , 26 bytes
Código:
Utiliza la codificación 05AB1E . Pruébalo en línea!
Explicación:
fuente
V ,
31, 30 bytesPruébalo en línea!
Hexdump:
Esto es trivial en V, pero el caso límite de entradas impares lo hace complicado porque V realmente no tiene condicionales. Afortunadamente, podemos manejar esto a un costo relativamente pequeño de
+6bytes.fuente
Haskell ,
104120113112111110 bytesPruébalo en línea!
Sin disculpas con la explicación
fes una función que toma una lista de cadenas (también conocida como una lista de listas deChars) y devuelveMaybela misma. Las funciones de Haskell son bastante "puras", por lo que debemos dejar en claro que esta función puede no devolver nada. (Una función de tipoMaybe adevuelveNothingoJust a).El
|operador es un guardia, una especie de condicional. La primera rama se sigue sieven $ length $ x(que es otra forma de escrituraeven (length x)) esTrue. De lo contrario,1<2se sigue el segundo ( en el ejemplo de golf, que por supuesto siempre es cierto) y regresamosNothing.zipWithtoma una función de dos argumentos y la aplica a cada elemento de dos listas. La función que estamos usando aquí es\(h : t) x -> x ++ toLower h : t.h : timplícitamente divide el primer personaje de nuestro primer argumento, que es el tipo de cosa buena que puedes hacer en Haskell. La primera lista es la entrada (que ya sabemos contiene un número par de líneas), y la segunda es simplemente alternando infinitamente "Rojo -" y "Negro -" (las listas infinitas son otra cosa buena que es posible, esta vez porque Haskell es perezoso: solo le importa la cantidad de algo que usa).fuente
(h:t)!x=x++toLower h:tGuarda algunos bytes.f x|odd$length$x=Nothing|1<2=Just ...memptyahorra 1 byte en comparación conNothing!c="Red - ":"Black - ":cy usando enclugar decycle["Red - ","Black - "]: ¡ Pruébelo en línea!Jalea , 29 bytes
Un programa completo
Utiliza la opción de salida "falsey" para entradas con un número impar de líneas.
Pruébalo en línea!
¿Cómo?
fuente
Japt ,
363534 bytesSalidas
0parafalse. Incluye un no imprimible después del segundoR.Pruébalo en línea
fuente
C,
11210710510399 bytes-4 gracias a ASCII-only
-2 gracias a Mego
Toma una "matriz" como entrada. Ejemplo:
Cómo funciona
icrea una variableifuera de todas las funciones, lo que significa que se inicializa automáticamente a 0.main(a,s)char**s;{declara la función principal, que toma dos argumentos: unint a(# de argumentos de línea de comando) y unchar ** s(conjunto de argumentos de línea de comando).for(;a%2&++i<a;)es un bucle que comprueba siaes par (a%2) y si es menor que el número de argumentos de línea de comando pasadosi<a).printf("%s - %c%s\n",i%2"Red":"Black",tolower(*s[i]),s[i]+1huellas dactilares:ies impar, "Negro" siies par (i%2?"Red":"Black")tolower(*s[i]))s[i]+1)Pruébalo en línea!
fuente
=0parte para guardar 2 bytes más.Röda , 97 bytes
Pruébalo en línea!
fuente
Jalea , 30 bytes
Pruébalo en línea!
fuente
Retina , 58 bytes
Pruébalo en línea!
fuente
CJam, 41 bytes
fuente
JavaScript (ES6), 93 bytes
Toma la canción como una serie de líneas.
Mostrar fragmento de código
fuente
Python 2 , 215-> 184-> 165 bytes
Guardado 31 bytes según el comentario de Stephen S
Challenger5 lo bajó a 165 bytes
Pruébalo en línea!
fuente
Javascript, 118 bytes
Prueba
Mostrar fragmento de código
fuente