CJam, 31 27 octets
CJam est beaucoup plus récent que ce défi, donc cette réponse ne peut pas être acceptée. C'était un petit défi du samedi soir, cependant. ;)
8S*9,:)+9*9/2%{_W%1>+z}2*N*
Testez-le ici.
L'idée est de former le quadrant supérieur gauche en premier. Voici comment cela fonctionne:
Commencez par former la chaîne " 123456789"
en utilisant 8S*9,:)+
. Cette chaîne est composée de 17 caractères. Maintenant, nous répétons la chaîne 9 fois, puis nous la coupons en sous-chaînes de longueur 9 avec 9/
. La non-concordance entre 9 et 17 décale tous les deux rangées un caractère à gauche. En imprimant chaque sous-chaîne sur sa propre ligne, on obtient:
1
23456789
12
3456789
123
456789
1234
56789
12345
6789
123456
789
1234567
89
12345678
9
123456789
Donc, si nous supprimons simplement une ligne sur deux (ce qui fonctionne bien en faisant 2%
), nous obtenons le quadrant souhaité:
1
12
123
1234
12345
123456
1234567
12345678
123456789
Enfin, nous reflétons cela deux fois, en transposant la grille entre les deux pour garantir que les deux opérations de mise en miroir suivent des axes différents. Le reflet lui-même est juste
_ "Duplicate all rows.";
W% "Reverse their order.";
1> "Discard the first row (the centre row).";
+ "Add the other rows.";
Enfin, nous rejoignons toutes les lignes avec des nouvelles lignes, avec N*
.