Zainspirowany przez tym pytaniem Przepełnienie stosu .
Wyzwanie
Wejście
Tablica kwadratowych macierzy zawierających nieujemne liczby całkowite.
Wynik
Matryca kwadratowa zbudowana z macierzy wejściowych w następujący sposób.
Niech będzie rozmiarem każdej macierzy wejściowej, a liczbą macierzy wejściowych.
Dla jasności rozważmy następujące przykładowe macierze wejściowe ( , ):
3 5
4 10
6 8
12 11
2 0
9 1
- Zacznij od pierwszej matrycy wejściowej.
- Przesuń drugą macierz wejściową N- 1 o krok w dół i N -1 kroki w prawo, tak aby jej górny lewy wpis pokrywa się z prawym dolnym wpisem poprzedniego.
Wyobraź sobie drugą, przesuniętą matrycę, jakby była ułożona na górze pierwszej. Zsumuj dwie wartości przy wpisie zbiegu. Wpisz pozostałe wartości i wypełnij pozostałe wpisy,
0
aby uzyskać macierz . Z przykładowego wejścia wynik jest jak dotąd3 5 0 4 16 8 0 12 11
Dla każdej pozostałej macierzy wejściowej ustaw ją tak, aby jej górna lewa część pokrywała się z dolną prawą zakumulowaną macierzą wyników do tej pory. W tym przykładzie, w tym trzecia macierz wejściowa daje
3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
Wyjście jest macierzą uzyskaną po uwzględnieniu ostatniej macierzy wejściowej.
Dodatkowe zasady i wyjaśnienia
- i są dodatnimi liczbami całkowitymi.
- Opcjonalnie możesz wziąć i jako dodatkowe dane wejściowe.
- Dane wejściowe i wyjściowe można przyjmować dowolnymi rozsądnymi środkami . Ich format jest elastyczny jak zwykle.
- Programy lub funkcje są dozwolone w dowolnym języku programowania . Standardowe luki są zabronione .
- Najkrótszy kod w bajtach wygrywa.
Przypadki testowe:
W każdym przypadku najpierw wyświetlane są macierze wejściowe, a następnie dane wyjściowe.
, :
3 5 4 10 6 8 12 11 2 0 9 1 3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
, :
3 5 4 10 3 5 4 10
, :
4 7 23 5 39
, :
11 11 8 6 8 12 11 0 4 4 1 13 9 19 11 13 4 2 11 11 8 0 0 6 8 12 0 0 11 0 8 1 13 0 0 9 19 11 0 0 13 4 2
, :
14 13 10 0 13 20 21 3 9 22 0 8 17 3 19 16 14 13 0 0 0 10 13 20 0 0 0 21 12 22 0 0 0 0 25 3 0 0 0 19 16
źródło
Odpowiedzi:
Galaretka ,
1512 bajtówWypróbuj online!
Jak to działa
źródło
R ,
8881 bajtówWypróbuj online!
Trwa
list
matrycA
,N
iP
.Tworzy wymaganą macierz zer
o
i dodaje elementarnie zawartośćA
odpowiednich podmacierzy wo
.źródło
JavaScript (ES6), 102 bajty
Pobiera dane wejściowe jako
(n,p,a)
.Wypróbuj online!
W jaki sposób?
gdzie niezdefiniowane komórki są zastępowane zerami.
źródło
Python 2 , 124 bajty
Wypróbuj online!
źródło
Galaretka , 12 bajtów
Wypróbuj online!
12 bajtów
Jeśli dozwolone
ZŻ€‘ɼ¡)⁺S
są dodatkowe zera, to fajne 9-bajtowe rozwiązanie. TIO .źródło
Galaretka , 20 bajtów
Wypróbuj online!
Bah, Jelly ma dzisiaj postawę ...
źródło
Pip , 37 bajtów
Funkcja, która pobiera listę list list. Wypróbuj online!
źródło
Python 2 , 124 bajty
Wypróbuj online!
źródło
Węgiel , 52 bajty
Wypróbuj online! Link jest do pełnej wersji kodu i zawiera dwa bajty dla nieco użytecznego formatowania. Zacząłem od wersji, która wypełniała wszystkie tablice, a następnie je podsumowałam, ale zamiast tego byłam w stanie zagrać w golfa. Wyjaśnienie:
Zmniejsz wartość wejściowąN. .
Oblicz rozmiar wyniku( N- 1 ) P+ 1 i odwzorować dwukrotnie na niejawny zakres, tworząc w ten sposób macierz wyników, która jest drukowana w sposób niejawny.
Odwzoruj na niejawny zakres powyżej wartości wejściowejP. i pomnóż każdy element przez N.- 1 . Następnie zmapuj wynikowy zakres i zsumuj wynik końcowy.
Sprawdź, czy żaden z indeksów nie jest poza zakresem.
Przesunięcie do oryginalnego wejścia, aby pobrać żądaną wartość.
źródło