Une matrice stochastique est une matrice de probabilités utilisée dans le contexte des chaînes de Markov.
Une matrice stochastique droite est une matrice où chaque ligne fait la somme 1
.
Une matrice stochastique gauche est une matrice où chaque colonne fait la somme 1
.
Une matrice doublement stochastique est une matrice où chaque ligne et chaque colonne résument 1
.
Dans ce défi, nous représenterons les probabilités en pourcentage en utilisant des entiers . Une ligne ou une colonne doit dans ce cas additionner 100
et non 1
.
Votre objectif est d'écrire un programme ou une fonction qui, étant donné une matrice carrée d'entiers, génère une des quatre valeurs indiquant que la matrice est soit stochastique droite, stochastique gauche, doublement stochastique ou aucune de celles-ci.
Contribution
Vous pouvez utiliser toute représentation appropriée d'une matrice qui est naturelle pour votre langue pour l'entrée. Par exemple, une liste de listes, une chaîne de valeurs séparées par des virgules avec des lignes séparées par des sauts de ligne, etc.
La matrice d'entrée sera toujours carrée et ne contiendra que des entiers non négatifs. La matrice d'entrée sera toujours au moins 1×1
.
Vous pouvez passer l'entrée en utilisant STDIN
, comme argument de fonction, ou quelque chose de similaire.
Sortie
Vous devez choisir quatre sorties distinctes qui correspondent à stochastique droite , gauche stochastique , bistochastiques ou aucun de ceux . Ces sorties doivent être constantes quelle que soit l'entrée transmise. Votre programme peut ne pas renvoyer des sorties différentes pour le même cas, par exemple en disant que tout nombre négatif ne correspond à aucune de celles-ci n'est pas valide.
En bref, il doit y avoir une correspondance 1 à 1 entre votre sortie et les quatre cas possibles. Quelques exemples de ces quatre sorties seraient {1, 2, 3, 4}
ou {[1,0], [0,1], [1,1], [0,0]}
ou même {right, left, doubly, none}
.
Veuillez indiquer dans votre réponse les quatre sorties utilisées par votre programme.
Si une matrice est doublement stochastique, vous devez renvoyer la sortie correspondant à doublement stochastique et non à droite ou à gauche stochastique.
Vous pouvez imprimer la sortie dans STDOUT
, la renvoyer à partir d'une fonction ou quelque chose de similaire.
Cas de 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]
Notation
Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte.