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, 100a 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 STDINjako 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.