합계가 가장 큰 자릿수의 제곱


9

숫자 목록을 입력 및 출력으로 받거나이 숫자를 정사각형으로 만들어 달성 할 수있는 최대 합계를 반환하는 프로그램이나 함수를 작성해야합니다.

입력에는 항상 제곱 자리수가 포함됩니다. 입력의 정사각형 배열 예 9 1 2 3 4 5 6 7 7는 다음과 같습니다.

677
943
125

합계는 모든 행과 열의 합계로 계산됩니다. 위의 배열에서 합은입니다 677 + 943 + 125 + 691 + 742 + 735 = 3913. 이것은 최대 합이 아니므로 예상 출력이 아닙니다.

입력

  • 0이 아닌 숫자 ( )를 포함하는 길이 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

이것은 코드 골프이므로 가장 짧은 참가작이 승리합니다.


다시 한 번 확인하려면 입력이 공백으로 구분 된 숫자 여야합니까? 아니면 모호하지 않은 목록 형식입니까?
Sp3000

@ Sp3000 선택한 언어의 목록 형식을 포함하여 간단한 모호하지 않은 목록 형식은 괜찮습니다.
randomra

답변:


4

Pyth, 15 바이트

s*VSsM^^LTUQ2SQ

데모. 테스트 하니스.

참고 : 다음과 같은 어떤 파이썬 시퀀스 형식으로 입력, 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. 인쇄는 암시 적입니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.