Para este desafío, debe escribir un programa o función que genere las diagonales de una matriz cuadrada dada. Sin embargo, si transpone las filas y columnas del código fuente de su solución, debería convertirse en un programa o función que devuelva las antidiagonales de la matriz. Siga leyendo para obtener detalles ...
Reglas
- El código fuente de su solución se considera como una cuadrícula 2D de caracteres, separados por una nueva línea estándar de su elección (salto de línea, retorno de carro o una combinación de ambos).
Ninguna línea en su código fuente puede ser más larga que la anterior. Aquí hay algunos ejemplos de diseños válidos:
### ### ###
######## ####### ### ### #
Y aquí hay un ejemplo de un diseño no válido (ya que la tercera línea es más larga que la segunda):
###### #### ##### ###
Sus dos soluciones deben ser transpuestas entre sí, es decir, debe obtener una de la otra intercambiando filas y columnas. Aquí hay dos pares válidos:
abc def ghi
adg beh cfi
Y
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Tenga en cuenta que los espacios se tratan como cualquier otro personaje. En particular, los espacios finales son significativos ya que podrían no ser espacios finales en la transposición.
Cada solución debe ser un programa o función que tome como entrada una matriz cuadrada no vacía de enteros de un solo dígito. Una solución debe generar una lista de todas las diagonales de la matriz y la otra debe generar una lista de todas las antidiagoniales. Puede usar cualquier formato de entrada y salida razonable y sin ambigüedades, pero deben ser idénticos entre las dos soluciones (esto también significa que deben ser ambas funciones o ambos programas).
- Cada diagonal se extiende desde la parte superior izquierda a la parte inferior derecha, y deben ordenarse de arriba a abajo.
- Cada antidiagonal se extiende desde la parte inferior izquierda hasta la parte superior derecha, y deben ordenarse de arriba hacia abajo.
Tanteo
Para fomentar soluciones que sean tan "cuadradas" como sea posible, el puntaje principal es el número de filas o el número de columnas de su solución, lo que sea mayor . Menos es mejor. Los lazos se rompen por la cantidad de caracteres en la solución, sin contar las nuevas líneas. De nuevo, menos es mejor. Ejemplo:
abcd
efg
h
Esto y su transposición tendrían un puntaje primario de 4 (ya que hay 4 columnas) y un puntaje de desempate de 8 (ya que hay 8 caracteres que no son de nueva línea). Cite ambos valores en el encabezado de su respuesta.
Casos de prueba
La tarea real realizada por las dos soluciones no debería ser el desafío principal aquí, pero aquí hay dos ejemplos para ayudarlo a probar sus soluciones:
Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9
Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1