Powinieneś napisać program lub funkcję, która otrzymuje listę cyfr jako dane wejściowe i wyjściowe lub zwraca największą możliwą do uzyskania sumę poprzez umieszczenie tych cyfr w kwadracie.
Dane wejściowe zawsze będą zawierać kwadratową liczbę cyfr. Przykładem kwadratowego układu dla danych wejściowych 9 1 2 3 4 5 6 7 7
może być
677
943
125
Suma jest obliczana jako suma wszystkich wierszy i kolumn. Dla powyższego rozwiązania suma byłaby 677 + 943 + 125 + 691 + 742 + 735 = 3913
. Zauważ, że nie jest to maksymalna suma, więc nie jest to oczekiwany wynik.
Wejście
- Lista o długości
n^2
(n>=1
) zawierająca niezerowe cyfry (1-9
).
Wynik
- Liczba całkowita, największa możliwa do uzyskania suma cyfr wprowadzonych do kwadratu.
Przykłady
Przykładowy format to input => output
.
5 => 10
1 2 3 4 => 137
5 8 6 8 => 324
9 1 2 3 4 5 6 7 7 => 4588
2 4 9 7 3 4 2 1 3 => 3823
8 2 9 4 8 1 9 3 4 6 3 8 1 5 7 1 => 68423
5 4 3 6 9 2 6 8 8 1 6 8 5 2 8 4 2 4 5 7 3 7 6 6 7 => 836445
To jest golf golfowy, więc wygrywa najkrótszy wpis.
Odpowiedzi:
Pyth, 15 bajtów
Demonstracja. Uprząż testowa.
Uwaga: Wprowadź dowolny format sekwencji python, taki jak
a,b,c,
lub[a, b, c]
. Nie działaa
.To będzie wyjaśnienie dla przykładowego wejścia
5,8,6,8
.^LTUQ
: To jest lista mocy 10, aż do długościQ
.[1, 10, 100, 1000]
.^ ... 2
: Następnie bierzemy pary potęg 10[[1, 1], [1, 10], ...
..sM
: Następnie sumujemy te pary.[2, 11, 101, ...
Każda liczba odpowiada wartości położenia siatki. Wartość prawego dolnego rogu wynosi 2, ponieważ umieszczona tam cyfra znajduje się w miejscu dwóch liczb, w których się znajduje. Zwróć uwagę, że wygenerowano 16 wartości, mimo że potrzebujemy tylko 4. To zostanie wkrótce obsłużone.S
: Sortuj wartość w porządku rosnącym.[2, 11, 11, 20, 101, ...
. Zauważ, że jedynymi wartościami, które są istotne dla tego wejścia są pierwsze 4, ponieważ ten kwadrat nie będzie miał setek lub tysięcy miejsc.SQ
: Sortuj dane wejściowe w porządku rosnącym.[5, 6, 8, 8]
*V
: Wektoryzacja mnożenia na dwóch listach. Wektoryzacja mnożenia Pytha obcina dłuższe dane wejściowe, więc działa to tak samo[5*2, 6*11, 8*11, 8*20]
, jak wypełnianie siatki, od najmniejszej do największej, od dolnego prawego do górnego lewego.s
: Suma wyników,324
. Drukowanie jest niejawne.źródło
CJam, 23 bajty
Wypróbuj online . Generuje wagi dla każdej komórki i przypisuje najwyższe cyfry najwyższym wagom.
Alternatywa 23:
źródło
CJam, 25 bajtów
Całkiem proste podejście. Wygeneruj wszystkie kombinacje, uzyskaj sumę, wydrukuj największy.
Wypróbuj online tutaj
źródło