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.Odpowiedzi:
Oktawa ,
256248244248 bajtówWypróbuj online!
-2 bajty (i odrobina porządków) dzięki Luisowi Mendo
+2 bajty z powodu korekty TB
Operacje 1-indeksowane dla wartości b od 1-8:
To sprawiło mi ból głowy, później odpowiednio go zagram
źródło
rows(a)
zamiastsize(a,2)
Galaretka ,
3934 bajtówMożliwe jest dalsze granie w golfa poprzez połączenie niektórych z dwóch „funkcji”.
... tak: -5 dzięki NickKennedy!
Wypróbuj online!
Dyadyczny link akceptujący liczbę całkowitą (instrukcja) i listę list liczb (macierz).
W jaki sposób?
Link tworzy kod Jelly, który jest następnie oceniany przy użyciu M jako danych wejściowych ...
Każda z ośmiu opcji to:
Każdy z nich (z wyjątkiem
0
i4
) stosuje transformacjęM
przy użyciu niektórychZ
(transponuj),Ṛ
(odwróć) iU
(odwróć każdy); następnie jedna z dwóch funkcji (patrz poniżej), a następnie odwrotność transformacji konfiguracji (jeśli była taka) zaimplementowana z odwrotnością kodu.Dwie wewnętrzne funkcje to:
źródło
JavaScript (ES6),
149 ... 133128 bajtów(matrix)(d)
NaN
Wypróbuj online!
Skomentował
źródło
Galaretka ,
7134 bajtówWypróbuj online!
Pakiet testowy
Pełny program. Właściwym argumentem jest macierz. Lewy argument to rodzaj fold:
Przepisano, aby użyć 5-bitowego binarnego binarnego jako wejścia. Pamiętaj, że program podany powyżej nie będzie działał wielokrotnie dla wielu fałd.
źródło
Oktawa ,
482 bajtów, 459 bajtówDane do decydowania o kierunkach składania są:
1) od lewej do prawej
2) od dołu do góry
3) od prawej do lewej
4) od góry do dołu
5) od tr do bl
6) od br do tl
7) od bl do tr
8) od tl do br
Każde połączenie generuje tylko określone fold, a nie wszystkie (co prawdopodobnie zajęłoby mniej bajtów). Największy problem polega na tym, że w tym przypadku nie mogę dowiedzieć się, jak umieścić fałdy 1-4 i 5-8 w tej samej pętli. Ale przynajmniej oktawa ma ładnie wyglądające matryce.
Wypróbuj online!
Eliminacja wyjściowa kosztuje bajty, więc zignoruj wszystko, co nie jest instrukcją return (ans =).
źródło
Węgiel drzewny ,
7877 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wykorzystuje następujące opcje składania:
Złożone wartości są zastępowane pustymi ciągami. Wyjaśnienie:
Obróć tablicę cztery razy.
W razie potrzeby złóż tablicę poziomo.
W razie potrzeby złóż tablicę po przekątnej.
Wyjmij tablicę po jej obróceniu do pierwotnej orientacji.
źródło