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 7
kö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.
Antworten:
Pyth, 15 Bytes
Demonstration. Kabelbaum prüfen.
Hinweis: Eingabe in einem beliebigen Python-Sequenzformat, z. B.
a,b,c,
oder[a, b, c]
. Schlägt weitera
.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 vonQ
.[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.quelle
CJam, 23 Bytes
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:
quelle
CJam, 25 Bytes
Ziemlich direkter Ansatz. Generieren Sie alle Kombinationen, erhalten Sie die Summe, drucken Sie am größten.
Probieren Sie es hier online aus
quelle