Квадрат из цифр с наибольшей суммой


9

Вы должны написать программу или функцию, которая получает список цифр в качестве входных и выходных данных или возвращает наибольшую сумму, достижимую путем помещения этих цифр в квадрат.

Ввод всегда будет содержать квадратное число цифр. Пример квадратного расположения для ввода 9 1 2 3 4 5 6 7 7может быть

677
943
125

Сумма рассчитывается как сумма всех строк и столбцов. Для вышеуказанной договоренности сумма будет 677 + 943 + 125 + 691 + 742 + 735 = 3913. Обратите внимание, что это не максимальная сумма, поэтому это не ожидаемый результат.

вход

  • Список с функцией length n^2( n>=1), содержащий ненулевые цифры ( 1-9).

Вывод

  • Целое число, наибольшая сумма, достижимая с помощью введенных цифр в квадрате.

Примеры

Пример формата есть 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

Это код гольф, поэтому выигрывает самый короткий вход.


Просто чтобы перепроверить, должны ли входные данные быть точно разделенными пробелами цифрами или это однозначный формат списка, хорошо?
Sp3000

@ Sp3000 Подойдет любой простой однозначный формат списка, включая формат списка выбранного вами языка.
рандома

Ответы:


4

Pyth, 15 байт

s*VSsM^^LTUQ2SQ

Демонстрация. Тестовый жгут.

Примечание: ввод в любом формате последовательности Python, например, a,b,c,или [a, b, c]. Сбой на a.

Это будет объяснением для примера ввода 5,8,6,8.

^LTUQЭто список степеней от 10 до длины Q. [1, 10, 100, 1000],

^ ... 2Затем мы берем пары степеней 10 [[1, 1], [1, 10], .....

sMЗатем мы суммируем эти пары. [2, 11, 101, ...Каждое число соответствует значению местоположения сетки. Значение нижнего правого угла равно 2, потому что размещенная там цифра находится в тех местах двух чисел, в которых она находится. Обратите внимание, что было сгенерировано 16 значений, даже если нам нужно только 4. Это будет обработано в ближайшее время.

S: Сортировка значения в порядке возрастания. [2, 11, 11, 20, 101, ..., Обратите внимание, что единственными значениями, которые имеют отношение к этому входу, являются первые 4, потому что этот квадрат не будет иметь сотни или тысячи мест.

SQ: Сортировка ввода по возрастанию. [5, 6, 8, 8]

*V: Векторизация умножения на два списка. Векторизованное умножение Пита усекает более длинные входные данные, поэтому выполняется [5*2, 6*11, 8*11, 8*20], эквивалентно заполнению сетки, от наименьшего к наибольшему, справа внизу вверх слева.

s: Подвести итоги 324. Печать неявная.


4

CJam, 23 байта

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

Попробуйте онлайн . Генерирует веса для каждой ячейки и присваивает самые высокие цифры самым высоким весам.

Альтернатива 23:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.