CJam, 31 27 bytes
CJam es mucho más nuevo que este desafío, por lo que esta respuesta no es elegible para ser aceptada. Sin embargo, este fue un pequeño desafío ordenado el sábado por la noche. ;)
8S*9,:)+9*9/2%{_W%1>+z}2*N*
Pruébalo aquí.
La idea es formar primero el cuadrante superior izquierdo. Así es como funciona:
Primero, forma la cadena " 123456789"
, usando 8S*9,:)+
. Esta cadena tiene 17 caracteres de longitud. Ahora repetimos la cadena 9 veces, y luego la dividimos en subcadenas de longitud 9 con 9/
. La falta de coincidencia entre 9 y 17 compensará cada dos filas un carácter a la izquierda. Imprimiendo cada subcadena en su propia línea obtenemos:
1
23456789
12
3456789
123
456789
1234
56789
12345
6789
123456
789
1234567
89
12345678
9
123456789
Entonces, si simplemente dejamos caer cualquier otra fila (que convenientemente funciona haciendo 2%
), obtenemos un cuadrante como lo desee:
1
12
123
1234
12345
123456
1234567
12345678
123456789
Finalmente, duplicamos esto dos veces, transponiendo la cuadrícula en el medio para asegurarnos de que las dos operaciones de duplicación sigan diferentes ejes. El espejo en sí mismo es solo
_ "Duplicate all rows.";
W% "Reverse their order.";
1> "Discard the first row (the centre row).";
+ "Add the other rows.";
Por último, solo unimos todas las líneas con líneas nuevas, con N*
.