Debe escribir un programa o función que reciba una lista de dígitos como entrada y salida o que devuelva la suma más grande posible colocando estos dígitos en un cuadrado.
La entrada siempre contendrá un número cuadrado de dígitos. Un ejemplo de disposición cuadrada para la entrada 9 1 2 3 4 5 6 7 7
podría ser
677
943
125
La suma se calcula como la suma de todas las filas y columnas. Para el arreglo anterior la suma sería 677 + 943 + 125 + 691 + 742 + 735 = 3913
. Tenga en cuenta que esta no es la suma máxima, por lo que este no es el resultado esperado.
Entrada
- Una lista con longitud
n^2
(n>=1
) que contiene dígitos distintos de cero (1-9
).
Salida
- Un número entero, la suma más grande que se puede lograr con los dígitos de entrada puestos en un cuadrado.
Ejemplos
El formato de ejemplo es 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
Este es el código de golf, por lo que gana la entrada más corta.
Respuestas:
Pyth, 15 bytes
Demostración. Prueba de arnés.
Nota: Ingrese en cualquier formato de secuencia de Python, como
a,b,c,
o[a, b, c]
. Falla ena
.Esta será una explicación para el ejemplo de entrada
5,8,6,8
.^LTUQ
: Esta es una lista de potencias de 10, a lo largo deQ
.[1, 10, 100, 1000]
.^ ... 2
: Entonces, tomamos pares de poderes de 10[[1, 1], [1, 10], ...
..sM
: Entonces, sumamos esos pares.[2, 11, 101, ...
Cada número representa el valor de una ubicación de cuadrícula. El valor de la esquina inferior derecha es 2, porque el dígito colocado allí está en el lugar de las unidades de los dos números en los que se encuentra. Tenga en cuenta que se generaron 16 valores, aunque solo necesitamos 4. Esto se manejará en breve.S
: Ordenar el valor en orden creciente.[2, 11, 11, 20, 101, ...
. Tenga en cuenta que los únicos valores que son relevantes para esta entrada son los primeros 4, porque este cuadrado no tendrá cientos o miles de lugares.SQ
: Ordena la entrada en orden ascendente.[5, 6, 8, 8]
*V
: Multiplicación vectorizada sobre las dos listas. La multiplicación vectorizada de Pyth trunca la entrada más larga, por lo que se realiza[5*2, 6*11, 8*11, 8*20]
, equivalente al relleno de la cuadrícula, de menor a mayor, de abajo a la derecha de arriba a la izquierda.s
: Sumar los resultados,324
. La impresión es implícita.fuente
CJam, 23 bytes
Pruébalo en línea . Genera los pesos para cada celda y asigna los dígitos más altos a los pesos más altos.
Una alternativa 23:
fuente
CJam, 25 bytes
Enfoque bastante directo. Genere todas las combinaciones, obtenga la suma, imprima más grande.
Pruébalo en línea aquí
fuente