CJam, 31 27 bajtów
CJam jest znacznie nowszy od tego wyzwania, więc ta odpowiedź nie kwalifikuje się do zaakceptowania. Było to jednak miłe, małe wyzwanie w sobotni wieczór. ;)
8S*9,:)+9*9/2%{_W%1>+z}2*N*
Sprawdź to tutaj.
Chodzi o to, aby najpierw utworzyć lewy górny kwadrant. Oto jak to działa:
Najpierw utwórz ciąg " 123456789"
, używając 8S*9,:)+
. Ten ciąg ma 17 znaków. Teraz powtarzamy ciąg 9 razy, a następnie dzielimy na podciągi o długości 9 za pomocą 9/
. Niedopasowanie między 9 a 17 zrównoważy co drugi wiersz jeden znak w lewo. Drukując każdy podciąg na własnej linii otrzymujemy:
1
23456789
12
3456789
123
456789
1234
56789
12345
6789
123456
789
1234567
89
12345678
9
123456789
Jeśli więc po prostu upuszczamy co drugi rząd (co wygodnie działa, robiąc 2%
), otrzymujemy jeden kwadrant zgodnie z potrzebami:
1
12
123
1234
12345
123456
1234567
12345678
123456789
Na koniec odbijamy to dwukrotnie, przenosząc siatkę pomiędzy, aby zapewnić, że dwie operacje odbicia będą przebiegać wzdłuż różnych osi. Samo odbicie lustrzane jest sprawiedliwe
_ "Duplicate all rows.";
W% "Reverse their order.";
1> "Discard the first row (the centre row).";
+ "Add the other rows.";
Wreszcie, po prostu łączymy wszystkie linie z nowymi liniami, z N*
.