Дано единственное целое число, x
где 0 <= x <= 91
выведите стопку бутылок пива с таким количеством бутылок (и полок). Для простоты я покажу только первые 6 бутылок и то, что будет для каждого из первых входов.
Вот стопка бутылок, каждое число - бутылка, которую вы должны удалить для этого ввода (1-индексированный):
Обратите внимание, что мы используем 91 вместо 99, потому что 99 приведет к нестабильной пачке бутылок.
пример
При отсутствии 0 бутылок ( x=0
):
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=============
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Полный вывод 0 смотрите здесь: https://pastebin.com/ZuXkuH6s
При 1
отсутствии бутылки ( x=1
):
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Еще раз, это первые две строки отсюда: https://pastebin.com/ZuXkuH6s (с удалением 1) ...
При отсутствии 2 бутылок:
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
[ДОПОЛНИТЕЛЬНЫЕ ВХОДЫ УДАЛЕНЫ]
При отсутствии 91 бутылки ( n = 91
):
:(
Вы должны вывести несчастное лицо, потому что у вас нет пива.
правила
- Бутылки должны быть удалены слева направо.
- Полки убираются, когда на полках не остается пива.
- Для ввода 0 вы выводите 91 бутылку, сложенную в треугольник.
- В нижнем ряду 13 бутылок, в верхнем - 1.
- 1 место между каждой бутылкой на каждой полке.
- Полки должны быть введены между каждым рядом бутылок.
- Полки могут использовать
=
,-
или#
как символ. - Полки должны быть на 3 шире (с каждой стороны), чем бутылки, которые они держат.
- Полки могут использовать
- Это код-гольф , выигрывает наименьшее количество байт.
Ответы:
Древесный уголь ,
9991 байтПопробуйте онлайн! Ссылка на подробную версию кода. На самом деле реальная версия составляет всего
8370 байт:Объяснение:
Заполните массив, предоставляя информацию о том, куда идут полки и как долго они находятся.
Напечатайте несчастное лицо, хотя это будет немедленно перезаписано первой бутылкой пива (если есть).
Переберите оставшиеся бутылки пива.
Проверьте, нужно ли рисовать полку.
Напечатайте полку и поместите ее в готовое положение, чтобы нарисовать следующую бутылку над ней.
Нарисуйте бутылку и подготовьте позицию, чтобы нарисовать другую бутылку.
источник
for
цикл. Этоwhile
цикл, поэтому я должен сделать что-то еще вручную.for
цикл был путь для продолжения ... 13 байтов сохранено! (Ну, мне немного повезло с легкостьюPython 3 ,
306299265253255252247244 байтаБыстрая попытка, может быть оптимизирована
Редактировать: -2 байта благодаря @MrXcoder
Редактировать: -32 байта, поскольку конечные пробелы не нужны
Изменить: -12 байтов путем объединения двух функций
Редактировать: -5 байт благодаря @ musicman523
Изменить: +7 байт, чтобы удалить полку после последнего ряда
Изменить: -3 байта
Изменить: -5 байт из-за того, что лямбда-функция используется только один раз на карте
Редактировать: -3 байта с помощью строковой функции
center
Попробуйте онлайн!
источник
d=
заголовок, поскольку он не является рекурсивным для -2 байтE
переменнуюJavaScript (ES6),
251256 байтИзменить: Сохранено 2 байта благодаря @dzaima .
Изменить: Добавлено 7 байт, чтобы исправить проблему с параметром.
:(
Вот (в основном) версия без гольфа:
Тестовый код
Показать фрагмент кода
источник
r
"макрос"; Я чувствовал, что мог бы быть более короткий метод, но ничто из того, что я пробовал, не сломало его.C (gcc) ,
360358 байтПопробуйте онлайн!
Объяснение:
источник
Python 2, 436 байт
Хлоп !!
Мой метод слишком многословен, но в любом случае: он по существу «рисует» каждый ряд бутылок, добавляет пробелы, а затем «стирает» все необходимое, печатая все, что осталось.
Халвард Хаммел намного лучше.
источник