Время пюре!
Это часть № 5 моей серии «Случайный гольф дня» и серии ASCII Art of the Day от Оптимизатора . Ваша заявка (и) в этом конкурсе будет учитываться в обеих таблицах лидеров (которые вы можете найти связанные сообщения). Конечно, вы можете относиться к этому, как к любому другому вызову для игры в гольф, и отвечать на него, не беспокоясь ни об одной из этих серий.
Отверстие 5: алмазные плитки
Обычный шестиугольник всегда можно облицовать бриллиантами так:
Мы будем использовать ASCII художественное представление этих элементов. Для шестиугольника с длиной стороны 2 существует 20 таких углов:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\
/\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\
\/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/
\/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ \/_/_/ \_\/_/ \_\/_/ \_\/_/ \_\/_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/_/_/\ /\_\_\ /_/\_\ /_/_/\ /_/\_\ /_/\_\ /_/_/\ /_/_/\ /_/_/\ /_/_/\
/\_\_\/\ /\/_/_/\ /_/\/_/\ /\_\_\/\ /\_\/_/\ /_/\/_/\ /_/\_\/\ /\_\_\/\ /_/\_\/\ /_/_/\/\
\/\_\_\/ \/_/_/\/ \_\/\_\/ \/_/\_\/ \/_/_/\/ \_\/_/\/ \_\/\_\/ \/_/_/\/ \_\/_/\/ \_\_\/\/
\/_/_/ \_\_\/ \_\/_/ \_\/_/ \_\_\/ \_\_\/ \_\/_/ \_\_\/ \_\_\/ \_\_\/
Учитывая длину стороны N
, вы должны сгенерировать такой тайлинг для шестиугольника длины стороны N
наугад. Точное распределение не имеет значения, но каждый лист должен быть возвращен с ненулевой вероятностью.
Например N ≤ 4
, ваша заявка должна составить мозаику в течение 1 минуты, по крайней мере, в 80% случаев, и, по крайней мере, 80% плитки должны быть получены в течение 1 минуты. Большинству подходов не нужно беспокоиться об этом правиле (оно очень мягкое) - это просто исключение очень наивных алгоритмов, основанных на отклонении, которые генерируют произвольные строки, пока один из них не окажется мозаичным.
Возможно, вы хотели бы знать, что общее количество возможных значений мозаичности для данного N можно найти в OEIS A008793 .
Вы можете написать полную программу или функцию и получить ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и произвести вывод через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Вы не должны выводить больше начальных пробелов, чем необходимо для выравнивания шестиугольника (то есть в левом углу шестиугольника не должно быть пробелов перед ним). Каждая строка может содержать до N
конечных пробелов (не обязательно последовательно, например, вы можете иметь прямоугольный вывод, печатая ограничивающий прямоугольник шестиугольника).
Это код гольф, поэтому выигрывает самое короткое представление (в байтах). И, конечно же, самая короткая заявка на пользователя также войдет в общую таблицу лидеров серии.
Leaderboards
Первый пост каждой серии генерирует таблицу лидеров.
Чтобы убедиться, что ваши ответы отображаются, начните каждый ответ с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Язык в настоящее время не отображается, но фрагмент требует и анализирует его, и я могу добавить таблицу лидеров по языкам в будущем.)
For N ≤ 4, your submission must produce a tiling within 1 minute at least 80% of the time.
слишком просто: 80% времени то же самое, базовый тайлинг, в противном случае я нахожу другой тайлинг в любое