편집 : 질문 끝에 현상금 퍼즐.
1 자리 숫자 세트가 주어지면 타워를 만들 수있는 높이를 결정해야합니다.
숫자는지면이 서있는 수평면에 있습니다. 어떤 숫자도 여러 자리 숫자와 혼동되기를 원하지 않으므로 항상 양쪽에 빈 공간이 있습니다.
4 2 1 9 6 8
숫자는 다른 숫자 위에있을 수 있습니다.
2
6
또는 아래에 대각선으로 다른 두 가지가 지원 될 수 있습니다.
9
5 8
하단은 상단이 지원하는 무게 (있는 경우)와 항상 1 인 상단 무게를지지해야합니다 . 서포터가 두 개인 경우 상단 무게의 전체 무게를 균등하게 나눕니다 (50 % -50 %).
모든 숫자의 가중치는 값과 무관하게 1입니다.
한 숫자가 다른 숫자 두 개를 지원하면 해당 가중치의 합계를 지원할 수 있어야합니다. 숫자는 최대 숫자 값을 지원할 수 있습니다.
일부 유효한 타워 (높이와 4
, 3
과 5
) :
0
7 1
5 1 1 1 9 supports a total weight of 1.5 = (1+1/2)/2 + (1+1/2)/2
2 5 4 5 5
3 5 9 5 5 6 3 6 supports a total weight of 3 = 1.5 + 1.5 = (2*1+(2*1/2))/2 + (2*1+(2*1/2))/2
일부 유효하지 않은 타워 :
1 5 The problems with the towers are (from left to right):
1 12 2 3 8 1 can't support 1+1; no space between 1 and 2;
1 5 6 1 1 1 9 1 can't support 1.5 = (1+1/2)/2 + (1+1/2)/2; 8 isn't properly supported (digits at both bottom diagonals or exactly below the 8)
입력 목록으로 자릿수 목록을 제공하거나 해당 자릿수 중 일부 (모두 가능)를 사용하여 구성 할 수있는 가장 높은 타워의 높이를 리턴하는 프로그램 또는 함수를 작성해야합니다.
입력
- 하나 이상의 요소가있는 음이 아닌 한 자리 숫자의 목록입니다.
산출
- 구성 가능한 최고 타워의 높이 인 단일 양의 정수입니다.
- 귀하의 솔루션은 내 컴퓨터에서 1 분 이내에 예제 테스트 사례를 해결해야합니다 (닫기 사례 만 테스트합니다. 평균 이하의 PC가 있습니다).
예
형식은 Input list => Output number
출력의 일부가 아닌 다음 행에 가능한 타워로 구성됩니다.
[0] => 1
0
[0, 1, 1, 1, 1, 1] => 3
0
1
1 1
[1, 1, 1, 1, 1, 2, 2] => 4
1
1
1 1
1 2 2
[0, 0, 2, 2, 2, 2, 2, 5, 5, 5, 7, 7, 9] => 9
0
2
2
5
5
5
7
7
9
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] => 9
1
2
2
3
4
5
3 3
4 4 4
5 5 5 5
[0, 0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 7, 7, 9] => 11
0
1
2
3
4
5
3 3
4 5
5 5
3 7 3
2 7 9 2
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9] => 12
0
1
2
3
4
5
6
7
4 5
6 7
8 8
9 9
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9] => 18
0
1
2
3
4
5
6
7
8
9
5 5
6 6
7 7
4 8 4
3 7 7 3
2 6 8 6 2
2 5 8 8 5 2
3 9 9 9 9 3
이것은 코드 골프이므로 가장 짧은 항목이 이깁니다.
하사품
그럴 게요 상 100 평판 현상금 (입력리스트의 길이에 관해서) 다항식 시간에 아래의 확장 문제를 해결하거나 불가능하다는 것을 증명하기위한 (이미 지급 한 관련이없는) (P 가정! = NP). 확장 된 문제의 세부 사항 :
- 입력 숫자는 숫자뿐만 아니라 음이 아닌 정수일 수 있습니다.
- 여러 자리 숫자는 한 자리 숫자와 동일한 자리를 차지합니다.
- 여러 자리 숫자는 숫자 값
24
을 지원할 수 있습니다. 예 : 지원 가능24
바운티 제안에는 만료 날짜가 없습니다. 증거가 표시되면 현상금을 추가하고 보상합니다.
3-2-5-7
탑은 나를 혼동합니다. 당신은 "하단은 최대 1을 지원하는 무게와 항상 1 인 상단 무게를 지탱해야합니다." '숫자 값'-각 숫자의 가중치가 1 인 경우 다른 숫자를 갖는 점은 무엇입니까?