Цікава головоломка прийшла до мене, дивлячись на кнопки ліфтів сьогодні вранці.
Вам потрібно створити список усіх моделей Брайля, які вміщуються в сітку 2x3. Використовуйте хеш #
для позначення шишки та дефісу, -
щоб позначити плоску область.
Очікуваний вихідний зразок:
#-
--
--
##
--
--
#-
#-
--
(and so on...)
Правила:
- Ваша програма повинна відокремлювати кожен візерунок хоча б одним символом або рядком.
- Шаблони можуть бути згенеровані в будь-якому порядку.
- Усі візерунки, незалежно від того, що насправді використовує алфавіт Брайля, повинні бути створені. Повністю порожній візерунок не є обов'язковим.
- Необхідно створювати лише унікальні шаблони. Наступні зразки вважаються рівносильними, оскільки шишки в однаковій структурі. У цих випадках використовуйте шаблон, який знаходиться найближче до верхнього лівого кута (тобто перший варіант у цьому прикладі.)
#- -# -- --
#- -# #- -#
-- -- #- -#
Бонусні бали, якщо ви можете змусити його працювати для будь-якого x за сіткою розміром y . ( EDIT: В межах розумних. Додання до 4x4 достатньо для підтвердження концепції.)
Читаючи статтю у вікі, виявляється, що існує 45 моделей (включаючи бланк), які відповідають правилам цієї головоломки.
x
xy
сіток ви генеруєте перші2^(xy)
числа та фільтруєте ті, які маскуються до 0 проти2^x - 1
або(2^(xy+1) - 1)/(2^y - 1)
.