Вот тыква ASCII, вырезанная в Джек-о-Фонарь. Разве это не мило?
((^v^))
Вот призрак ASCII. Посмотрите, как это жутко!
\{O.O}/
Очевидно, тыквы должны быть на земле, с промежутком между ними, чтобы они не гнили.
Призраки, однако, любят стоять на вершине тыквы, поэтому они даже жуткие . Однако им приходится стоять на двух тыквах, иначе их призрачный вес раздавит тыкву под ними. Но из-за того, как работает их призрачная магия , несколько призраков могут складывать и делить тыквы, при условии, что призраки либо делятся равномерно на нижних тыкв или нижних призраков. Другими словами, образуя форму, похожую на человеческую пирамиду . Обратите внимание, что призраки не могут складываться на призраках, если под ними нет тыквы (так работает магия).
С учетом двух неотрицательных целых чисел g
и p
, представляющих количество g
хостов и p
umpkins, выведите наиболее компактную из возможных левых формаций, следуя приведенным выше правилам стекирования пирамид. Оставшиеся тыквы и призраки (то есть те, которые не образуют пирамиду) уходят на землю справа.
Для пояснения, эти формирования в порядке (разделены пробелами) и служат примером ввода / вывода:
0p 1g
\{O.O}/
1p 0g
((^v^))
1p 1g
((^v^)) \{O.O}/
2p 1g
\{O.O}/
((^v^)) ((^v^))
2p 2g
\{O.O}/
((^v^)) ((^v^)) \{O.O}/
3p 1g
\{O.O}/
((^v^)) ((^v^)) ((^v^))
3p 2g
\{O.O}/ \{O.O}/
((^v^)) ((^v^)) ((^v^))
3p 3g
\{O.O}/
\{O.O}/ \{O.O}/
((^v^)) ((^v^)) ((^v^))
0p 4g
\{O.O}/ \{O.O}/ \{O.O}/ \{O.O}/
3p 0g
((^v^)) ((^v^)) ((^v^))
7p 6g
\{O.O}/
\{O.O}/ \{O.O}/
\{O.O}/ \{O.O}/ \{O.O}/
((^v^)) ((^v^)) ((^v^)) ((^v^)) ((^v^)) ((^v^)) ((^v^))
Эти образования не в порядке
\{O.O}/
((^v^))
\{O.O}/
((^v^))
((^v^)) ((^v^)) \{O.O}/
\{O.O}/
\{O.O}/
((^v^)) ((^v^))
\{O.O}/
\{O.O}/ ((^v^)) ((^v^))
((^v^))
((^v^)) ((^v^))
\{O.O}/
((^v^)) ((^v^))
вход
Два неотрицательных целых числа в любом удобном формате . По крайней мере, одно из чисел будет ненулевым. Вы можете использовать входные данные в любом порядке (т. Е. В примерах, в которых сначала были тыквы) - пожалуйста, укажите, как вы принимаете входные данные в своем ответе.
Выход
ASCII-арт-представление призраков и тыкв, следуя приведенным выше правилам. Лидирующие / завершающие символы новой строки или другие пробелы являются необязательными, при условии, что призраки и тыквы выстраиваются в линию соответствующим образом.
правила
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
JavaScript (ES7),
166164159 байтСохранено 5 байт благодаря Нейлу
Отформатировано и прокомментировано
Базовая математика
Сложно найти оптимальную ширину
G
призрачной пирамиды.Количество призраков
g
в такой пирамиде определяется как:Наоборот, ширина пирамиды, содержащей
g
призраков, является реальным корнем полученного квадратного уравнения:Что приводит к следующему реальному корню (также известному как треугольный корень ):
Однако ширина пирамиды также ограничена количеством тыкв: у нас может быть не более
p-1
призраков надp
тыквами. Следовательно, последняя формула, используемая в коде:Версия ES6,
173171166 байтТестовые случаи (ES6)
Показать фрагмент кода
источник
j=(g+g)**.5+.5|0
должно работать.Perl, 246 байт (переводы строки не являются частью кода и предоставляются исключительно для удобства чтения)
Принимает два числа: сначала тыквы, затем призраки. Пример ввода:
Пример вывода:
источник
0p 4g
тестовом примере все призраки находятся в одной строке, а не в стопке.