Wyzwanie
Biorąc pod uwagę n x m
macierz n > 1
i m > 1
liczby całkowite
1 2 3 4 5 6
oraz lista liczb całkowitych o dokładnie takiej 2x2
samej wartości, jak liczba bloków w macierzy ( (n-1)*(m-1)
jeśli potrzebujesz dokładnej liczby)
[1, 2]
Wyjście macierzy z każdym 2x2
blokiem obróconym o bieżącą wartość z listy w podanej kolejności. Powyższy przykład przyniesie
4 6 2 5 3 1
Pierwszy blok zostaje obrócony raz w prawo, a drugi blok zostaje obrócony dwa w prawo.
Notatki
- Dodatnia liczba całkowita oznacza, że obracasz się w prawo o tyle kroków.
- Ujemna liczba całkowita oznacza, że obracasz się w lewo o tyle kroków.
- Zero oznacza, że się nie obracasz.
- Obracasz bloki wierszami. Oznacza to, że zaczynasz w pierwszym rzędzie i idziesz w prawo. Po obróceniu każdego bloku w tym rzędzie przechodzisz do następnego. Na koniec każdy blok został obrócony dokładnie raz.
- Pamiętaj, że bloki zachodzą na siebie. Pierwsza matryca powyżej zawiera bloki
[[1,2],[4,5]]
i[[2,3],[5,6]]
na przykład. - Każdy obrót bloku wpływa na obrót sąsiednich bloków. Dlatego musisz wykonywać obroty zgodnie z powyższym wzorem.
Zasady
- Możesz wziąć dane wejściowe w najwygodniejszym formacie. Podaj w swojej odpowiedzi, którego używasz. To ma nie dopuszczać do zapoznania się z macierzy blokowej chociaż.
- Dozwolona funkcja lub pełny program.
- Domyślne reguły wejścia / wyjścia.
- Obowiązują standardowe luki .
- To jest golf golfowy , więc wygrywa najmniej bajtów. Tiebreaker to wcześniejsze zgłoszenie.
Przypadki testowe
Format wejściowy tutaj to lista list macierzy i normalna lista wartości.
[[1,2], [3,4]], [-3] -> [[4,1], [3,2]] [[1,1,1], [1,1,1]], [-333, 666] -> [[1,1,1], [1,1,1]] [[1,2,3], [4,5,6]], [1,2] -> [[4,6,2], [5,3,1]] [[1,2,3], [4,5,6], [7,8,9]], [4,0,12, -20] -> [[1,2,3], [4, 5,6], [7,8,9]] [[1,2,3,4,5], [5,4,3,2,1], [1,2,3,4,5]], [2, -3,4,1,6, 24,21, -5] -> [[4,1,5,2,4], [2,1,3,5,5], [3,2,4,3,1]]
Happy Coding!
źródło
4,=
poprawnego modulo (chyba że twój blok musi uruchomić się przynajmniej raz?).zW%
z rotacją?CJam,
65636055 bajtówTam musi być lepszy sposób to zrobić ...
Jest to nienazwana funkcja, która oczekuje instrukcji i macierzy (w tej kolejności) na stosie i pozostawia wynikową macierz na swoim miejscu.
Sprawdź to tutaj.
Wyjaśnienie
Nie mam teraz ochoty pisać pełnego podziału kodu, więc oto ogólny przegląd:
N
.k
do rozwiniętej tablicy zmienia cztery wskaźniki:k <- k+1
,k+1 <- k+1+N
,k+N <- k
,k+1+N <- k+1
. Dla każdego indeksuk
wzdłuż listy instrukcji obliczam odpowiadającą temu permutację i stosuję ją do rozwijanej tablicy wejściowej.źródło
Python 2 ,
166159 bajtówWypróbuj online!
źródło