Завтра, 23 ноября, в Соединенных Штатах будет День Благодарения . Для приготовления нужно приготовить несколько индеек ASCII. Однако, поскольку вы опоздали с планированием, вам нужна программа (или функция), чтобы помочь вам определить, сколько птиц вам нужно подготовить.
.---. _
.' './ )
/ _ _/ /\
=(_____) (__/_/==
===================
Индюки, которых вы нашли, довольно малы, поэтому вы вычислили следующие соотношения - одна индейка будет кормить:
- четыре человека, которые любят только белое мясо, и три человека, которые любят только темное мясо
- или семь человек, которым все равно
- или их комбинация.
Это означает, что в каждой индейке есть 4 порции белого мяса и 3 порции темного мяса. Кроме того, вы не можете купить и приготовить частичную индейку.
Например, для 3 человек, которые любят только белое мясо, 6 человек, которые любят только темное мясо, и 3 человек, которым все равно, вам понадобятся две индейки. Это дает 8 порций белого и 6 порций темного, что достаточно, чтобы удовлетворить всех и иметь немного оставшегося белого мяса:
.---. _ .---. _
.' './ ) .' './ )
/ _ _/ /\ / _ _/ /\
=(_____) (__/_/== =(_____) (__/_/==
=====================================
Для 20 человек, которым все равно, вам понадобятся три индейки, и у вас останется немного белого или темного остатка:
.---. _ .---. _ .---. _
.' './ ) .' './ ) .' './ )
/ _ _/ /\ / _ _/ /\ / _ _/ /\
=(_____) (__/_/== =(_____) (__/_/== =(_____) (__/_/==
=======================================================
И так далее.
правила
- Три входа могут быть в любом порядке по вашему выбору и в любом удобном формате . Пожалуйста, укажите в своем ответе, как вводится.
- Никогда не будет потребности в более чем 25 индюках (таким образом, максимум 175 человек, чтобы накормить).
- Лидирующие / завершающие символы новой строки или другие пробелы являются необязательными, при условии, что символы выстраиваются соответствующим образом.
- Допустимы либо полная программа, либо функция. Если функция, вы можете вернуть вывод, а не распечатать его.
- Вывод может быть на консоль, возвращен в виде списка строк, возвращен в виде одной строки и т. Д.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
Befunge-93,
231224 байтаПопробуйте онлайн!
Три значения читаются из стандартного ввода в следующем порядке: белое мясо, темное мясо, все равно.
источник
APL (Dyalog) ,
120118104 байта14 байтов сохранено благодаря @ Adám
Попробуйте онлайн!
Придирчивый белый и темный справа, не придирчивый слева.
Жаль, что большая часть байтов в настоящее время занята строкой.
Как?
⍵,⍺++/⍵
- создает массив белых, темных и суммирует их всех плюс не придирки4 3 7÷⍨
- разделите, сколько из них получает свои пожелания от одной курицы⌈/
- возьмите наивысшую оценку из трех - поэтому, если у нас будет очень много искателей темного мяса, они не останутся в стороне⌈
- потолок, если востребована только половина курицыЗатем мы создаем строку, заключаем ее с
⊂
, затем повторяем закрытую матрицу, с которой рассчитываем количество цыплят/
, и, наконец, объединяем все цыплята с,/
.источник
'='⍪⍨' .-_''/)\=('[4 19⍴10 10⊤¯35+⎕UCS'###(##-:77-&(#F*####+,&0N&&)#,N0Z&d++#']
с⎕IO←0
.Python 2 , 142 байта
Попробуйте онлайн!
-16 байтов благодаря Линн
-4 байта благодаря мистеру Xcoder
и обратно к лямбде xD
источник
SOGL V0.12 , 65 байт
Попробуй здесь!
Порядок входов
white
,dark
и затемeither
.источник
Python 2 ,
197189174 байтаспасибо Эрику Аутгольферу за -12 байтов,
спасибо Джонатану Фреху за -1 байт
Попробуйте онлайн!
источник
Древесный уголь , 76 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Напечатайте индейку с отступом в 1 пробел.
Распечатать таблицу.
Введите количество едоков темного и белого мяса.
Повторите на один шаг меньше, чем максимум а) одной трети от количества едящих темное мясо б) одной четверти от количества едящих белое мясо в) одну седьмую от числа посетителей.
Сделайте копию индейки.
источник
Excel VBA,
222219211198 байтФункция анонимного непосредственного окна VBE, которая принимает входные данные из диапазона
[A1:C1]
с порядком белого мяса, темного мяса и безразличный в этом порядке и выводит в диапазон[D1]
.Вначале решение находит правильное количество индюков, а затем повторяет образец индейки много раз. В идеале это должно быть напрямую выведено в непосредственное окно VBE, как показано нижеприведенной функцией.
Эта версия изначально дает правильный ответ, однако она сразу же автоматически форматируется компилятором, как
_
и символ продолжения строки, и, таким образом, перемещается так, чтослева остается только один (пробел) символ, что нарушает шаблон.
Пример показан ниже для наглядности
Чтобы исправить это, последний символ пробела (
символ 160, Alt + 255)
, символ 32) перед
_
первой строкой в выводе заменяется неразрывным пробелом (-3 байта для использования
1
оператора разделения с разделителями-8 байт для использования перемещения
=
в разделение и добавления строки поверх конкатенации-13 байт для использования неразрывного пробела для предотвращения автоформатирования вывода
источник
Котлин ,
207198 байтспасибо Тейлор Скотт за -7 байт
Это еще не работает на TIO , так как требует Kotlin 1.1Попробуйте онлайн!
источник
JavaScript (ES6),
180179 байтВыводит массив строк.
Показать фрагмент кода
JavaScript (ES6),
182181 байтВыводит одну строку.
Показать фрагмент кода
-1 байт (Арнаулд):
a+3>>4
вместо(a+3)/4)
источник