In der musikalischen Wiedergabe von Les Miserables erscheint ein Lied namens "Red and Black". Hier ist ein Teil dieses Liedes:
Rot - das Blut wütender Männer!
Schwarz - die Dunkelheit vergangener Zeiten!
Rot - eine Welt, die kurz vor dem Morgengrauen steht!
Schwarz - die Nacht, die endlich endet!
Ihre Aufgabe ist es, Input in eine durchschlagende "Rot und Schwarz" -Hymne zu verwandeln.
Eingang
Durch Zeilenumbrüche begrenzter Text oder eine ähnliche geeignete Texteingabe. Beispielsweise,
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!
Leere Eingaben sind undefiniert (außerhalb des Gültigkeitsbereichs).
Ausgabe
Wenn die Länge (Anzahl der Zeilen oder Länge des Eingabearrays oder ähnlich) der Eingabe ungerade ist, geben Sie entweder nichts aus oder geben Sie Falsey aus. Ihre Übermittlung gibt möglicherweise keine Fehler aus oder versucht nicht, die richtige Ausgabe auszugeben.
Andernfalls verwandeln Sie den Eingang in einen rot / schwarzen Text. Drehen Sie alle Großbuchstaben am Zeilenanfang in Kleinbuchstaben. Fügen Sie Red
plus ein Trennzeichen vor ungeraden Linien und Black
plus ein (sichtbares) Trennzeichen vor geraden Linien ein. Das Trennzeichen muss auch von Leerzeichen umgeben sein, damit die Ausgabe nicht überfüllt (und nicht überfüllt) aussieht.
Sie haben jetzt Ihre Ausgabe.
Testfälle
Ausgangsbegrenzer ist -
.
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!
Antworten:
05AB1E , 26 Bytes
Code:
Verwendet die 05AB1E- Codierung. Probieren Sie es online aus!
Erläuterung:
quelle
V ,
31, 30 BytesProbieren Sie es online aus!
Hexdump:
Dies ist in V trivial, aber der Randfall von ungeraden Eingaben macht es schwierig, weil V nicht wirklich Bedingungen hat. Zum Glück können wir dies zu relativ geringen Kosten für
+6
Bytes erledigen .quelle
Haskell ,
104120113112111110 BytesProbieren Sie es online aus!
Ungolfed mit Erklärung
f
ist eine Funktion, die eine Liste von Zeichenfolgen (auch als Liste von Listen vonChar
s bezeichnet) verwendet undMaybe
dieselbe zurückgibt . Haskells Funktionen sind ziemlich "rein", und deshalb müssen wir klarstellen, dass diese Funktion möglicherweise nichts zurückgibt. (Eine Funktion vom TypMaybe a
gibt entwederNothing
oder zurückJust a
).Der
|
Bediener ist ein Wachmann - eine Art Bedingung. Dem ersten Zweig folgt ifeven $ length $ x
(was eine andere Schreibweise isteven (length x)
)True
. Ansonsten1<2
folgt der zweite ( im Golfbeispiel, was natürlich immer zutrifft) und wir kehren zurückNothing
.zipWith
Nimmt eine Funktion mit zwei Argumenten und wendet sie auf jedes Element von zwei Listen an. Die Funktion, die wir hier verwenden, ist\(h : t) x -> x ++ toLower h : t
.h : t
spaltet implizit das erste Zeichen von unserem ersten Argument ab, was eine nette Sache ist, die Sie in Haskell tun können. Die erste Liste ist die Eingabe (von der wir bereits wissen, dass sie eine gerade Anzahl von Zeilen enthält), und die zweite ist nur unendlich abwechselnd "Rot -" und "Schwarz -" (unendliche Listen sind eine weitere nette Sache, die möglich ist, diesmal, weil Haskell es ist faul - es kümmert sich nur um so viel von etwas, wie Sie verwenden).quelle
(h:t)!x=x++toLower h:t
spart einige Bytes.f x|odd$length$x=Nothing|1<2=Just ...
mempty
spart 1 Byte im Vergleich zuNothing
!c="Red - ":"Black - ":c
und Verwendungc
stattcycle["Red - ","Black - "]
: Online ausprobieren!Gelee , 29 Bytes
Ein vollständiges Programm.
Verwendet die Ausgabeoption "falsey" für Eingaben mit einer ungeraden Anzahl von Zeilen.
Probieren Sie es online aus!
Wie?
quelle
Japt ,
363534 BytesAusgänge
0
fürfalse
. Beinhaltet eine nicht druckbare nach der SekundeR
.Probieren Sie es online aus
quelle
C
11210710510399 Bytes-4 dank ASCII-only
-2 dank Mego
Nimmt ein "Array" als Eingabe. Beispiel:
Wie es funktioniert
i
Erstellt eine Variablei
außerhalb aller Funktionen, dh sie wird automatisch auf 0 initialisiert.main(a,s)char**s;{
deklariert die Hauptfunktion, die zwei Argumente akzeptiert - ein (Anzahl der Befehlszeilenargumenteint a
) und einchar ** s
(Array der Befehlszeilenargumente).for(;a%2&++i<a;)
ist eine Schleife, die prüft, oba
gerade (a%2
) ist und weniger als die Anzahl der übergebenen Befehlszeilenargumente (i<a
).printf("%s - %c%s\n",i%2"Red":"Black",tolower(*s[i]),s[i]+1
Drucke:i
ungerade, "Schwarz" wenni
gerade (i%2?"Red":"Black"
)tolower(*s[i])
)s[i]+1
)Probieren Sie es online aus!
quelle
=0
Teil weglassen können , um 2 weitere Bytes zu speichern.Röda , 97 Bytes
Probieren Sie es online aus!
quelle
Gelee , 30 Bytes
Probieren Sie es online aus!
quelle
Netzhaut , 58 Bytes
Probieren Sie es online aus!
quelle
CJam, 41 Bytes
quelle
JavaScript (ES6), 93 Byte
Nimmt das Lied als eine Reihe von Zeilen.
Code-Snippet anzeigen
quelle
Python 2 , 215-> 184-> 165 Bytes
Gespeichert 31 Bytes gemäß Stephen S 'Kommentar
Challenger5 hat es auf 165 Bytes reduziert
Probieren Sie es online aus!
quelle
Javascript, 118 Bytes
Prüfung
Code-Snippet anzeigen
quelle