合計が最大の数字からの平方


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

回答:


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です。これは、そこに配置された数字が2つの数値の1の位にあるためです。4だけが必要な場合でも、16の値が生成されたことに注意してください。これはまもなく処理されます。

S:値を昇順でソートします。[2, 11, 11, 20, 101, ...。この正方形には数百または数千の場所がないため、この入力に関連する唯一の値は最初の4であることに注意してください。

SQ:入力を昇順でソートします。 [5, 6, 8, 8]

*V:2つのリストに対するベクトル化された乗算。Pythのベクトル化された乗算は長い方の入力を切り捨てるので、これはを実行します。これは[5*2, 6*11, 8*11, 8*20]、グリッドを埋めるのと同じで、最小から最大、右下から左上に向かって行われます。

s:結果を合計します324。印刷は暗黙的です。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.