位数最大的平方


9

您应该编写一个程序或函数,该程序将接收数字列表作为输入并输出,或者通过将这些数字放在一个正方形中来返回最大的和。

输入将始终包含数字的平方。输入的示例正方形排列9 1 2 3 4 5 6 7 7可以是

677
943
125

该总和计算为所有行和列的总和。对于上述安排,总和为677 + 943 + 125 + 691 + 742 + 735 = 3913。请注意,这不是最大和,因此这不是预期的输出。

输入项

  • 长度为n^2n>=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任何简单明确的列表格式都可以,包括您选择的语言的列表格式。
randomra

Answers:


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,因为放置在其中的数字位于它所在的两个数字的一​​个位置。请注意,即使我们只需要4,也会生成16个值。这将很快处理。

S:按升序对值进行排序。[2, 11, 11, 20, 101, ...。请注意,与此输入相关的唯一值是前4个,因为该正方形不会有成百上千的位置。

SQ:按升序对输入进行排序。 [5, 6, 8, 8]

*V:对两个列表进行矢量化乘法。Pyth的向量化乘法会截断较长的输入,因此执行[5*2, 6*11, 8*11, 8*20],相当于填充网格,从最小到最大,从右下到左上。

s:对结果求和324。打印是隐式的。


4

CJam,23个字节

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

在线尝试。为每个单元格生成权重,并将最高的数字分配给最高的权重。

备选23:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.