W trójkącie Pascala każda liczba jest sumą dwóch liczb bezpośrednio nad nią, traktując puste miejsca jako zero:
Obracając trójkąt, możemy wycinać kwadratowe macierze o różnych rozmiarach i obrotach, które nazywam macierzami Pascala . Zauważ, że te macierze zawsze muszą zawierać pierwszą . Oto kilka przykładów:
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
Zadanie
Biorąc pod uwagę kwadratową macierz zawierającą liczby dodatnie w dowolnym rozsądnym formacie, zdecyduj, czy jest to macierz Pascala .
Zdecyduj, czy chcesz zwrócić wartości prawda lub fałsz, w zależności od tego, czy dane wejściowe są macierzą Pascala , czy też naprawić dwie wartości stałe i zwrócić jedną dla danych wejściowych prawdziwych, a drugą dla danych wejściowych fałszywych.
To jest golf golfowy , więc spróbuj użyć jak najmniej bajtów w wybranym języku. Wygrywa najkrótszy kod w każdym języku , dlatego nie przyjmuję odpowiedzi.
Przypadki testowe
Prawdziwe
[[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]]
Fałszywe
[[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]]
źródło
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
. Moja początkowa odpowiedź była niepoprawnie zgodna z prawdą, ale poprawna we wszystkich bieżących przypadkach testowych.Odpowiedzi:
Brachylog ,
282423 bajtówTo wydaje się dość długie, ale i tak jest
{|↔}\↰₁{k{a₀ᶠ+ᵐ}ᵐ⊆?h=₁}
Wyjaśnienie
Wypróbuj online!
źródło
JavaScript (ES6), 114 bajtów
Wypróbuj online!
źródło
MATL , 17 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjścia
1
dla macierzy Pascal, w0
przeciwnym razie.Wyjaśnienie
źródło
R 104 bajty
Wypróbuj online!
Paskudny...
Tworzy matrycę kanonicznej Pascala
Z
o wymiarach równej liczbiem
, a następnie sprawdza, czy matryca wejściem
jestidentical
doany
z obrotamiZ
.źródło
Węgiel drzewny , 41 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Jeśli maksimum pierwszego wiersza jest większe niż 1,
następnie odwróć tablicę wejściową.
Jeśli maksimum pierwszej kolumny jest większe niż 1,
następnie wykonaj kopię lustrzaną tablicy wejściowej.
Zapętlić elementy tablicy wejściowej i wydrukować minimalny wynik (tj. Logiczny i wszystkich wyników),
porównanie każdej wartości z 1, jeśli znajduje się ona w pierwszym wierszu, w przeciwnym razie suma wiersza powyżej do powyższej komórki włącznie.
źródło
Python 2 , 129 bajtów
Wypróbuj online!
Zwroty
True
jeśliM
jest Matrycą Pascala, w przeciwnym razie0
.źródło
05AB1E , 29 bajtów
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Kotlin , 269 bajtów
Wypróbuj online!
źródło
Julia 0,7 , 78 bajtów
Wypróbuj online!
źródło
Java (JDK) , 234 bajty
Wypróbuj online!
Kredyty
źródło
i==s||j==S
doi==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 bajty)Galareta , 22 bajty
Wypróbuj online!
Wyjaśnienie
Łącznik pomocniczy sprawdza, czy ten obrót macierzy jest prawidłowy
Główny link
źródło