Збільшити час!
Це розстрочка №5 як моєї Random Golf of the Day, так і серії ASCII Art of the дня з оптимізатора . Ваші подання в цьому виклику будуть зараховані до обох таблиць лідерів (ви можете знайти пов’язані публікації). Звичайно, ви можете ставитися до цього, як до будь-якого іншого виклику з гольфу з кодом, і відповідати на нього, не турбуючись про будь-яку серію.
Отвір 5: Алмазна плитка
Звичайний шестикутник завжди може бути викладений діамантами так:
Ми будемо використовувати художнє представлення цих плиток ASCII. Для шестикутника довжиною в бік 2 існує 20 таких обрешіток:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\
/\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\
\/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/
\/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ \/_/_/ \_\/_/ \_\/_/ \_\/_/ \_\/_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/_/_/\ /\_\_\ /_/\_\ /_/_/\ /_/\_\ /_/\_\ /_/_/\ /_/_/\ /_/_/\ /_/_/\
/\_\_\/\ /\/_/_/\ /_/\/_/\ /\_\_\/\ /\_\/_/\ /_/\/_/\ /_/\_\/\ /\_\_\/\ /_/\_\/\ /_/_/\/\
\/\_\_\/ \/_/_/\/ \_\/\_\/ \/_/\_\/ \/_/_/\/ \_\/_/\/ \_\/\_\/ \/_/_/\/ \_\/_/\/ \_\_\/\/
\/_/_/ \_\_\/ \_\/_/ \_\/_/ \_\_\/ \_\_\/ \_\/_/ \_\_\/ \_\_\/ \_\_\/
Враховуючи бічну довжину N
, слід створити таку плитку для шестикутника бічної довжини N
навмання. Точний розподіл не має значення, але кожну плитку потрібно повернути з ненульовою ймовірністю.
Тому що N ≤ 4
ваші подання повинні створити плитку протягом 1 хвилини принаймні 80% часу, і щонайменше 80% облицювань потенційно повинні бути сформовані протягом 1 хвилини. Більшість підходів не повинні турбуватися щодо цього правила (це дуже поблажливо) - це лише для виключення дуже наївних алгоритмів на основі відкидання, які генерують довільні рядки, поки не трапиться плитка.
Можливо, ви хочете знати, що загальна кількість можливих нахилів для даного N можна знайти в OEIS A008793 .
Ви можете написати повну програму або функцію і взяти вхід через STDIN (або найближчу альтернативу), аргумент командного рядка або аргумент функції та виробляти вихід через STDOUT (або найближчу альтернативу), значення повернення функції або параметр функції (out).
Ви не повинні виводити більше провідних пробілів, ніж потрібно для вирівнювання шестикутника (тобто лівий кут шестикутника не повинен мати пробілів перед ним). Кожен рядок може містити до N
пробілів (не обов'язково послідовно, так що, наприклад, ви можете мати прямокутний вихід, друкуючи обмежувальне поле шестикутника).
Це код гольфу, тому виграє найкоротше подання (у байтах). І звичайно, найкоротше подання на кожного користувача також увійде в загальну таблицю лідерів серії.
Табло лідерів
Перший пост кожної серії генерує таблицю лідерів.
Щоб переконатися, що ваші відповіді відображаються, будь ласка, почніть кожну відповідь із заголовка, використовуючи такий шаблон Markdown:
# 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% часу те саме, основна плитка, інакше я знаходжу іншу плитку в будь-який час, коли мені захочеться