Biorąc pod uwagę nieposortowaną listę unikalnych ściśle dodatnich liczb całkowitych, minimalnie posortuj ją do macierzy 2D. Lista wejście jest gwarancją długość zespolonego, co oznacza, że matrycę wyjściowe nie musi być kwadratowe, ale ma wielkość n x m
z n,m > 1
.
„Minimalne sortowanie” oznacza tutaj:
- Posortuj listę w porządku rosnącym.
- Kompaktowy macierzy wyjściowej, jak to tylko możliwe - minimalizacja sumy wymiarów matrycy (na przykład w przypadku
20
elementów wejściowych jak wejściowych,5x4
lub4x5
matryca wyjście jest to wymagane, a nie2x10
). - Zagęszczaj posortowane liczby jak najdalej w lewym górnym rogu macierzy, zaczynając od pierwszego elementu na posortowanej liście.
- Można to traktować jako sortowanie listy, a następnie krojenie jej wzdłuż przekątnych matrycy, zaczynając od lewego górnego rogu.
Przykłady:
Dla danych 1..20
wyjściowych jest to macierz 5x4 lub 4x5, jak następuje:
1 2 4 7 11
3 5 8 12 15
6 9 13 16 18
10 14 17 19 20
1 2 4 7
3 5 8 11
6 9 12 15
10 13 16 18
14 17 19 20
Dla danych [3, 5, 12, 9, 6, 11]
wyjściowych jest to 2x3 lub 3x2 w następujący sposób
3 5 9
6 11 12
3 5
6 9
11 12
W przypadku danych wejściowych [14, 20, 200, 33, 12, 1, 7, 99, 58]
wyjściowy wynik to 3x3 w następujący sposób
1 7 14
12 20 58
33 99 200
Dla danych wejściowych 1..10
wyjście powinno wynosić 2x5 lub 5x2 w następujący sposób
1 2 4 6 8
3 5 7 9 10
1 2
3 4
5 6
7 8
9 10
[5, 9, 33, 65, 12, 7, 80, 42, 48, 30, 11, 57, 69, 92, 91]
Wyjściowy sygnał wyjściowy to 5x3 lub 3x5 w następujący sposób
5 7 11 33 57
9 12 42 65 80
30 48 69 91 92
5 7 11
9 12 33
30 42 57
48 65 80
69 91 92
Zasady
- Można założyć, że dane wejściowe pasują do rodzimej liczby całkowitej w twoim języku.
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
źródło
15
element testowy elementu.Odpowiedzi:
Galaretka ,
242220 bajtówWypróbuj online!
Zaoszczędź 2 bajty dzięki @ Jonathan Allan .
Wyjaśnienie
źródło
L%J¬TżṚ$
->LÆDżṚ$
powinienem uratować dwapSÞỤs
.Python 2 ,
160158153151 bajtów-2 bajty dzięki Erikowi Outgolfer
-2 bajty dzięki Mr. Xcoder
Wypróbuj online! lub Wypróbuj wszystkie przypadki testowe
źródło
max(0,n-x)
dla -2 bajtów.R
11095 bajtówWypróbuj online!
Jak to działa
Giuseppe zapisał aż 15 (!) Bajtów dzięki następującym sztuczkom
length(x)
przezsum(x|1)
(-1 bajt)floor()
i tak nie jest wymagane, ponieważ:
zaokrągla w dół (-7)^.5
jest krótszy niżsqrt()
(-3)col(X) + row(X)
zamiastouter
(fajnie!)t(X)
- rozczarowujące;)Oryginalne rozwiązanie
Wyglądałoby to bardziej wymyślne z
outer
zastąpionerow(X)+col(X)
, ale to wymagałoby zainicjować macierz wyjściowąX
pierwszy.Wypróbuj online!
źródło
JavaScript (ES6), 172 bajty
Wyjaśnienie
Przypadki testowe
Pokaż fragment kodu
źródło
Perl 5 , 132 bajtów
Wypróbuj online!
Podprogram zwraca tablicę 2-D. Łącze TIO zawiera kod stopki do wyświetlania wyniku testu.
źródło
Oktawa , 151 bajtów
Korzystanie z trzech różnych rodzajów konstrukcji pętli.
Wypróbuj online!
Rozwinięty:
źródło
'
wnnz(v')
wymagane?'
nie jest wymagane, jeśli zawijam wyrażenie zakresu, np.1:20
Wokół nawiasów ([1:20]
) w miejscu wywołania (aby uczynić go faktycznym wektorem). Najwyraźniej w Octave operator dwukropka nie tworzy wektora , ale stałą zakresu, która zajmuje znacznie mniej miejsca w pamięci. Z jakiegoś powodunnz()
nie działa z tym typem, ale transpozycja stałej zakresu daje wektor, więc działa z apostrofem. Wywołanie funkcji z faktycznym wektorem eliminuje potrzebę'
.nnz(1:20)
nie działa to prawdopodobnie bug (max(1:20)
,sum(1:20)
etc są ważne).nnz
. Chcesz to zrobić sam, czy powinienem?Łuska , 15 bajtów
Działa to z użyciem brutalnej siły, więc dłuższe przypadki testowe mogą przekroczyć limit czasu. Wypróbuj online!
Wyjaśnienie
źródło
C (gcc) , 269 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 233 bajty
Wyjaśnienie
źródło
Java 10,
199188186 bajtówWypróbuj online.
Na podstawie mojej odpowiedzi tutaj .
Wyjaśnienie:
źródło