確率論的マトリックスは、マルコフ連鎖の文脈で使用される確率の行列です。
右確率的行列は、各行の合計に行列です1
。
左確率的行列は、各列の合計の行列です1
。
二重確率的行列は、各行及び各列の和に行列です1
。
この課題では、整数を使用して確率をパーセントで表します。その場合、行または列は合計する必要が100
あり1
ます。
あなたの目標は、入力として整数の正方行列が与えられると、行列が右確率的、左確率的、二重確率的、またはそれらのいずれでもないことを示す4つの値の1つを出力するプログラムまたは関数を書くことです。
入力
入力には、言語に自然なマトリックスの適切な表現を使用できます。たとえば、リストのリスト、行が改行で区切られたコンマ区切り値の文字列など。
入力行列は常に正方であり、負でない整数のみを含みます。入力行列は常に少なくともになり1×1
ます。
を使用して入力を渡すことができSTDIN
ます、関数の引数として、または類似のもの。
出力
右確率的、左確率的、二重確率的、またはそれらのいずれにも対応しない4つの異なる出力を選択する必要があります。これらの出力は、渡される入力に関係なく一定でなければなりません。あなたのプログラムは同じケースに対して異なる出力を返さないかもしれません。例えば、負の数はそれらのどれにも対応しないと言っては無効です。
要するに、出力と4つの可能なケースとの間には1対1の対応が必要です。これらの4つの出力のいくつかの例は{1, 2, 3, 4}
、{[1,0], [0,1], [1,1], [0,0]}
またはでさえあり{right, left, doubly, none}
ます。
プログラムが使用する4つの出力を答えてください。
行列が二重確率である場合、右または左の確率ではなく、二重確率に対応する出力を返す必要があります。
出力をSTDOUT
に印刷し、関数から返すか、類似のものを返すことができます。
テストケース
[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]
得点
これはcode-golfであるため、バイト単位の最短回答が優先されます。