В музыкальном исполнении Les Miserables появляется песня под названием «Red and Black». Вот часть этой песни:
Красный - кровь злых людей!
Черный - тьма прошлых веков!
Красный - мир на заре!
Черный - ночь, которая заканчивается наконец!
Ваша задача состоит в том, чтобы превратить вход в звучащий гимн «Красно-черный».
вход
Текст, разделенный символом новой строки, или аналогичный подходящий текстовый ввод. Например,
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!
Пустой ввод не определен (выходит за рамки).
Вывод
Если длина (количество строк или длина входного массива или аналогичная) ввода нечетна, либо ничего не выводите, либо выводите false. Ваша заявка может не выводить ошибки или пытаться вывести правильный вывод.
В противном случае, превратите вход в красно-черную лирику. Превратите любые заглавные буквы в начале строки в строчные. Добавьте Red
плюс разделитель в начале нечетных строк и Black
плюс (видимый) разделитель в начале четных строк. Разделитель также должен быть заключен в пробелы, поэтому выходные данные выглядят не переполненными (и не выгравированными;)).
Теперь у вас есть выход.
Тестовые случаи
Выходной разделитель есть -
.
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!
Ответы:
05AB1E , 26 байт
Код:
Использует кодировку 05AB1E . Попробуйте онлайн!
Объяснение:
источник
V ,
31, 30 байтовПопробуйте онлайн!
HexDump:
Это тривиально в V, но крайний случай нечетных входов делает его хитрым, потому что V на самом деле не имеет условных выражений. К счастью, мы можем справиться с этим при относительно небольшой стоимости
+6
байтов.источник
Haskell ,
104120113112111110 байтПопробуйте онлайн!
Неуправляемый с объяснением
f
это функция, которая принимает список строк (он же список списковChar
s) и возвращаетMaybe
то же самое. Функции Haskell довольно «чисты», и поэтому нам нужно прояснить, что эта функция может ничего не возвращать. (Функция типаMaybe a
возвращает либоNothing
илиJust a
).|
Оператор охранник - своего рода условный. За первой ветвью следует ifeven $ length $ x
(что является другим способом записиeven (length x)
)True
. В противном случае следует второй (1<2
в примере с гольфом, который, конечно, всегда верен), и мы возвращаемсяNothing
.zipWith
принимает функцию с двумя аргументами и применяет ее к каждому элементу двух списков. Функция, которую мы здесь используем\(h : t) x -> x ++ toLower h : t
.h : t
неявно отделяет первый символ от нашего первого аргумента, что является хорошей вещью, которую вы можете сделать в Haskell. Первый список - это входные данные (которые, как мы уже знаем, содержат четное число строк), а второй просто бесконечно чередует «Красный -» и «Черный -» (бесконечные списки - еще одна приятная вещь, которая возможна, на этот раз, потому что Haskell ленивый - он заботится только о том, что вы используете).источник
(h:t)!x=x++toLower h:t
сохраняет несколько байтов.f x|odd$length$x=Nothing|1<2=Just ...
mempty
экономит 1 байт по сравнению сNothing
!c="Red - ":"Black - ":c
и использовавc
вместоcycle["Red - ","Black - "]
: Попробуйте онлайн!Желе , 29 байт
Полная программа.
Использует опцию вывода "falsey" для входных данных с нечетным числом строк.
Попробуйте онлайн!
Как?
источник
Japt ,
363534 байтаВыходы
0
дляfalse
. Включает непечатный после второгоR
.Попробуйте онлайн
источник
C
11210710510399 байт-4 благодаря ASCII-только
-2 благодаря Mego
Принимает "массив" в качестве ввода. Пример:
Как это работает
i
создает переменнуюi
вне всех функций, что означает, что она автоматически инициализируется в 0.main(a,s)char**s;{
объявляет основную функцию, которая принимает два аргумента -int a
(количество аргументов командной строки) иchar ** s
(массив аргументов командной строки).for(;a%2&++i<a;)
это цикл, который проверяет,a
является ли even (a%2
) и меньше ли оно переданного количества аргументов командной строки (i<a
).printf("%s - %c%s\n",i%2"Red":"Black",tolower(*s[i]),s[i]+1
печатает:i
нечетный, «Черный», еслиi
четный (i%2?"Red":"Black"
)tolower(*s[i])
)s[i]+1
)Попробуйте онлайн!
источник
=0
часть, чтобы сохранить еще 2 байта.Рёда , 97 байт
Попробуйте онлайн!
источник
Желе , 30 байт
Попробуйте онлайн!
источник
Сетчатка , 58 байт
Попробуйте онлайн!
источник
CJam, 41 байт
источник
JavaScript (ES6), 93 байта
Принимает песню как массив строк.
Показать фрагмент кода
источник
Python 2 , 215-> 184-> 165 байт
Сохранено 31 байт в соответствии с комментарием Стивена С.
Challenger5 уменьшил его до 165 байт
Попробуйте онлайн!
источник
Javascript, 118 байт
Тестовое задание
Показать фрагмент кода
источник