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]]
la source
[[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.Réponses:
Brachylog ,
282423 octetsCela semble assez long, mais le voici quand même
{|↔}\↰₁{k{a₀ᶠ+ᵐ}ᵐ⊆?h=₁}
Explication
Essayez-le en ligne!
la source
JavaScript (ES6), 114 octets
Essayez-le en ligne!
la source
MATL , 17 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Sorties
1
pour les matrices Pascal,0
sinon.Explication
la source
R , 104 octets
Essayez-le en ligne!
Méchant...
Crée une matrice canonique de Pascal
Z
avec des dimensions égales à celle dem
, puis teste si la matrice d'entréem
estidentical
àany
des rotations deZ
.la source
Fusain , 41 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Si le maximum de sa première ligne est supérieur à 1,
puis retournez le tableau d'entrée.
Si le maximum de sa première colonne est supérieur à 1,
puis mettez en miroir le tableau d'entrée.
Faites une boucle sur les éléments du tableau d'entrée et imprimez le résultat minimum (c'est-à-dire le logique Et de tous les résultats),
comparer chaque valeur à 1 si elle se trouve sur la première ligne, sinon la somme de la ligne ci-dessus jusqu'à et y compris la cellule ci-dessus.
la source
Python 2 , 129 octets
Essayez-le en ligne!
Renvoie
True
ifM
est une matrice de Pascal, else0
.la source
05AB1E , 29 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Kotlin , 269 octets
Essayez-le en ligne!
la source
Julia 0,7 , 78 octets
Essayez-le en ligne!
la source
Java (JDK) , 234 octets
Essayez-le en ligne!
Crédits
la source
i==s||j==S
ài==s|j==S
.m->{int l=m.length,i=0,j;for(;i<l;i++)for(j=0;j<l;j++)p=(i<1|j<1?m[i][j]<2:m[i][j]==m[i-1][j]+m[i][j-1])?p:0;return p>0;}
(122 octets)Gelée , 22 octets
Essayez-le en ligne!
Explication
Lien d'aide, vérifie si cette rotation de matrice est valide
Lien principal
la source