Kwadrat z cyfr z największą sumą

9

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 7moż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.

randomra
źródło
Tylko w celu podwójnego sprawdzenia, czy dane wejściowe muszą być dokładnie oddzielonymi spacjami cyframi, czy też jednoznaczny format listy jest w porządku?
Sp3000,
@ Sp3000 Każdy prosty jednoznaczny format listy jest w porządku, w tym format listy wybranego języka.
randomra

Odpowiedzi:

4

Pyth, 15 bajtów

s*VSsM^^LTUQ2SQ

Demonstracja. Uprząż testowa.

Uwaga: Wprowadź dowolny format sekwencji python, taki jak a,b,c,lub [a, b, c]. Nie działa a.

To będzie wyjaśnienie dla przykładowego wejścia 5,8,6,8.

^LTUQ: To jest lista mocy 10, aż do długości Q. [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.

isaacg
źródło
4

CJam, 23 bajty

q~$_,mQ,A\f#2m*::+$.*:+

Wypróbuj online . Generuje wagi dla każdej komórki i przypisuje najwyższe cyfry najwyższym wagom.

Alternatywa 23:

q~$_,mQ_,A\f#*_$.+$.*:+
Sp3000
źródło
2

CJam, 25 bajtów

q~_e!\,mqf/{_z+Afb:+}%$W=

Całkiem proste podejście. Wygeneruj wszystkie kombinacje, uzyskaj sumę, wydrukuj największy.

Wypróbuj online tutaj

Optymalizator
źródło