21 Прически Апокалипсиса
При наличии списка чисел от 1 до 21 (или от 0 до 20) выведите «сшитый» чертеж следующих граней ( см. Правила для сшивания информации ):
___ ,,, ooo === +++ ### -*~*-
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
*** ||| _/7 ))) ((( xxx @__
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Каждое уникальное лицо, указанное в новой строке (# - это целочисленный идентификатор лица):
___
(o o)
ooO--(_)--Ooo #1
,,,
(o o)
ooO--(_)--Ooo #2
ooo
(o o)
ooO--(_)--Ooo #3
===
(o o)
ooO--(_)--Ooo #4
+++
(o o)
ooO--(_)--Ooo #5
###
(o o)
ooO--(_)--Ooo #6
-*~*-
(o o)
ooO--(_)--Ooo #7
***
(o o)
ooO--(_)--Ooo #8
|||
(o o)
ooO--(_)--Ooo #9
_/7
(o o)
ooO--(_)--Ooo #10
)))
(o o)
ooO--(_)--Ooo #11
(((
(o o)
ooO--(_)--Ooo #12
xxx
(o o)
ooO--(_)--Ooo #13
@__
(o o)
ooO--(_)--Ooo #14
((_
(o o)
ooO--(_)--Ooo #15
>X<
(o o)
ooO--(_)--Ooo #16
'*`
(o o)
ooO--(_)--Ooo #17
^^^
(o o)
ooO--(_)--Ooo #18
)|(
(o o)
ooO--(_)--Ooo #19
\|/
(o o)
ooO--(_)--Ooo #20
&&&
(o o)
ooO--(_)--Ooo #21
Лицо выглядит следующим образом:
hhhhh
(o o)
ooO--(_)--OooS
Где h
динамическая апокалиптическая прическа и S
потенциальная черта сшивания.
Примеры
Входные данные: [1,2,3,4,5]
Выход:
___ ,,, ooo === +++
(o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Входные данные: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
Выход:
___ ,,, ooo === +++ ### -*~*- *** ||| _/7 ))) ((( xxx @__ ((_ >X< '*` ^^^ )|( \|/ &&&
(o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
Вход: ["Fraggle Rock"]
/ [22]
/ [-21041024]
/[22,23,24,25,26]
Выход: Nobody cares.
Входные данные: [1,1,1,1]
Выход:
___ ___ ___ ___
(o o) (o o) (o o) (o o)
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
правила
- Предшествующий и завершающий переводы строк / пробелов / дефиса в порядке.
- Лица могут появляться более одного раза на входе.
- Если на входе указан недопустимый номер, возможно, у вас неопределенное поведение.
- Шить:
- Сшитые грани будут объединены одним дефисом в нижней (3-й) строке.
- Все грани будут на одной линии (в отличие от первого рисунка).
- Входные данные могут быть проиндексированы 0 или 1, где 20 - максимум для 0, 21 - для 1.
- Это код-гольф , побеждает наименьшее количество байтов.
Ответы:
Japt
-R
,12211711311010910710510410310210099 байт1-индексированный, с индексным переносом. Я следовал спецификации здесь, которая требует дефис между последней строкой каждого лица, а не тестовые случаи, которые включают дефис после последней строки каждого лица.
Попытайся
источник
&
чтобы воспользоватьсяm³
было гением. Тем более, что это сделало это на 1 основе.&
туда, если бы сделал это на основе 1;) Все еще чувствую, что здесь есть еще кое-что для гольфа, но уже поздно, поэтому придется подождать до завтра.Python 2 , 209 байт
Попробуйте онлайн!
Индексирование на основе 0; ничего особенно умного здесь, только данные, доступные через разрезание и использование exec вместо цикла.
источник
Древесный уголь ,
103102 байтаПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Зациклите вход дважды. Каждый результат затем неявно печатается в отдельной строке.
Во втором цикле просто создайте глаза.
Завернуть прическу 6 в
-
с, остальные прически в прыщах.Извлеките три символа прически из сжатой строки.
Вставьте девять пробелов между волосами или глазами.
Переместите 4 пробела влево.
Распечатайте остальные лица, соединенные с
-
.источник
R ,
413391 байтСпасибо Джузеппе за 22 байта меньше и получая это под 400 байтов.
Попробуйте онлайн!
источник
utf8ToInt
иintToUtf8
rep
чтобы сократить:for(i in s)K(I(c(rep<--
JavaScript (ES6),
200199 байтОжидается 1-индексированный ввод.
Попробуйте онлайн!
комментарии
источник
Рубин , 164 байта
Ноль индексируется. Попробуйте онлайн!
Все сложные вещи происходят в верхней строке.
"_,o=+# *| )(x ^ &"
содержит все прически с 3 одинаковыми символами, из которых мы выбираемi
символ,j
.Если
j
это не пробел, следующее выражение возвращает 3 копии символа. Если это пробел, мы выбираем правильную прическу между%w{}
. «Странные» прически имеют номера 6,9,13,14,15,16,18,19 иi%11-2
дают идеальный хэш0..7
Все, что остается, - это заполнить 14 пробелов (по центру) и напечатать соответствующее количество середин / оснований.
источник
center(14)
Python 2 , 204 байта
Попробуйте онлайн!
источник
Java 8,
273263 байтаПопробуйте онлайн.
Объяснение:
источник
R ,
247242 байтПопробуйте онлайн!
Теперь пытаемся привести R к более управляемому количеству байтов ...
Поскольку манипулирование персонажами в R настолько безнадежно многословно, я остановился на том, чтобы перечислить все образцы лица и прически как есть. Для красивой печати причесок я использую
format
функцию сjustify="centre"
. К сожалению, нам нужно использовать дополнительный символ заполнения,i==20
потому чтоformat
вычисляет заполнение так, как будто экранированный обратный слеш экранирован, как\\|/
.Текущая версия не использует конечный дефис.
Изменить: Кредит для JayCe за -2 и Джузеппе за -3 байта.
источник
justify="centre"
что, возможно, смогу снова его использовать. Минус два"/"=rep
format(h[i],,,,"c",14+!20-i)
*
выглядит еще лучше - теперь это похоже наstring * number
операцию, характерную для многих других языков!C! ( C-Wow 1.1.0), 251 байт
(Требуется передать аргументы при выполнении программы, разделенные пробелом)
Безголовая версия:
источник
Красный ,
333319 байтПопробуйте онлайн!
источник
Рубин , 163 байта
Попробуйте онлайн!
0 индексированные. Я возился с ответом Level River St и нашел другой подход для кодирования причесок, по-видимому, похожего на гольфистость. Здесь мы рассматриваем «самую длинную» 5-символьную стрижку как особый случай, тривиальные шаблоны в первой части списка кодируются по 1 символу каждый, а во второй части все 3-символьные шаблоны перечислены буквально, независимо от того, эти символы различны или нет. Наконец прибывает шаблон обезьяны лица.
источник
C (gcc) ,
210212 байтов-4 байта благодаря потолку . (Он снова вырос, когда я исправил ошибку, которая была в исходном коде.)
Довольно просто.
Попробуйте онлайн!
источник
PowerShell ,
187171 байт-16 байт благодаря маззи
Попробуйте онлайн!
0-индексированный, имеет конечный дефис.
раскатали:
Ничего особенного. Только в первой строке есть приличная логика. Он индексирует в строку волос с помощью
$current_entry_value*3
иs
удаляет этот кусок с помощью убстринаg
, прежде чем объединить все куски в одну большую строку. Я столкнулся с проблемой «выхода из следующей каретки», и мне стало интересно, почему я получаю ошибку IndexOutOfBounds, но она исправлена. Теперь используем гораздо лучший способ объединить первую строку.195 байт, чтобы следовать спецификации без начальных / конечных дефисов
источник
Python 3 , 240 байт
Попробуйте онлайн!
источник
Рунические чары , 313 байт
Попробуйте онлайн!
Разумно компактный с точки зрения сжатия строк и повторного использования сегментов, где это возможно, а также использования входных значений в качестве прямых смещений прыжка при
B
ранчо.Если допускается избыточное конечное пространство, его можно сократить на 2 байта, пропустив
4-
в последней строке. +2 байта для a,1-
если-
предполагается, что финала не будет (соответствие спецификации, нарушение примеров).Кусок,
" (o o) "
раздражающий, невозможно сжать, так как конструирование его с использованием таких вещей, как" "4*
получается одинаковое количество байтов.Проходные входы> 21 делают забавные вещи. Например, один 22 дает бритье .
источник