Una matrice stocastica è una matrice di probabilità utilizzata nel contesto delle catene di Markov.
Una matrice stocastica destra è una matrice in cui ogni riga si somma 1
.
Una matrice stocastica sinistra è una matrice in cui ogni colonna si somma a 1
.
Una matrice doppiamente stocastica è una matrice in cui ogni riga e ogni colonna si sommano 1
.
In questa sfida, rappresenteremo le probabilità in percentuale usando numeri interi . In questo caso una riga o colonna deve essere sommata 100
e non 1
.
Il tuo obiettivo è quello di scrivere un programma o una funzione che, data una matrice quadrata di numeri interi come input, emetta uno dei quattro valori che indicano che la matrice è stocastica destra, stocastica sinistra, doppiamente stocastica o nessuna di queste.
Ingresso
È possibile utilizzare qualsiasi rappresentazione corretta di una matrice naturale per la propria lingua per l'input. Ad esempio, un elenco di elenchi, una stringa di valori separati da virgola con righe separate da interruzioni di riga, ecc.
La matrice di input sarà sempre quadrata e conterrà solo numeri interi non negativi. La matrice di input sarà sempre almeno 1×1
.
È possibile passare l'input utilizzando STDIN
, come argomento di funzione o qualcosa di simile.
Produzione
Devi scegliere quattro uscite distinte che corrispondono a destra stocastica , sinistra stocastica , doppiamente stocastica o nessuna di queste . Tali uscite devono essere costanti indipendentemente dall'ingresso passato. Il tuo programma potrebbe non restituire output diversi per lo stesso caso, ad esempio dire che un numero negativo corrisponde a nessuno di questi non è valido.
In breve, ci deve essere una corrispondenza 1 a 1 tra l'output e i quattro casi possibili. Alcuni esempi di queste quattro uscite sarebbero {1, 2, 3, 4}
o {[1,0], [0,1], [1,1], [0,0]}
o addirittura {right, left, doubly, none}
.
Indica nella tua risposta i quattro output utilizzati dal tuo programma.
Se una matrice è doppiamente stocastica, è necessario restituire l'output corrispondente a doppiamente stocastica e non destra o sinistra stocastica.
È possibile stampare l'output STDOUT
, restituirlo da una funzione o qualcosa di simile.
Casi test
[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]
punteggio
Questo è code-golf , quindi vince la risposta più breve in byte.