Bình phương từ chữ số có tổng lớn nhất


9

Bạn nên viết một chương trình hoặc hàm nhận danh sách các chữ số làm đầu vào và đầu ra hoặc trả về số tiền lớn nhất có thể đạt được bằng cách đặt các chữ số này vào một hình vuông.

Đầu vào sẽ luôn chứa một số chữ số vuông. Một ví dụ sắp xếp vuông cho đầu vào 9 1 2 3 4 5 6 7 7có thể là

677
943
125

Tổng được tính là tổng của tất cả các hàng và cột. Đối với sự sắp xếp trên, tổng sẽ là 677 + 943 + 125 + 691 + 742 + 735 = 3913. Lưu ý rằng đây không phải là tổng tối đa nên đây không phải là đầu ra mong đợi.

Đầu vào

  • Một danh sách có độ dài n^2( n>=1) chứa các chữ số khác không ( 1-9).

Đầu ra

  • Một số nguyên, tổng lớn nhất có thể đạt được với các chữ số đầu vào được đặt trong một hình vuông.

Ví dụ

Định dạng ví dụ là 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

Đây là mã golf nên mục ngắn nhất sẽ thắng.


Chỉ cần kiểm tra lại, liệu đầu vào có phải là các chữ số được phân tách bằng dấu cách chính xác hay là một định dạng danh sách rõ ràng được không?
Sp3000

@ Sp3000 Bất kỳ định dạng danh sách rõ ràng đơn giản nào cũng được, kể cả định dạng danh sách của ngôn ngữ bạn đã chọn.
Randomra 21/07/2015

Câu trả lời:


4

Bình thường, 15 byte

s*VSsM^^LTUQ2SQ

Trình diễn. Khai thác thử nghiệm.

Lưu ý: Nhập vào bất kỳ định dạng chuỗi python, chẳng hạn như a,b,c,hoặc [a, b, c]. Thất bại trên a.

Đây sẽ là một lời giải thích cho đầu vào ví dụ 5,8,6,8.

^LTUQ: Đây là danh sách các quyền hạn gồm 10, cho đến hết Q. [1, 10, 100, 1000].

^ ... 2: Sau đó, chúng tôi có cặp sức mạnh của 10 [[1, 1], [1, 10], .....

sM: Sau đó, chúng tôi tổng hợp các cặp đó. [2, 11, 101, ...Mỗi số lặp lại giá trị của một vị trí lưới. Giá trị của góc dưới cùng bên phải là 2, vì chữ số được đặt ở vị trí của hai số đó. Lưu ý rằng 16 giá trị đã được tạo, mặc dù chúng tôi chỉ cần 4. Điều này sẽ được xử lý trong thời gian ngắn.

S: Sắp xếp giá trị theo thứ tự tăng dần. [2, 11, 11, 20, 101, .... Lưu ý rằng các giá trị duy nhất có liên quan đến đầu vào này là 4 giá trị đầu tiên, vì hình vuông này sẽ không có hàng trăm hoặc hàng nghìn vị trí.

SQ: Sắp xếp đầu vào theo thứ tự tăng dần. [5, 6, 8, 8]

*V: Phép nhân Vectorized trên hai danh sách. Phép nhân vectơ của Pyth cắt ngắn đầu vào dài hơn, do đó, việc này thực hiện [5*2, 6*11, 8*11, 8*20], tương đương với việc điền vào lưới, nhỏ nhất đến lớn nhất, từ dưới phải sang trên cùng bên trái.

s: Tổng hợp kết quả 324,. In ấn là ngầm.


4

CJam, 23 byte

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

Hãy thử trực tuyến . Tạo các trọng số cho mỗi ô và gán các chữ số cao nhất cho các trọng số cao nhất.

Một thay thế 23:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.