W ramach algorytmu kompresji standard JPEG rozwija matrycę do wektora wzdłuż przeciwbieżnych zmiennych kierunków:
Twoim zadaniem jest pobranie rozwiniętego wektora wraz z wymiarami macierzy i odtworzenie odpowiedniej macierzy. Jako przykład:
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3], 4, 3
powinien ustąpić
[1 2 3 4
5 6 7 8
9 1 2 3]
podczas gdy wymiary 6, 2
dawałyby
[1 2 6 3 1 2
5 9 4 7 8 3]
Zasady
Możesz wybrać tylko jeden z wymiarów jako dane wejściowe. Poszczególne dane wejściowe można przyjmować w dowolnej kolejności. Możesz założyć, że szerokość i wysokość są dodatnie i prawidłowe dla podanej długości wektora.
Możesz założyć, że elementy wektorowe są dodatnimi liczbami całkowitymi mniejszymi niż 10
.
Możesz napisać program lub funkcję, pobierając dane wejściowe przez STDIN (lub najbliższą alternatywę), argument wiersza poleceń lub argument funkcji i wypisując wynik przez STDOUT (lub najbliższą alternatywę), wartość zwracaną funkcji lub parametr funkcji (wyjściowej).
Wektor wejściowy może być podany w dowolnym wygodnym, jednoznacznym, płaskim formacie lub w postaci łańcucha.
Macierz wyjściowa może być w dowolnym dogodnym, jednoznacznym, zagnieżdżonym formacie listy lub ciągu znaków, lub jako płaska lista wraz z oboma wymiarami macierzy. (Lub, oczywiście, jako typ matrycy, jeśli Twój język je ma.)
Standardowy golf zasady .
Przypadki testowe
Każdy przypadek testowy ma formę vector width height => matrix
.
[1] 1 1 => [[1]]
[1 2 3 1] 2 2 => [[1 2] [3 1]]
[1 2 3 1] 4 1 => [[1 2 3 1]]
[1 2 5 9 6 3 4 7 1 2 8 3] 3 4 => [[1 2 3] [5 6 4] [9 7 8] [1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 4 3 => [[1 2 3 4] [5 6 7 8] [9 1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 6 2 => [[1 2 6 3 1 2] [5 9 4 7 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 12 1 => [[1 2 5 9 6 3 4 7 1 2 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 1 12 => [[1] [2] [5] [9] [6] [3] [4] [7] [1] [2] [8] [3]]
Powiązane wyzwania
- Zigzagify a Matrix (nieco prostsza transformacja odwrotna)
- Obróć anty-przekątne
źródło