Классический комбинаторный результат состоит в том, что число способов разбить 2*n
полосу 1*2
домино - это n- е число Фибоначчи. Ваша цель состоит в том, чтобы напечатать все элементы мозаичного изображения, заданные n
штрихами и вертикальными линиями, как эти 8 элементов мозаичного изображения для n=5
:
|————
|————
——|——
——|——
|||——
|||——
————|
————|
||——|
||——|
|——||
|——||
——|||
——|||
|||||
|||||
Вы должны предоставить программу или именованную функцию, которые принимают в n
качестве входных данных и распечатывают требуемые выходные данные. Побеждает несколько байтов.
вход
Число n
между 1
и 10
включительно через STDIN или функциональный вход.
Выход
Напечатайте все возможные фрагменты домино 2*n
полосы, нарисованные горизонтально. Повороты могут быть в любом порядке, но каждый должен появляться ровно один раз. Они должны быть отделены пустой строкой.
Вертикальное домино состоит из двух вертикальных полос ( |
), а горизонтальное домино состоит из двух черточек ( —
). Вы можете использовать дефисы ( -
) вместо тире, чтобы остаться в ASCII.
Вы можете делать что-либо с пробелами, если вывод на печать выглядит одинаково.
——
и |
от длины , как Деннис, а не длина- n
строки —
и |
фильтруется —
появляются парами. И для последнего я бы ожидал, что это будет с помощью регулярных выражений или строковых операций над созданной строкой, например s.split('——
), а не с помощью арифметического подхода, подобного вашему.