Wyzwanie:
Biorąc pod uwagę macierz NxN, gdzie i jedną z ośmiu różnych „opcji składania”, wyprowadza tablicę / listę 2D z odjętymi wartościami.
Osiem opcji składania to: od lewej do prawej; od prawej do lewej; od góry do dołu; od dołu do góry; od lewej do prawej; od góry do dołu; od dołu do lewej do prawej; od dołu do góry w lewo.
Przykłady krok po kroku:
Macierz wejściowa:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Dzięki opcji składania od góry do dołu otrzymujemy następujące wyniki:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Czemu? Składamy od góry do dołu. Ponieważ wymiary matrycy są równe, nie mamy środkowej warstwy do zachowania w obecnej postaci. -Tym rząd zostanie odjęta przez -tym rzędu (byłby -tym rzędu dla nieparzystych macierzy wymiarów); tak się staje . -tym rząd zostanie odjęta przez -tym rzędu (byłby -tym rzędu dla nieparzystych macierzy wymiarów); tak się staje .[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
[0, 22, -5, 68]
Zamiast opcji składania od dołu do góry w lewo (z tą samą matrycą wejściową powyżej) otrzymujemy następujące wyniki:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
Z następującymi składanymi odejmowaniami:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Zasady konkursu:
- Możesz użyć dowolnych ośmiu różnych liter
[A-Za-z]
lub odrębnych cyfr z zakresu dla opcji składania. Liczby lub są prawdopodobnie najczęstszymi opcjami, ale jeśli chcesz użyć różnych liczb w zakresie do niektórych inteligentnych obliczeń, możesz to zrobić. Podaj, które opcje składania wykorzystałeś w swojej odpowiedzi. - Macierz wejściowa zawsze będzie kwadratową macierzą NxN, więc nie musisz obsługiwać żadnych prostokątnych macierzy NxM. będzie również zawsze wynosić co najmniej 2, ponieważ nie można złożyć pustej matrycy lub matrycy 1x1.
- Dane wejściowe macierzy zawsze będą zawierać nieujemne liczby w zakresie (dlatego liczby na wyjściu będą zatem w zakresie ).
- Przy składaniu (anty-) ukośnym lub składaniu pionowym / poziomym w nieparzystych wymiarach środkowa „warstwa” pozostanie niezmieniona.
- I / O jest elastyczny. Może być tablicą 2D / listą liczb całkowitych; może być zwrócony lub wydrukowany jako ciąg rozdzielany spacjami i znakami nowej linii; możesz zmodyfikować macierz wejściową i zastąpić liczby, które powinny zniknąć,
null
lub liczby spoza[-999, 999]
zakresu, aby wskazać, że zniknęły; itd itd.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Matryca wejściowa 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
Matryca wejściowa 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
lub dowolnej liczby całkowitej z zakresu [-999,999]
, więc kolejność nie ma znaczenia. I przepraszam, ale musisz wypisać poprawne pasowanie na podstawie danych wejściowych, więc wypisywanie wszystkich ośmiu jest niedozwolone.