Стохастическая матрица является матрицей вероятностей , используемых в контексте цепей Маркова.
Правая стохастическая матрица представляет собой матрицу , где каждая строка суммы в 1
.
Влево стохастическая матрица представляет собой матрицу , где каждый столбец суммы в 1
.
Дважды стохастическая матрица представляет собой матрицу , где каждая строка и каждый столбец сумм к 1
.
В этой задаче мы будем представлять вероятности в процентах, используя целые числа . В этом случае строка или столбец должны быть суммами, 100
а не суммой 1
.
Ваша цель состоит в том, чтобы написать программу или функцию, которая, учитывая квадратную матрицу целых чисел в качестве входных данных, выводит одно из четырех значений, указывающих, что матрица является либо стохастической справа, либо стохастической слева, либо стохастической с двойной точностью, либо ни одной из них.
вход
Вы можете использовать любое правильное представление матрицы, которое является естественным для вашего языка для ввода. Например, список списков, строка значений, разделенных запятыми, со строками, разделенными переносами строк и т. Д.
Входная матрица всегда будет квадратной и будет содержать только неотрицательные целые числа. Входная матрица всегда будет как минимум 1×1
.
Вы можете передать ввод, используя STDIN
аргумент функции или что-то подобное.
Выход
Вы должны выбрать четыре различных выхода, которые соответствуют правому стохастику , левому стохастику , дважды стохастическому или ни одному из них . Эти выходы должны быть постоянными независимо от того, какой вход передается. Ваша программа может не возвращать разные выходные данные для одного и того же случая, например, говоря, что любое отрицательное число не соответствует ни одному из этих случаев. , недопустимо.
Короче говоря, между выходными данными и четырьмя возможными случаями должно быть соответствие 1: 1. Некоторые примеры этих четырех выходов будут {1, 2, 3, 4}
или {[1,0], [0,1], [1,1], [0,0]}
или даже {right, left, doubly, none}
.
Пожалуйста, укажите в своем ответе четыре выхода, которые использует ваша программа.
Если матрица является дважды стохастической, то вы должны вернуть результат, соответствующий дважды стохастическому, а не правому или левому стохастику.
Вы можете распечатать вывод 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]
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.