Это то время года, когда многие из нас получают наши календари ! Если вы не знакомы с календарем приключений, это специальные календари, используемые для отсчета времени появления в преддверии Рождества. По моему опыту, двери расположены случайным образом, и в детстве веселее было работать там, где была дверь завтрашнего дня! Часто в наши дни календари имеют шоколадные конфеты за каждой дверью, но вместо того, чтобы покупать календарь в этом году, вы должны создать ASCII!
задача
Учитывая ввод целого числа ( n
) в диапазоне 0
- 24
, создайте календарь появления ASCII с n
открытыми пронумерованными дверями . Вы должны использовать один и тот же порядок , как в примере ниже: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
двери
Закрытая дверь должна быть:
.-----------.
| |
| |
| |
| nn |
|___________|
где n
представляет номер двери (начальные нули необязательны), а открытая дверь:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
кроме двери 24, которая вместо этого:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Эти двери расположены в рамке из 37 строк по 79 символов, с двумя пробелами между каждым столбцом и пустой строкой между каждым рядом.
Открытые двери
Когда двери открыты, вы должны показать одну из фотографий (извинительно связанных с Рождеством - извинения за мои ужасные художественные навыки!) Ниже в двери:
. _ . _'_ + .^o _(")_ _n_ $ .
}\O/{ ) (^.^_ /~\ (';') (_ . _) (") |,| __/ \__
}/*\{ \./v`v' /~*~\ {\|+|/} / : \ >( o )< | | `. .'
/***\ oO8 /~*~~*\ d-b (_/ \_) ( o ) ._|_|_. /.^.\
.\^/. ____ __.==,_ .*. _ _ . . . _______ _ _
<->o<-> /_%_/| --|XX|- /.\ (O X O) .i_i_i. _j_j_j_ ( `v' )
'/v\` |_|_| | _| | |_-_| / ^ \ |-~~-~| ||__| \ /
|_|_|/ (____' (.-o-.) \/ \/ |_____| _|/$$|_ V
i |~| //'`\ |=| _{/ _{/ , * \ ==== b
.'%'. | | //....\ / \ \_/ + . + \\\|+-| .'''.
|^~~.~| Y ||()()| |(%)| /O \ . ' . \\\\\+| {*=*=*}
_'._.'_ _|_ ||_[]_| |___| @__,/\\ ~~~~~~~ \\\\\\\ '._.'
_ | _ | .W. .W. .&%$+*. \O/ .;' ..,.;.. ('v')
.'.'O | ($) | |*| |*| */'"'\& [ ]|_. .m_. |\\|//| // \\
/___\ | " o| |*| |*| $\._./% |_____) C| | \\|// |\ /|
(_____) | === | 'M' 'M' '%&*+$' ------' |__| _=|=_ Y Y
\ / .==. .-. -._.- __/\__ ... .-.
._o_O_. .--' | \| |/ .+. \_\/_/ '* ` //`);
|/\/\/| \_____/ /| |\ ( W ) /_/\_\ |_/\*_| %%
""""""" `=====' '-' `"` \/ [_____] //
Каждое изображение имеет длину 7 символов и занимает 4 строки, чтобы они помещались в окнах. Вы можете выбрать любое из вышеперечисленных изображений и использовать их в любом порядке, но вы не можете повторить изображение. Для 24-го, вы также должны добавить сообщение:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
который помещается рядом с одним из вышеупомянутых изображений, вы можете выбрать, будет ли текст справа или слева от изображения.
Примеры
Учитывая данные 0
, выведите календарь без открытых дверей:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 2 | | 17 | | 8 | | 12 | | 1 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 6 | | 11 | | 20 | | 5 | | 22 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 3 | | 10 | | 15 | | 23 | | 7 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 4 | | 13 | | 19 | | 21 | | 14 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
|_____________________________________________________________________________|
Для ввода 5
выведите нечто похожее на:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | | | | | |\ __.==,_ | |
| | | }\O/{ | | | | | | | | | --|XX|- | |
| | | }/*\{ | | | | | | | | | _| | | |
| | | /***\ | | 17 | | 8 | | 12 | | | (____' | |
| | |_________| |___________| |___________| |___________| | |_________| |
| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | |\ _{/ _{/ | | | |
| | | | | | | | | \_/ | | | |
| | | | | | | | | /O \ | | | |
| | 6 | | 11 | | 20 | | | @__,/\\ | | 22 | |
| |___________| |___________| |___________| | |_________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | | | | | | | | | |
| | | (") | | | | | | | | | |
| | | >( o )< | | | | | | | | | |
| | | ( o ) | | 10 | | 15 | | 23 | | 7 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | | | | | | | | | |
| | | /~\ | | | | | | | | | |
| | | /~*~\ | | | | | | | | | |
| | | /~*~~*\ | | 13 | | 19 | | 21 | | 14 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
|_____________________________________________________________________________|
Для ввода 14
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | 17 | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| |___________| | |_________| | |_________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | | | |\ _{/ _{/ | | | |
| | | .'.'O | | | |,| | | | | | \_/ | | | |
| | | /___\ | | | | | | | | | | /O \ | | | |
| | | (_____) | | | ._|_|_. | | 20 | | | @__,/\\ | | 22 | |
| | |_________| | |_________| |___________| | |_________| |___________| |
| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | | | | | |\ |=| | |
| | | (") | | | (_ . _) | | | | | | | / \ | |
| | | >( o )< | | | / : \ | | | | | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | 15 | | 23 | | | |___| | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | |\ \ ==== | | | | | |
| | | | | \\\|--| | | | | | |
| | | | | \\\\\-| | | | | | |
| | 16 | | | \\\\\\\ | | 24 | | 18 | |
| |___________| | |_________| |__________________________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | | | | | |\ i | |
| | | /~\ | | | + . + | | | | | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | | | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | 19 | | 21 | | | _'._.'_ | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
|_____________________________________________________________________________|
Для ввода 24
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | |\ //''\ | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | //....\ | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | ||()()| | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | | ||_[]_| | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | |\ |~| | |\ _{/ _{/ | |\ . . . | |
| | | .'.'O | | | |,| | | | | | | | | \_/ | | | .i_i_i. | |
| | | /___\ | | | | | | | | Y | | | /O \ | | | |-~~-~| | |
| | | (_____) | | | ._|_|_. | | | _|_ | | | @__,/\\ | | | |_____| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | |\ | _ | | |\ .W. .W. | |\ |=| | |
| | | (") | | | (_ . _) | | | | ($) | | | | |*| |*| | | | / \ | |
| | | >( o )< | | | / : \ | | | | " o| | | | |*| |*| | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | | | === | | | | 'M' 'M' | | | |___| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-------------------------- .-----------. |
| |\ _ _ | |\ \ ==== | |\ .&%$+*. ~ | |\ \O/ | |
| | | (O X O) | | | \\\|--| | | | */'"'\& ~ MERRY ~ | | | [ ]|_. | |
| | | / ^ \ | | | \\\\\-| | | | $\._./% ~ CHRISTMAS! ~ | | | |_____) | |
| | | \/ \/ | | | \\\\\\\ | | | '%&*+$' ~~~~~ | | | ------' | |
| | |_________| | |_________| | |________________________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | |\ | | |\ .*. | |\ i | |
| | | /~\ | | | + . + | | | .'''. | | | /.\ | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | {*=*=*} | | | |_-_| | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | | '._.' | | | (.-o-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
правила
Это код-гольф, поэтому выигрывает самый короткий код в байтах на каждом языке.
- Любой разумный формат может быть использован для ввода-вывода, если он согласован.
- Подойдет любое количество пробелов до и после календаря, а также дополнительные пробелы / непечатные элементы в конце каждой строки, но ничего перед каждой строкой, поскольку они должны вмещаться в 80 символов.
- Все стандартные лазейки запрещены.
Спасибо
Джеймс Холдернесс за предоставление изображений в формате ASCII!
Ответы:
Древесный уголь ,
676 639 614 607 598 590 564561 байтПопробуйте онлайн!
Здесь у вас есть подробный вариант кода , вполне понятный. Мой подход противоположен @ Нейлу. Он рисует все подарки, а затем покрывает те, которые не нужны. Я рисую только необходимые подарки.
источник
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
...",k,Add(k,7))));
вместоfor (4)
цикла.l
выбору древесного угля ...Древесный уголь , 666 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Не совсем в гольф, но я не уверен, что хочу ...
Попробуйте онлайн! Ссылка на подробную версию кода. Это версия, которая разыгрывает подарки отдельно для
577541530 байт после того, как я украл несколько идей из @Charlie для игры в гольф еще на несколько байт.источник
Python 2 ,
132213191287126510611059105610321030 байтПопробуйте онлайн!
-4 байта благодаря Mr.Xcoder
-24 байта благодаря Линн
Сжатая версия (спасибо Линн и Овсу):
Python 2 ,
102110171013 байтПопробуйте онлайн!
источник
Befunge,
122011981186 байтПопробуйте онлайн!
Вполне возможно, что это можно сделать еще дальше, сжимая изображения, но для этого, вероятно, потребуется использование расширенных символов ASCII, которые в настоящее время не поддерживаются в TIO.
источник
Python 3 + numpy,
1164115911231103109710651061996994 байтаСожмите все вещи и используйте NumPy, чтобы связать их вместе.
Сначала постройте закрытые двери, затем замените двери, которые необходимо открыть. Наконец, выведите все.
-22 байта благодаря мистеру Xcoder .
-5 байт благодаря нотаджану .
РЕДАКТИРОВАТЬ: <1000 байтов!
Попробуйте онлайн!
источник
C (gcc) ,
12961291121111661164 байтаЭта супер-длинная строка, хотя (59% всего этого!). Там золото в этих холмах; Я чувствую это.
Изменить: Если есть золото, я нашел только пятнышки до сих пор.
Редактировать: -2 байта благодаря потолку
Попробуйте онлайн!
Версия без ASCII
-30 байт благодаря потолку .
GCC на моей машине выдает что-то, что немедленно выходит из строя, поэтому маловероятно, что я буду преследовать этот форк. (Не говоря уже о том, что TiO по какой-то причине считает 1120 байт (так же, как и его количество символов).).
Идеальная ссылка
источник
C (gcc) ,
279819761963...186217421703165116341632 байта-2 байта благодаря потолку
Я заменил несколько значков, чтобы избежать ненужных символов ESC '\'.
Попробуйте онлайн!
источник
Рубин , 966 байт
Попробуйте онлайн!
Больше в гольфе, но сложнее увидеть картинки в коде.
Рубин , 974 байта
Это функция, назначаемая переменной, такой как
f
и называемой какf[n]
. Он печатает на стандартный вывод.Получилось дольше, чем ожидалось. Я думаю, что нужно выжать еще несколько байтов, по-разному выкладывая данные изображения, что я попробую позже.
Я использую симметричные или почти симметричные картинки, и только правая половина найдена в коде. Левая половина может иметь до 5 замен символов по сравнению с правой. Код для подстановок довольно длинный, что частично сводит на нет сжатие. Сохранено только около 60 байтов.
Попробуйте онлайн!
источник
Clojure , 1530
Попробуйте это
Решение о замыкании, вероятно, может быть немного короче, но вот моя первая попытка.
источник