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 Red
más un delimitador al frente de las líneas impares, y Black
má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
+6
bytes.fuente
Haskell ,
104120113112111110 bytesPruébalo en línea!
Sin disculpas con la explicación
f
es una función que toma una lista de cadenas (también conocida como una lista de listas deChar
s) y devuelveMaybe
la 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 a
devuelveNothing
oJust 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<2
se sigue el segundo ( en el ejemplo de golf, que por supuesto siempre es cierto) y regresamosNothing
.zipWith
toma 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 : t
implí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:t
Guarda algunos bytes.f x|odd$length$x=Nothing|1<2=Just ...
mempty
ahorra 1 byte en comparación conNothing
!c="Red - ":"Black - ":c
y usando enc
lugar 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
0
parafalse
. 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
i
crea una variablei
fuera 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 sia
es 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]+1
huellas dactilares:i
es impar, "Negro" sii
es par (i%2?"Red":"Black"
)tolower(*s[i])
)s[i]+1
)Pruébalo en línea!
fuente
=0
parte 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