Carré de chiffres avec la plus grande somme

9

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 7pourrait ê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.

randomra
la source
Juste pour vérifier, l'entrée doit-elle être exactement des chiffres séparés par des espaces ou un format de liste sans ambiguïté est-il correct?
Sp3000
@ Sp3000 Tout format de liste simple et sans ambiguïté est correct, y compris le format de liste de la langue choisie.
randomra

Réponses:

4

Pyth, 15 octets

s*VSsM^^LTUQ2SQ

Manifestation. Harnais de test.

Remarque: Entrez dans n'importe quel format de séquence python, tel que a,b,c,ou [a, b, c]. Échoue a.

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 de Q. [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.

isaacg
la source
4

CJam, 23 octets

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

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:

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

CJam, 25 octets

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

Approche assez simple. Générez toutes les combinaisons, obtenez la somme, imprimez le plus grand.

Essayez-le en ligne ici

Optimiseur
la source