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