Im Pascalschen Dreieck ist jede Zahl die Summe der beiden Zahlen direkt darüber, wobei leere Stellen als Null behandelt werden:
Durch Drehen des Dreiecks können wir quadratische Matrizen unterschiedlicher Größe und Drehung ausschneiden, die ich Pascals Matrizen nenne . Beachten Sie, dass diese Matrizen immer die oberste . Hier sind einige Beispiele:
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
Die Aufgabe
Entscheiden Sie bei einer quadratischen Matrix mit positiven Zahlen in einem beliebigen vernünftigen Format, ob es sich um eine Pascal-Matrix handelt .
Entscheiden bedeutet, entweder wahre oder falsche Werte zurückzugeben, je nachdem, ob es sich bei der Eingabe um eine Pascal-Matrix handelt , oder zwei konstante Werte festzulegen und einen für die wahren Eingaben und einen für die falschen Eingaben zurückzugeben.
Das ist Code-Golf , also versuchen Sie, so wenig Bytes wie möglich in der Sprache Ihrer Wahl zu verwenden. Der kürzeste Code in jeder Sprache gewinnt, daher werde ich keine Antwort akzeptieren.
Testfälle
Wahr
[[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]]
Falsch
[[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]]
quelle
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
. Meine ursprüngliche Antwort war in diesem Fall falsch, aber für alle aktuellen Testfälle korrekt.Antworten:
Brachylog ,
282423 BytesDas fühlt sich ziemlich lang an, aber hier ist es trotzdem
{|↔}\↰₁{k{a₀ᶠ+ᵐ}ᵐ⊆?h=₁}
Erläuterung
Probieren Sie es online!
quelle
JavaScript (ES6), 114 Byte
Probieren Sie es online!
quelle
MATL , 17 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Ansonsten Ausgänge
1
für Pascal-Matrizen0
.Erläuterung
quelle
R , 104 Bytes
Probieren Sie es online!
Böse...
Erzeugt ein kanonische Pascals Matrix
Z
mit Dimensionen , dass die Gleichm
prüft dann , ob die Eingangsmatrixm
istidentical
aufany
den DrehungenZ
.quelle
Kohle , 41 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Wenn das Maximum der ersten Zeile größer als 1 ist,
Klappen Sie dann das Eingabearray um.
Wenn das Maximum seiner ersten Spalte größer als 1 ist,
Spiegeln Sie dann das Eingabearray.
Durchlaufen Sie die Elemente des Eingabearrays und geben Sie das minimale Ergebnis (dh das logische Und aller Ergebnisse) aus.
Vergleichen Sie jeden Wert mit 1, wenn er sich in der ersten Zeile befindet, andernfalls die Summe der darüber liegenden Zeile bis einschließlich der darüber liegenden Zelle.
quelle
Python 2 , 129 Bytes
Probieren Sie es online!
Kehrt zurück
True
obM
es sich um eine Pascal-Matrix handelt0
.quelle
05AB1E , 29 Bytes
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Kotlin , 269 Bytes
Probieren Sie es online!
quelle
Julia 0,7 , 78 Bytes
Probieren Sie es online!
quelle
Java (JDK) , 234 Byte
Probieren Sie es online!
Credits
quelle
i==s||j==S
bisi==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 Bytes)Jelly , 22 Bytes
Probieren Sie es online!
Erläuterung
Hilfslink, prüft ob diese Rotation der Matrix gültig ist
Hauptlink
quelle