Ich habe einige Herausforderungen im Zusammenhang mit Matrizen geschrieben. Allen ist gemeinsam, dass ich ein Format wie das folgende verwende, um die Matrizen sowohl in Beispielen als auch in Testfällen darzustellen:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Dies ist wahrscheinlich ein umständliches Format in vielen Sprachen.
Herausforderung:
Schreiben Sie ein Programm / eine Funktion, die eine Matrix in der oben angegebenen Form als Eingabe annehmen kann (direktes Kopieren / Einfügen aus diesem Beitrag), und geben Sie dieselbe Matrix in allen drei anderen unten gezeigten herkömmlichen Formaten aus .
Das Eingabeformat:
Durch eine unterschiedliche Anzahl von Leerzeichen getrennte Zahlen und Zeilenumbrüche zur Darstellung von Zeilen (siehe Testfälle).
- Es kann nicht garantiert werden, dass die Anzahl der Leerzeichen zwischen den Zahlen übereinstimmt. Sie können jedoch davon ausgehen, dass die letzte Ziffer in jeder Spalte ausgerichtet ist (sofern dies hilfreich ist).
- Es kann sowohl Ganzzahlen als auch Gleitkommazahlen geben, und sie können positiv, negativ oder null sein. Eine Matrix enthält keine ganzen Zahlen und Gleitkommazahlen.
- Sie können davon ausgehen, dass keine Zahl länger als 10 Zeichen ist, einschließlich des Minus- und Dezimalpunkts für negative Gleitkommazahlen.
- Sie können davon ausgehen, dass in jeder Zeile und in jeder Spalte die gleiche Anzahl von Einträgen vorhanden ist.
- Es gibt keine leeren Eingabematrizen, aber es können einzelne Zahlen oder Matrizen mit nur einer Zeile oder Spalte vorhanden sein.
- In diesen Fällen können Sie zwischen den in den Testfällen gezeigten Ausgabeformaten wählen
Ihr Programm / Ihre Funktion muss die Eingabe verarbeiten, wenn sie direkt aus diesem Beitrag kopiert und in den Interpreter eingefügt wird (STDIN oder als Funktionsargument oder etwas Äquivalentes). Sie können beliebig viele Zeichen (Klammern, Anführungszeichen, Klammern) vor und / oder nach der Matrix einfügen, aber Sie müssen die Matrix als Zeichenfolge betrachten, die nicht geändert werden kann (einschließlich der Zeilenumbrüche).
Zur Verdeutlichung: Angenommen, Ihre Funktion / Ihr Programm wird aufgerufen f
und die Matrix lautet:
1 -2
3 5
6 7
Dann können Sie die Matrix wie folgt als Funktionsargumente angeben (und unendlich viele andere Optionen):
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
Wenn Ihre Sprache die kopierte / eingefügte Matrix in keiner Weise als Eingabe verwenden kann, müssen Sie leider eine andere Sprache auswählen.
Das Ausgabeformat:
Sie sollten die Matrix in den folgenden drei Formaten ausgeben (Reihenfolge spielt keine Rolle):
[[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]
- Sie können die drei Ausgänge nach Belieben trennen (zB eine Newline)
- Sie müssen die Zahlen mit der gleichen Genauigkeit wie die Eingabe ausgeben (z. B. dürfen Sie die Anzahl der Dezimalstellen nicht kürzen und Ganzzahlen nicht als Gleitkommazahlen ausgeben).
- Die Leerzeichen sind Pflichtfelder
- Sie müssen
-
für negative Zahlen verwenden, nicht_
oder ähnlich.
Testfälle:
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]
Ich bin voll und ganz bewusst diese , aber in dieser Herausforderung, das umständlichen E / A - Format ist der springende Punkt. Die Herausforderung besteht darin, die Ausgabe in einigen Sprachen zu formatieren, während das Lesen der Eingabe in anderen Sprachen am schwierigsten ist.
Bitte lassen Sie sich nicht entmutigen, wenn das Lesen der Beiträge schwierig ist. Diese Einsendungen könnten die interessantesten sein. Kurz ist nicht unbedingt das Gleiche wie beeindruckend. Und wie immer sind Erklärungen erwünscht!