Quadrat aus Ziffern mit der größten Summe

9

Sie sollten ein Programm oder eine Funktion schreiben, die eine Liste von Ziffern als Eingabe und Ausgabe empfängt oder die größte erreichbare Summe zurückgibt, indem Sie diese Ziffern in ein Quadrat setzen.

Die Eingabe enthält immer eine quadratische Anzahl von Ziffern. Eine beispielhafte quadratische Anordnung für die Eingabe 9 1 2 3 4 5 6 7 7könnte sein

677
943
125

Die Summe wird als Summe aller Zeilen und Spalten berechnet. Für die obige Anordnung wäre die Summe 677 + 943 + 125 + 691 + 742 + 735 = 3913. Beachten Sie, dass dies nicht die maximale Summe ist, sodass dies nicht die erwartete Ausgabe ist.

Eingang

  • Eine Liste mit der Länge n^2( n>=1), die Ziffern ungleich Null enthält ( 1-9).

Ausgabe

  • Eine Ganzzahl, die größte Summe, die mit den eingegebenen Ziffern in einem Quadrat erreicht werden kann.

Beispiele

Beispielformat ist 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

Dies ist Code Golf, so dass der kürzeste Eintrag gewinnt.

randomra
quelle
Muss die Eingabe zur Überprüfung genau durch Leerzeichen getrennt sein oder ist ein eindeutiges Listenformat in Ordnung?
Sp3000
@ Sp3000 Jedes einfache eindeutige Listenformat ist in Ordnung, einschließlich des Listenformats der von Ihnen gewählten Sprache.
Randomra

Antworten:

4

Pyth, 15 Bytes

s*VSsM^^LTUQ2SQ

Demonstration. Kabelbaum prüfen.

Hinweis: Eingabe in einem beliebigen Python-Sequenzformat, z. B. a,b,c,oder [a, b, c]. Schlägt weiter a.

Dies ist eine Erklärung für die Beispieleingabe 5,8,6,8.

^LTUQ: Dies ist eine Liste von Potenzen von 10 bis zur Länge von Q. [1, 10, 100, 1000].

^ ... 2: Dann nehmen wir Paare von Potenzen von 10 [[1, 1], [1, 10], ....

sM: Dann addieren wir diese Paare. [2, 11, 101, ...Jede Zahl steht für den Wert eines Rasterorts. Der Wert in der unteren rechten Ecke ist 2, da sich die dort platzierte Ziffer an der Stelle der beiden Zahlen befindet. Beachten Sie, dass 16 Werte generiert wurden, obwohl wir nur 4 benötigen. Dies wird in Kürze behandelt.

S: Sortieren Sie den Wert in aufsteigender Reihenfolge. [2, 11, 11, 20, 101, .... Beachten Sie, dass die einzigen Werte, die für diese Eingabe relevant sind, die ersten 4 sind, da dieses Quadrat keine Hunderte oder Tausende Stellen hat.

SQ: Sortieren Sie die Eingabe in aufsteigender Reihenfolge. [5, 6, 8, 8]

*V: Vektorisierte Multiplikation über die beiden Listen. Die vektorisierte Multiplikation von Pyth schneidet die längere Eingabe ab. Dies [5*2, 6*11, 8*11, 8*20]entspricht also dem Ausfüllen des Rasters, dem kleinsten bis größten, von rechts unten nach links oben.

s: Summiere die Ergebnisse , 324. Drucken ist implizit.

isaacg
quelle
4

CJam, 23 Bytes

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

Probieren Sie es online aus . Erzeugt die Gewichte für jede Zelle und weist den höchsten Gewichten die höchsten Ziffern zu.

Eine Alternative 23:

q~$_,mQ_,A\f#*_$.+$.*:+
Sp3000
quelle
2

CJam, 25 Bytes

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

Ziemlich direkter Ansatz. Generieren Sie alle Kombinationen, erhalten Sie die Summe, drucken Sie am größten.

Probieren Sie es hier online aus

Optimierer
quelle