Kuadrat dari Digit dengan Jumlah Terbesar

9

Anda harus menulis sebuah program atau fungsi yang menerima daftar angka sebagai input dan output atau mengembalikan jumlah terbesar yang bisa dicapai dengan meletakkan angka-angka ini dalam kotak.

Input akan selalu berisi angka kuadrat. Contoh susunan kuadrat untuk input 9 1 2 3 4 5 6 7 7bisa

677
943
125

Jumlahnya dihitung sebagai jumlah dari semua baris dan kolom. Untuk pengaturan di atas jumlahnya akan menjadi 677 + 943 + 125 + 691 + 742 + 735 = 3913. Perhatikan bahwa ini bukan jumlah maksimal jadi ini bukan output yang diharapkan.

Memasukkan

  • Daftar dengan panjang n^2( n>=1) yang mengandung digit bukan nol ( 1-9).

Keluaran

  • Integer, jumlah terbesar yang dapat dicapai dengan digit input yang dimasukkan ke dalam kuadrat.

Contohnya

Format contohnya adalah 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

Ini adalah kode golf sehingga entri terpendek menang.

randomra
sumber
Hanya untuk mengecek, apakah input harus digit yang dipisahkan dengan ruang secara tepat atau apakah format daftar tidak ambigu oke?
Sp3000
@ Sp3000 Setiap format daftar sederhana yang jelas tidak apa-apa termasuk format daftar bahasa yang Anda pilih.
randomra

Jawaban:

4

Pyth, 15 byte

s*VSsM^^LTUQ2SQ

Demonstrasi. Uji harness.

Catatan: Input dalam format urutan python apa pun, seperti a,b,c,atau [a, b, c]. Gagal aktif a.

Ini akan menjadi penjelasan untuk contoh input 5,8,6,8.

^LTUQ: Ini adalah daftar kekuatan 10, hingga panjang Q. [1, 10, 100, 1000].

^ ... 2: Lalu, kami mengambil pasangan kekuatan 10 [[1, 1], [1, 10], .....

sM: Lalu, kami menjumlahkan pasangan itu. [2, 11, 101, ...Setiap angka merepresentasikan nilai dari lokasi grid. Nilai sudut kanan bawah adalah 2, karena digit yang ditempatkan di tempat satu dari dua angka itu. Perhatikan bahwa 16 nilai dihasilkan, meskipun kita hanya perlu 4. Ini akan ditangani segera.

S: Urutkan nilai dalam urutan meningkat. [2, 11, 11, 20, 101, .... Perhatikan bahwa satu-satunya nilai yang relevan untuk input ini adalah 4 pertama, karena kuadrat ini tidak akan memiliki ratusan atau ribuan tempat.

SQ: Urutkan input dalam urutan menaik. [5, 6, 8, 8]

*V: Penggandaan vektor dari dua daftar. Perkalian vektor Pyth memotong input yang lebih panjang, jadi ini berkinerja [5*2, 6*11, 8*11, 8*20], setara dengan mengisi grid, terkecil ke terbesar, kanan bawah ke kiri atas.

s: Jumlahkan hasilnya 324,. Pencetakan tersirat.

isaacg
sumber
4

CJam, 23 byte

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

Cobalah online . Menghasilkan bobot untuk setiap sel dan menetapkan digit tertinggi ke bobot tertinggi.

Alternatif 23:

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

CJam, 25 byte

q~_e!\,mqf/{_z+Afb:+}%$W=

Pendekatan yang cukup lurus ke depan. Hasilkan semua kombinasi, dapatkan jumlah, cetak terbesar.

Cobalah online di sini

Pengoptimal
sumber