CJam, 31 27 байт
CJam набагато новіший, ніж цей виклик, тому ця відповідь не може бути прийнятою. Це був охайний маленький суботній вечірній виклик. ;)
8S*9,:)+9*9/2%{_W%1>+z}2*N*
Тестуйте це тут.
Ідея полягає в тому, щоб сформувати спочатку верхній лівий квадрант. Ось як це працює:
Спочатку сформуйте рядок " 123456789"
, використовуючи 8S*9,:)+
. Цей рядок має 17 символів. Тепер ми повторюємо рядок 9 разів, а потім розділяємо його на підрядки довжиною 9 с 9/
. Невідповідність між 9 і 17 змістить кожен другий рядок по одному символу зліва. Друкуючи кожну підрядку в окремому рядку, ми отримуємо:
1
23456789
12
3456789
123
456789
1234
56789
12345
6789
123456
789
1234567
89
12345678
9
123456789
Тож якщо ми просто скинемо кожен інший рядок (який зручно працює 2%
), отримаємо один квадрант за бажанням:
1
12
123
1234
12345
123456
1234567
12345678
123456789
Нарешті, ми відображаємо це дзеркально двічі, перекладаючи сітку між ними, щоб переконатися, що дві дзеркальні операції йдуть по різних осях. Саме дзеркальне відображення справедливе
_ "Duplicate all rows.";
W% "Reverse their order.";
1> "Discard the first row (the centre row).";
+ "Add the other rows.";
Нарешті, ми просто з'єднуємо всі рядки з новими рядками, з N*
.