Eine stochastische Matrix ist eine Matrix von Wahrscheinlichkeiten, die im Zusammenhang mit Markov-Ketten verwendet werden.
Eine rechte stochastische Matrix ist eine Matrix, in der jede Zeile summiert 1
.
Eine linke stochastische Matrix ist eine Matrix, in der jede Spalte summiert 1
.
Eine doppelt stochastische Matrix ist eine Matrix, in der sich jede Zeile und jede Spalte summiert 1
.
In dieser Herausforderung werden wir die Wahrscheinlichkeiten in Prozent mit ganzen Zahlen darstellen . In diesem Fall muss eine Zeile oder Spalte die Summe aus 100
und nicht 1
.
Ihr Ziel ist es, ein Programm oder eine Funktion zu schreiben, die bei einer quadratischen Matrix von Ganzzahlen als Eingabe einen von vier Werten ausgibt, die anzeigen, dass die Matrix entweder rechtsstochastisch, linksstochastisch, doppeltstochastisch oder keine davon ist.
Eingang
Sie können für die Eingabe jede geeignete Darstellung einer Matrix verwenden, die für Ihre Sprache natürlich ist. Zum Beispiel eine Liste von Listen, eine Folge von durch Kommas getrennten Werten mit durch Zeilenumbrüchen getrennten Zeilen usw.
Die Eingabematrix ist immer quadratisch und enthält nur nicht negative ganze Zahlen. Die Eingabematrix wird immer mindestens sein 1×1
.
Sie können die Eingabe mit STDIN
, als Funktionsargument oder ähnlichem übergeben.
Ausgabe
Sie müssen vier verschiedene Ausgänge auswählen , die der rechten , der linken , der doppelten oder keiner Stochastik entsprechen . Diese Ausgaben müssen unabhängig von der übergebenen Eingabe konstant sein. Ihr Programm kann möglicherweise keine unterschiedlichen Ausgaben für denselben Fall zurückgeben, z. B. ist die Aussage, dass eine negative Zahl keiner dieser Ausgaben entspricht, ungültig.
Kurz gesagt, es muss eine 1-zu-1-Entsprechung zwischen Ihrer Ausgabe und den vier möglichen Fällen geben. Einige Beispiele für diese vier Ausgänge wären {1, 2, 3, 4}
oder {[1,0], [0,1], [1,1], [0,0]}
oder sogar {right, left, doubly, none}
.
Bitte geben Sie in Ihrer Antwort die vier Ausgänge an, die Ihr Programm verwendet.
Wenn eine Matrix doppelt stochastisch ist, müssen Sie die Ausgabe zurückgeben, die doppelt stochastisch und nicht rechts oder links stochastisch ist.
Sie können die Ausgabe an drucken STDOUT
, von einer Funktion zurückgeben oder etwas Ähnliches.
Testfälle
[100] => Doubly stochastic
[42] => None of those
[100 0 ] => Doubly stochastic
[0 100]
[4 8 15]
[16 23 42] => Left stochastic
[80 69 43]
[99 1 ] => Right stochastic
[2 98]
[1 2 3 4 ]
[5 6 7 8 ] => None of those
[9 10 11 12]
[13 14 15 16]
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.