W muzycznym wykonaniu Les Miserables pojawia się piosenka zatytułowana „Red and Black”. Oto część tej piosenki:
Czerwony - krew gniewnych ludzi!
Czarny - ciemność minionych wieków!
Czerwony - świat o świcie!
Czarny - noc, która w końcu się kończy!
Twoim zadaniem jest przekształcenie wkładu w hymn „Czerwony i czarny”.
Wejście
Tekst rozdzielany znakami nowej linii lub podobny odpowiedni sposób wprowadzania tekstu. Na przykład,
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!
Puste wejście jest niezdefiniowane (poza zakresem).
Wynik
Jeśli długość (liczba linii, długość tablicy wejściowej lub podobna) danych wejściowych jest nieparzysta, albo nic nie wysyłaj, albo wyjściowy falsey. Przesłanie może nie powodować wyświetlania błędów lub próby uzyskania prawidłowego wyniku.
W przeciwnym razie zmień dane wejściowe na tekst czerwony / czarny. Zmień dowolne wielkie litery na początku wiersza na małe. Dodaj Red
plus separator z przodu linii nieparzystych i Black
plus (widoczny) separator z przodu linii parzystych. Separator musi być również otoczony spacjami, aby wynik wyglądał na niezatłoczony (i niespokojny;)).
Masz teraz swój wynik.
Przypadki testowe
Ogranicznikiem wyjścia jest -
.
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!
Odpowiedzi:
05AB1E , 26 bajtów
Kod:
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
Wyjaśnienie:
źródło
V ,
31, 30 bajtówWypróbuj online!
Hexdump:
Jest to trywialne w V, ale przypadek na krawędzi nieparzystych danych wejściowych sprawia, że jest to trudne, ponieważ V tak naprawdę nie ma warunków warunkowych. Na szczęście możemy sobie z tym poradzić przy stosunkowo niewielkim koszcie
+6
bajtów.źródło
Haskell ,
104120113112111110 bajtówWypróbuj online!
Nie obeznany z wyjaśnieniem
f
jest funkcją, która pobiera listę ciągów znaków (zwaną także listą listChar
s) i zwracaMaybe
to samo. Funkcje Haskella są dość „czyste”, dlatego musimy wyjaśnić, że ta funkcja może niczego nie zwracać. (Funkcja typuMaybe a
zwraca alboNothing
alboJust a
).|
Operator jest strażnik - rodzaj warunkowe. Pierwszy oddział następuje, jeślieven $ length $ x
(co jest innym sposobem pisaniaeven (length x)
)True
. W przeciwnym razie następuje drugi (1<2
w golfowym przykładzie, który oczywiście jest zawsze prawdziwy) i wracamyNothing
.zipWith
przyjmuje funkcję dwóch argumentów i stosuje ją do każdego elementu dwóch list. Używamy tutaj funkcji\(h : t) x -> x ++ toLower h : t
.h : t
domyślnie dzieli pierwszą postać od naszego pierwszego argumentu, co jest przyjemną rzeczą, którą możesz zrobić w Haskell. Pierwsza lista to dane wejściowe (które, jak już wiemy, zawierają parzystą liczbę linii), a druga to po prostu nieskończenie naprzemienne „czerwone -” i „czarne -” (nieskończone listy to kolejna fajna rzecz, która jest możliwa, tym razem ponieważ Haskell jest leniwy - troszczy się tylko o tyle, ile używasz).źródło
(h:t)!x=x++toLower h:t
oszczędza niektóre bajty.f x|odd$length$x=Nothing|1<2=Just ...
mempty
oszczędza 1 bajt w porównaniu doNothing
!c="Red - ":"Black - ":c
i używającc
zamiastcycle["Red - ","Black - "]
: Wypróbuj online!Galaretka , 29 bajtów
Pełny program.
Używa opcji wyjściowej „falsey” dla danych wejściowych o nieparzystej liczbie linii.
Wypróbuj online!
W jaki sposób?
źródło
Japt ,
363534 bajtówWyjścia
0
dlafalse
. Obejmuje niedrukowalne po drugimR
.Wypróbuj online
źródło
C,
11210710510399 bajtów-4 dzięki tylko ASCII
-2 dzięki Mego
Pobiera „tablicę” jako dane wejściowe. Przykład:
Jak to działa
i
tworzy zmiennąi
poza wszystkimi funkcjami, co oznacza, że jest automatycznie inicjowana na 0.main(a,s)char**s;{
deklaruje funkcję główną, która przyjmuje dwa argumenty - anint a
(liczba argumentów wiersza poleceń) i achar ** s
(tablica argumentów wiersza poleceń).for(;a%2&++i<a;)
to pętla, która sprawdza, czya
jest parzysta (a%2
) i czy jest mniejsza niż liczba przekazanych argumentów wiersza poleceń (i<a
).printf("%s - %c%s\n",i%2"Red":"Black",tolower(*s[i]),s[i]+1
drukuje:i
jest nieparzysty, „Czarny”, jeślii
jest parzysty (i%2?"Red":"Black"
)tolower(*s[i])
)s[i]+1
)Wypróbuj online!
źródło
=0
część, aby zaoszczędzić jeszcze 2 bajty.Röda , 97 bajtów
Wypróbuj online!
źródło
Galaretka , 30 bajtów
Wypróbuj online!
źródło
Siatkówka , 58 bajtów
Wypróbuj online!
źródło
CJam, 41 bajtów
źródło
JavaScript (ES6), 93 bajty
Traktuje utwór jako szereg linii.
Pokaż fragment kodu
źródło
Python 2 , 215-> 184-> 165 bajtów
Zapisano 31 bajtów zgodnie z komentarzem Stephena S.
Challenger5 obniżył go do 165 bajtów
Wypróbuj online!
źródło
JavaScript, 118 bajtów
Test
Pokaż fragment kodu
źródło