Dans le triangle de Pascal, chaque nombre est la somme des deux nombres directement au-dessus, en traitant les espaces vides comme zéro:
En faisant tourner le triangle, nous pouvons découper des matrices carrées de tailles et de rotations différentes que j'appellerai des matrices de Pascal . Notez que ces matrices doivent toujours contenir le top . Voici quelques exemples:
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
6 3 1
3 2 1
1 1 1
1 5 15 35 70
1 4 10 20 35
1 3 6 10 15
1 2 3 4 5
1 1 1 1 1
1
1 1
2 1
La tâche
Étant donné une matrice carrée contenant des nombres positifs dans n'importe quel format raisonnable, décidez s'il s'agit d'une matrice de Pascal .
Décider signifie renvoyer des valeurs véridiques ou fausses selon que l'entrée est une matrice de Pascal , ou fixer deux valeurs constantes et renvoyer l'une pour les vraies entrées et l'autre pour les fausses entrées.
Il s'agit de code-golf , essayez donc d'utiliser le moins d'octets possible dans la langue de votre choix. Le code le plus court dans chaque langue gagne, donc je n'accepterai pas de réponse.
Cas de test
Vrai
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 3, 6, 10], [1, 4, 10, 20]]
[[6, 3, 1], [3, 2, 1], [1, 1, 1]]
[[1, 5, 15, 35, 70], [1, 4, 10, 20, 35], [1, 3, 6, 10, 15], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1]]
[[1]]
[[1, 1], [2, 1]]
Faux
[[2]]
[[1, 2], [2, 1]]
[[1, 1], [3, 1]]
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 4, 6, 10], [1, 4, 10, 20]]
[[6, 3, 1], [1, 1, 1], [3, 2, 1]]
[[2, 2, 2, 2], [2, 4, 6, 8], [2, 6, 12, 20], [2, 8, 20, 40]]
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
[[1, 5, 15, 34, 70], [1, 4, 10, 20, 34], [1, 3, 6, 10, 15], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1]]
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
. Ma réponse initiale était incorrecte pour celle-ci, mais correcte pour tous les cas de test actuels.