Вы должны написать программу или функцию, которая получает список цифр в качестве входных и выходных данных или возвращает наибольшую сумму, достижимую путем помещения этих цифр в квадрат.
Ввод всегда будет содержать квадратное число цифр. Пример квадратного расположения для ввода 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
Это код гольф, поэтому выигрывает самый короткий вход.
Ответы:
Pyth, 15 байт
Демонстрация. Тестовый жгут.
Примечание: ввод в любом формате последовательности 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
. Печать неявная.источник
CJam, 23 байта
Попробуйте онлайн . Генерирует веса для каждой ячейки и присваивает самые высокие цифры самым высоким весам.
Альтернатива 23:
источник
CJam, 25 байтов
Довольно прямой подход. Сгенерируйте все комбинации, получите сумму, напечатайте наибольшее.
Попробуйте онлайн здесь
источник