He escrito algunos desafíos relacionados con las matrices, y común para todos es que utilizo un formato como el siguiente cuando represento las matrices, tanto en ejemplos como en casos de prueba:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Este es probablemente un formato engorroso en muchos idiomas.
Desafío:
Escriba un programa / función que pueda tomar una matriz en la forma dada en la parte superior como entrada (directamente copiada / pegada de esta publicación), y genere la misma matriz en los otros tres formatos convencionales que se muestran a continuación .
El formato de entrada:
Números separados por un número variable de espacios y nuevas líneas para representar filas (ver casos de prueba).
- No se garantiza que el número de espacios entre números sea consistente. Sin embargo, puede suponer que el último dígito en cada columna se alinea (si eso ayuda a alguno).
- Puede haber enteros y flotantes, y pueden ser positivos, negativos o cero. Una matriz no contendrá enteros y flotantes al mismo tiempo.
- Puede suponer que ningún número tiene más de 10 caracteres, incluidos el punto negativo y el decimal para flotantes negativos.
- Puede suponer que hay el mismo número de entradas en cada fila y en cada columna.
- No habrá matrices de entrada vacías, pero puede haber números únicos o matrices con solo una fila o columna.
- En estos casos, puede elegir entre los formatos de salida que se muestran en los casos de prueba
Su programa / función debe manejar la entrada si se copia directamente de esta publicación y se pega en el intérprete (STDIN o como argumento de función o algo equivalente). Puede tener lo que quiera (corchetes, comillas, paréntesis) delante y / o después de la matriz, pero debe considerar la matriz como una secuencia de caracteres que no se pueden alterar (que incluye las nuevas líneas).
Para aclarar: suponga que se llama a su función / programa f
y que la matriz es:
1 -2
3 5
6 7
entonces puede dar la matriz como argumentos de función como este (y muchas otras opciones infinitas):
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
Si su idioma no puede, de ninguna manera, tomar la matriz copiada / pegada como entrada, entonces me temo que debe elegir otro idioma.
El formato de salida:
Debe generar la matriz en los siguientes tres formatos (el orden no importa):
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
- Puede separar las tres salidas como desee (por ejemplo, una nueva línea)
- Debe generar los números con la misma precisión que la entrada (por ejemplo, no debe recortar el número de decimales, ni generar enteros como flotantes).
- Los espacios son obligatorios.
- Debe usar
-
para números negativos, no_
o similares.
Casos de prueba:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
0.14778 0.27114 0.24415
0.45997 0.12287 0.67470
0.28945 0.37928 0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]
-0.0398301 0.2403455 -0.2253368 0.3565870 0.0605803 0.0830780
-0.3254422 -0.1185191 -0.2989537 0.1647319 0.3621135 0.2018815
-0.0022281 -0.3362287 -0.3568447 0.4419063 0.3801872 -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]
1
----
[1] (or [[1]])
{1} (or {{1}})
[1] (or 1)
1 2
----
[1, 2] (or [[1, 2]])
{1, 2} (or {{1, 2}})
[1, 2]
4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]
Soy plenamente consciente de esto , pero en este desafío, el formato de E / S engorroso es el punto. El desafío consistirá en formatear la salida en algunos idiomas, mientras que leer la entrada será la parte más difícil en otros idiomas.
No se desanime si leer la entrada es difícil, esas presentaciones pueden ser las más interesantes. Corto no es necesariamente lo mismo que impresionante. Y como siempre, ¡se alientan las explicaciones!