Vous devez écrire un programme ou une fonction qui reçoit une liste de chiffres en entrée et en sortie ou renvoie la plus grande somme réalisable en mettant ces chiffres dans un carré.
L'entrée contiendra toujours un nombre carré de chiffres. Un exemple de disposition carrée pour l'entrée 9 1 2 3 4 5 6 7 7
pourrait être
677
943
125
La somme est calculée comme la somme de toutes les lignes et colonnes. Pour l'arrangement ci-dessus, la somme serait 677 + 943 + 125 + 691 + 742 + 735 = 3913
. Notez que ce n'est pas la somme maximale, donc ce n'est pas la sortie attendue.
Contribution
- Une liste de longueur
n^2
(n>=1
) contenant des chiffres non nuls (1-9
).
Production
- Un entier, la plus grande somme atteignable avec les chiffres d'entrée placés dans un carré.
Exemples
L'exemple de format est 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
C'est le golf de code, donc l'entrée la plus courte gagne.
Réponses:
Pyth, 15 octets
Manifestation. Harnais de test.
Remarque: Entrez dans n'importe quel format de séquence python, tel que
a,b,c,
ou[a, b, c]
. Échouea
.Ce sera une explication pour l'exemple d'entrée
5,8,6,8
.^LTUQ
: Ceci est une liste de pouvoirs de 10, jusqu'à la longueur deQ
.[1, 10, 100, 1000]
.^ ... 2
: Ensuite, nous prenons des paires de pouvoirs de 10[[1, 1], [1, 10], ...
..sM
: Ensuite, nous additionnons ces paires.[2, 11, 101, ...
Chaque nombre représente la valeur d'un emplacement de grille. La valeur du coin inférieur droit est 2, car le chiffre qui y est placé se trouve à la place des deux nombres dans lesquels il se trouve. Notez que 16 valeurs ont été générées, même si nous n'en avons besoin que de 4. Cela sera traité sous peu.S
: Triez la valeur dans l'ordre croissant.[2, 11, 11, 20, 101, ...
. Notez que les seules valeurs pertinentes pour cette entrée sont les 4 premières, car ce carré n'aura pas de centaines ou de milliers de places.SQ
: Trie l'entrée par ordre croissant.[5, 6, 8, 8]
*V
: Multiplication vectorisée sur les deux listes. La multiplication vectorisée de Pyth tronque l'entrée la plus longue, donc cela fonctionne[5*2, 6*11, 8*11, 8*20]
, équivalent au remplissage de la grille, du plus petit au plus grand, en bas à droite en haut à gauche.s
: La somme des résultats,324
. L'impression est implicite.la source
CJam, 23 octets
Essayez-le en ligne . Génère les poids pour chaque cellule et attribue les chiffres les plus élevés aux poids les plus élevés.
Une alternative 23:
la source
CJam, 25 octets
Approche assez simple. Générez toutes les combinaisons, obtenez la somme, imprimez le plus grand.
Essayez-le en ligne ici
la source