앞에서 나는 배열을 분쇄하는 과정을 정의했다
호감에서 우리는 배열을 왼쪽에서 오른쪽으로 읽습니다. 한 지점에서 같은 요소 중 두 개가 연속으로 나타나면 첫 번째 요소를 제거하고 두 번째 요소를 두 배로 늘립니다.
예를 들어 다음은 다음 배열을 분쇄하는 과정입니다
[5,2,2,4]
^
[5,2,2,4]
^
[5,2,2,4]
^
[5,4,4]
^
[5,4,4]
^
[5,8]
^
동일한 요소가 여러 번 축소 될 수 있습니다. 이 예에서는 단일 패스 2,2,4로 축소되었습니다 8.
이제 배열을 분쇄하는 것은 쉽지만 어려운 것은 배열을 분쇄하는 것입니다. 당신의 임무는 입력으로 양의 정수의 배열을 취하고 반복적으로 분쇄 될 때 입력을 형성 할 수있는 가장 큰 배열을 출력하는 것입니다. 예를 들어, 어레이 [4]는 분쇄에 의해 형성되고 ,이어서 분쇄에 [2,2]의해 형성된다 [1,1,1,1]. 정수가 아닌 값을 [1,1,1,1]가질 수 없으므로 더 이상 압축을 풀 수 없으므로 답이됩니다.
0이러한 배열은 무기한으로 확장 될 수 있으므로 입력 배열 에서을받지 않습니다 . 또한 동일한 홀수의 두 개가 나란히있는 케이스는 절대받지 않으며, 그러한 경우는 파쇄의 결과 일 수 없습니다.
이것은 코드 골프 이므로 소스의 크기를 바이트 단위로 측정하여 바이트 수가 적을수록 점수가 매겨집니다.
대답을 시작하기 전에이 도전이 생각보다 훨씬 어렵다고 말하고 싶습니다. 진행하면서 직감을 확인하고 답이 모든 테스트 사례를 통과하는지 확인하십시오.
테스트 사례
[] -> []
[5] -> [5]
[6] -> [3,3]
[8] -> [1,1,1,1,1,1,1,1]
[4,8] -> [1,1,1,1,1,1,1,1,1,1,2]
[2,8] -> [1, 1, 1, 1, 2, 1, 1, 1, 1]
[4,4] -> [1,1,1,1,1,1,1,1]
[1,>1,1,1,1,1,1,1,1,1,2], [2,>1,1,1,1,1,1,1,1,2], [2,1,>1,1,1,1,1,1,1,2], [2,2,>1,1,1,1,1,1,2], [2,2,1,>1,1,1,1,1,2], [2,2,2,>1,1,1,1,2], [2,2,2,1,>1,1,1,2], [2,2,2,2,>1,1,2], [2,2,2,2,1,>1,2], [2,2,2,2,2,>2], [2,2,2,2,4>], 두 번째 패스 : [2,>2,2,2,4], [4,>2,2,4], [4,2,>2,4], [4,4,>4], [4,8>]. 잘하면 그것은 그것을 정리합니다. 이전 코드를 살펴보기 위해 코드를 원하면 분쇄 기능을 구현하는 답변이 있습니다.
[4, 4]스트레치 => 크러시 시퀀스 후에는 해당 배열을 얻을 수 없으므로 테스트 케이스 를 제거해야합니다.[8]
[1,1,1,1,1,1,1,1,1,1,2]생산 합니까? 이 있어야한다 , , , , , , , , , ?[4, 8][8, 4][1,>1,1,1,1,1,1,1,1,1,2][2,1,>1,1,1,1,1,1,1,2][2,>2,1,1,1,1,1,1,2][4,1,>1,1,1,1,1,2][4,2,1,>1,1,1,2][4,2,>2,1,1,2][4,>4,1,1,2][8,1,>1,2][8,2,>2][8,4]