Il existe un résultat combinatoire classique selon lequel le nombre de façons de carreler une 2*n
bande par des 1*2
dominos est le nième nombre de Fibonacci. Votre objectif est d'imprimer tous les pavages pour une donnée n
, dessinés avec des tirets et des lignes verticales comme ces 8 pavages pour n=5
:
|————
|————
——|——
——|——
|||——
|||——
————|
————|
||——|
||——|
|——||
|——||
——|||
——|||
|||||
|||||
Vous devez fournir un programme ou une fonction nommée qui prend n
en entrée et imprime la sortie requise. Le moins d'octets gagne.
Contribution
Un nombre n
entre 1
et 10
inclus via STDIN ou entrée de fonction.
Production
Imprimez tous les carrelages domino possibles de la 2*n
bande, dessinés horizontalement. Les pavages peuvent être dans n'importe quel ordre, mais chacun doit apparaître exactement une fois. Ils doivent être séparés par une ligne vierge.
Un domino vertical est composé de deux barres verticales ( |
) et un domino horizontal est composé de deux tirets ( —
). Vous pouvez utiliser des tirets ( -
) à la place des tirets pour rester en ASCII.
Vous pouvez tout faire avec des espaces tant que la sortie imprimée est identique.
——
et |
par longueur comme celles de Dennis, pas des n
chaînes de longueur —
et |
filtrées en —
apparaissant par paires. Et pour ce dernier, je m'attendrais à ce que ce soit via des expressions rationnelles ou des opérations de chaîne sur la chaîne produite, comme s.split('——
), et non par une approche arithmétique comme la vôtre.