Stochastyczny macierzy jest macierz prawdopodobieństw stosowane w kontekście łańcuchów Markowa.
Prawo stochastyczny matryca jest matrycą w którym każdy rząd z sumy 1
.
Opuścił matrycę stochastyczne jest macierzą gdzie każda kolumna do sumy 1
.
Podwójnie stochastyczny macierz jest macierzą, gdzie każdy rządek oraz każda kolumienka kwot 1
.
W tym wyzwaniu będziemy reprezentować prawdopodobieństwa w procentach przy użyciu liczb całkowitych . W takim przypadku wiersz lub kolumna musi być sumą do, 100
a nie sumą 1
.
Twoim celem jest napisanie programu lub funkcji, która, biorąc pod uwagę kwadratową macierz liczb całkowitych jako dane wejściowe, wyprowadza jedną z czterech wartości wskazujących, że macierz jest albo prawa stochastyczna, lewa stochastyczna, podwójnie stochastyczna lub żadna z nich.
Wkład
Do wprowadzenia możesz użyć dowolnej właściwej reprezentacji macierzy naturalnej dla twojego języka. Na przykład lista list, ciąg wartości oddzielonych przecinkami z wierszami oddzielonymi podziałami wierszy itp.
Matryca wejściowa zawsze będzie kwadratowa i będzie zawierać tylko nieujemne liczby całkowite. Matryca wejściowa zawsze będzie co najmniej 1×1
.
Możesz przekazać dane wejściowe, używając STDIN
jako argumentu funkcji lub czegoś podobnego.
Wydajność
Musisz wybrać cztery różne wyniki, które odpowiadają prawemu stochastycznemu , lewemu stochastycznemu , podwójnie stochastycznemu lub żadnemu z nich . Wyjścia te muszą być stałe niezależnie od przekazywanych danych wejściowych. Twój program może nie zwracać różnych wyników dla tego samego przypadku, np. Mówiąc, że jakakolwiek liczba ujemna nie odpowiada żadnej z tych wartości, jest niepoprawna.
Krótko mówiąc, musi być korespondencja 1 do 1 między twoimi wynikami a czterema możliwymi przypadkami. Niektóre przykłady tych czterech wyjść byłoby {1, 2, 3, 4}
albo {[1,0], [0,1], [1,1], [0,0]}
nawet {right, left, doubly, none}
.
Proszę wskazać w swojej odpowiedzi cztery wyjścia, z których korzysta program.
Jeśli macierz jest podwójnie stochastyczna, musisz zwrócić wynik odpowiadający podwójnie stochastycznemu, a nie prawemu lub lewemu stochastycznemu.
Możesz wydrukować dane wyjściowe STDOUT
, zwrócić je z funkcji lub coś podobnego.
Przypadki testowe
[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]
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.