Dans l'interprétation musicale des Misérables, une chanson apparaît intitulée "Rouge et noir". Voici une partie de cette chanson:
Rouge - le sang des hommes en colère!
Noir - l'obscurité des âges passés!
Rouge - un monde sur le point de l'aube!
Noir - la nuit qui se termine enfin!
Votre tâche consiste à transformer l'entrée en un hymne retentissant «rouge et noir».
Contribution
Texte délimité par des retours à la ligne ou une saisie de texte appropriée similaire. Par exemple,
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!
L'entrée vide n'est pas définie (hors de portée).
Production
Si la longueur (nombre de lignes, ou longueur du tableau d'entrée, ou similaire) de l'entrée est impaire, sortez rien ou sortez falsey. Votre soumission peut ne pas générer d'erreurs ou tenter de produire la sortie correcte.
Sinon, transformez l'entrée en paroles lyriques rouge / noir. Mettez toutes les lettres majuscules au début d'une ligne en minuscules. Ajoutez Red
plus un délimiteur à l'avant des lignes impaires et Black
plus un délimiteur (visible) à l'avant des lignes paires. Le délimiteur doit également être entouré d'espaces, de sorte que la sortie semble peu fréquentée (et non golfée;)).
Vous avez maintenant votre sortie.
Cas de test
Le délimiteur de sortie est -
.
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!
Réponses:
05AB1E , 26 octets
Code:
Utilise l' encodage 05AB1E . Essayez-le en ligne!
Explication:
la source
V ,
31, 30 octetsEssayez-le en ligne!
Hexdump:
C'est trivial dans V, mais le cas de bord des entrées impaires le rend difficile parce que V n'a pas vraiment de conditions. Heureusement, nous pouvons gérer cela au coût relativement faible d'
+6
octets.la source
Haskell ,
104120113112111110 octetsEssayez-le en ligne!
Non golfé avec explication
f
est une fonction qui prend une liste de chaînes (alias une liste de listes deChar
s), et renvoieMaybe
la même chose. Les fonctions de Haskell sont assez "pures", et nous devons donc préciser que cette fonction peut ne rien retourner. (Une fonction de typeMaybe a
renvoie soitNothing
ouJust a
).L'
|
opérateur est un gardien - une sorte de conditionnel. La première branche est suivie sieven $ length $ x
(qui est une autre façon d'écrireeven (length x)
) l'estTrue
. Sinon, le second (1<2
dans l'exemple golfé, qui est bien sûr toujours vrai) est suivi et nous revenonsNothing
.zipWith
prend une fonction à deux arguments et l'applique à chaque élément de deux listes. La fonction que nous utilisons ici est\(h : t) x -> x ++ toLower h : t
.h : t
sépare implicitement le premier caractère de notre premier argument, qui est le genre de bonne chose que vous pouvez faire dans Haskell. La première liste est l'entrée (dont nous savons déjà qu'elle contient un nombre pair de lignes), et la seconde est juste alternant infiniment "Rouge -" et "Noir -" (les listes infinies sont une autre bonne chose qui est possible, cette fois parce que Haskell est paresseux - il ne se soucie que de quelque chose que vous utilisez).la source
(h:t)!x=x++toLower h:t
enregistre quelques octets.f x|odd$length$x=Nothing|1<2=Just ...
mempty
économise 1 octet par rapport àNothing
!c="Red - ":"Black - ":c
et en utilisantc
au lieu decycle["Red - ","Black - "]
: Essayez-le en ligne!Gelée , 29 octets
Un programme complet.
Utilise l'option de sortie "falsey" pour les entrées avec un nombre impair de lignes.
Essayez-le en ligne!
Comment?
la source
Japt ,
363534 octetsSorties
0
pourfalse
. Comprend un non imprimable après la secondeR
.Essayez-le en ligne
la source
C,
112107105103 10399 octets-4 grâce à ASCII uniquement
-2 grâce à Mego
Prend un "tableau" en entrée. Exemple:
Comment ça fonctionne
i
crée une variable eni
dehors de toutes les fonctions, ce qui signifie qu'elle est automatiquement initialisée à 0.main(a,s)char**s;{
déclare la fonction principale, qui prend deux arguments - unint a
(# d'arguments de ligne de commande) et unchar ** s
(tableau d'arguments de ligne de commande).for(;a%2&++i<a;)
est une boucle qui vérifie sia
est even (a%2
) et s'il est inférieur au nombre d'arguments de ligne de commande passés (i<a
).printf("%s - %c%s\n",i%2"Red":"Black",tolower(*s[i]),s[i]+1
impressions:i
est impair, "Noir" sii
est pair (i%2?"Red":"Black"
)tolower(*s[i])
)s[i]+1
)Essayez-le en ligne!
la source
=0
partie pour économiser 2 octets supplémentaires.Röda , 97 octets
Essayez-le en ligne!
la source
Gelée , 30 octets
Essayez-le en ligne!
la source
Rétine , 58 octets
Essayez-le en ligne!
la source
CJam, 41 octets
la source
JavaScript (ES6), 93 octets
Prend la chanson comme un tableau de lignes.
Afficher l'extrait de code
la source
Python 2 , 215-> 184-> 165 octets
Enregistré 31 octets selon le commentaire de Stephen S
Challenger5 est descendu à 165 octets
Essayez-le en ligne!
la source
Javascript, 118 octets
Tester
Afficher l'extrait de code
la source