Учитывая два положительных целых числа X и Y, выведите любую комбинацию из следующих трех животных ASCII-искусства, чтобы выходные данные содержали ровно X запятых ( ,
) и Y period ( .
), если это возможно.
Коала: 1 запятая, 2 периода
<.,.>
Краб: 2 запятых, 2 периода
,<..>,
Commapillar: 3 или более запятых, 1 период
<,,,.>
или
<,,,,.>
или<,,,,,.>
или<,,,,,,.>
или<,,,,,,,.>
т. д.
Если никакая комбинация этих животных не может дать ровно X запятых и Y периодов, выведите единственного коммалеона, который замаскирует ошибку:
~<.,,>~~
Выход животных может быть в любых количествах и в любом порядке. Они могут быть разделены строкой, пробелом или символом новой строки, или же в списке, где каждое животное представляет собой один элемент.
Например, для X = 7, Y = 5 все это будут действительные выходные данные (разделенные пустыми строками):
<.,.> <.,.> <,,,,,.>
<.,.>
<,,,,,.>
<.,.>
,<..>, <.,.> <,,,,.>
<,,,,.>
,<..>,
<.,.>
,<..>, <,,,.> ,<..>,
[",<..>,", ",<..>,", "<,,,.>"] (list syntax depends on language)
Обратите внимание, что (по крайней мере, в этом примере) есть несколько наборов животных, которые могут работать. Но помните, что вам нужно вывести только одно допустимое решение, если оно существует. Количество животных или количество отдельных животных не имеет значения.
Для входов, таких как X = 3, Y = 3 или X = 1, Y = 5, где нет решения, выход всегда будет
~<.,,>~~
возможно в одноэлементном списке.
Самый короткий код в байтах побеждает.
источник
__int128
и мне было лень использовать библиотеку bignum. Вот дамп CSV: pastebin.com/ght5xkRu первая строка и столбец - это значения X и YОтветы:
Рубин, 139 байт
Лямбда-функция, принимает x и y в качестве аргументов и возвращает строку
Если решение существует, оно может быть сделано со всеми коалами + комапилларами или всеми коалами + крабами.
Принцип состоит в том, чтобы использовать минимум комапилляров. Если число нечетное, мы используем 1 commapillar. если даже мы используем 0 комапилляров, если запятых больше, чем точек, в этом случае мы используем 2.
Число периодов, используемых в некомапиллярах (крабы + коалы), обязательно должно быть четным, а количество некомапилляров равно половине
(number of periods)-(number of commapillars)
. Если для всех коал недостаточно запятых или слишком много для всех крабов, решение невозможно. В противном случае мы возвращаем решение.Комментарий в тестовой программе
использует «неудачу» вместо хамелеона для ясности
Выход
источник
Befunge,
249218 байтПопробуйте онлайн!
Теперь это основано на алгоритме в ответе Ruby от Level River St , который предоставил больше возможностей для игры в гольф и значительно сократил размер по сравнению с моим первоначальным решением.
источник
C # 6,
321303 байтаВызов
F()
. Две другие функции являются помощниками. repl.it demoисточник