Quadrato dalle cifre con la somma più grande


9

Dovresti scrivere un programma o una funzione che riceve un elenco di cifre come input e output o restituisce la somma più grande ottenibile mettendo queste cifre in un quadrato.

L'input conterrà sempre un numero quadrato di cifre. 9 1 2 3 4 5 6 7 7Potrebbe essere una disposizione quadrata di esempio per l'input

677
943
125

La somma viene calcolata come la somma di tutte le righe e colonne. Per la disposizione di cui sopra la somma sarebbe 677 + 943 + 125 + 691 + 742 + 735 = 3913. Si noti che questa non è la somma massima, quindi non è l'output previsto.

Ingresso

  • Un elenco con lunghezza n^2( n>=1) contenente cifre diverse da zero ( 1-9).

Produzione

  • Un numero intero, la somma più grande ottenibile con le cifre di input inserite in un quadrato.

Esempi

Il formato di esempio è 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

Questo è il codice golf, quindi vince l'ingresso più breve.


Solo per ricontrollare, l'input deve essere esattamente cifre separate da spazio o un formato elenco non ambiguo va bene?
Sp3000,

@ Sp3000 Qualsiasi formato di elenco semplice e inequivocabile va bene, incluso il formato di elenco della lingua scelta.
randomra,

Risposte:


4

Pyth, 15 byte

s*VSsM^^LTUQ2SQ

Dimostrazione. Collaudare l'imbragatura.

Nota: input in qualsiasi formato di sequenza Python, come a,b,c,o [a, b, c]. Non funziona a.

Questa sarà una spiegazione per l'input di esempio 5,8,6,8.

^LTUQ: Questa è una lista di poteri di 10, fino alla lunghezza di Q. [1, 10, 100, 1000].

^ ... 2: Quindi prendiamo coppie di poteri di 10 [[1, 1], [1, 10], .....

sM: Quindi sommiamo quelle coppie. [2, 11, 101, ...Ogni numero rappresenta il valore di una posizione della griglia. Il valore dell'angolo in basso a destra è 2, perché la cifra posizionata lì è al posto di uno dei due numeri in cui si trova. Nota che sono stati generati 16 valori, anche se ne abbiamo bisogno solo 4. Questo verrà gestito a breve.

S: Ordina il valore in ordine crescente. [2, 11, 11, 20, 101, .... Si noti che gli unici valori rilevanti per questo input sono i primi 4, poiché questo quadrato non avrà centinaia o migliaia di posizioni.

SQ: Ordina l'ingresso in ordine crescente. [5, 6, 8, 8]

*V: Moltiplicazione vettoriale delle due liste. La moltiplicazione vettoriale di Pyth tronca l'input più lungo, quindi ciò [5*2, 6*11, 8*11, 8*20]equivale a riempire la griglia, dal più piccolo al più grande, in basso a destra in alto a sinistra.

s: Sommare i risultati, 324. La stampa è implicita.


4

CJam, 23 byte

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

Provalo online . Genera i pesi per ogni cella e assegna le cifre più alte ai pesi più alti.

Un'alternativa 23:

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

2

CJam, 25 byte

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

Approccio piuttosto diretto. Genera tutte le combinazioni, ottieni la somma, stampa più grande.

Provalo online qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.