xkcd에서 영감을 얻었습니다 .
당신의 도전은 숫자가 게임 2048 에서 좋은 조합을 만들지 여부를 결정하는 것 입니다. 입력 한 내용은 다음과 같습니다.
8224
그리고 출력은 그 수가이 입력 될 좋은 2048 콤보 만들 것이라는 것 true
또는 yes
또는 1
또는 긍정적 인 결과를 나타내는의 다른 방법.
게임에 익숙하지 않은 사람들을 위해 간단한 설명이 있습니다. 2의 거듭 제곱은 다음과 같이 그리드에 배열됩니다 [2] [2]
. 타일은 어느 방향으로나 이동할 수 있으며, 두 개의 동일한 타일이 만나면 두 개의 다음 파워가됩니다 ( [2] [2]
왼쪽 또는 오른쪽으로 이동하면 [4]
). 또는 여기서 게임을 시도해 볼 수도 있습니다 .
"좋은 2048 조합"이란 무엇입니까? "2048"게임에있는 경우 하나의 단일 숫자로 결합 될 수있는 모든 숫자를 의미합니다. 0은 빈 공간을 의미하며 필요한 경우 무시할 수 있습니다. 숫자는 여러 자릿수 일 수 있습니다. 그러나 이동간에 숫자가 변경 되어서 는 안됩니다 . 다음은 몇 가지 예 / 테스트 사례입니다 ( "양호"는 좋은 조합을 나타내고 "나쁨"은 좋지 않음).
- 양호 : 8224 (8224-> 844-> 88-> 16)
- 좋음 : 2222 (2222-> 44-> 8)
- 양호 : 22048 (22048-> 448-> 88-> 16)
- 나쁨 : 20482 (외부 2를 결합하거나 2048과 2를 결합 할 수 없음)
- 양호 : 20482048 (20482048-> 4096)
- 나쁨 : 210241024 (210241024-> 22048). 이제는 [2] [2048]이며 숫자는 이동간에 변경할 수 없으므로 결합 할 수 없습니다.
- 좋음 : 2048 (이미 하나의 숫자 임)
- 나쁘다 : 2047 (2의 거듭 제곱이 아니다)
- 나쁨 : 11 (게임에 1이 없습니다)
- 양호 : 000040000000 (0은 빈 공간 임)
기타 규칙 :
- 입력은 STDIN, 함수 인수, 파일 등 합리적인 곳이면 어디든 가능합니다.
- STDOUT, 함수 반환 값, 파일 등과 같이 합리적인 위치에 출력 할 수도 있습니다.
- 격자 크기를 무시하십시오-
22222222
여전히 true를 출력해야합니다. - 2의 거듭 제곱이면 s의 최대 수는 없습니다. 따라서 가능한 숫자는 0보다 큰 2의 거듭 제곱입니다.
- 모호성을 유발하는 제로에 대해 걱정하는 사람들에게는 그렇지 않습니다. 예를 들어 또는
22048
로 구문 분석 할 수 있습니다 . 첫 번째는 작동하지 않지만 두 번째는 작동하므로 true를 출력해야합니다.[2] [2048]
[2] [2] [0] [4] [8]
- 이것은 code-golf 이므로 바이트 단위의 가장 짧은 코드가 이길 것입니다!
22048
출력해야 good
하지만 그렇지는 않습니다. 2
와 결합 할 수 없으며 2048
그리드는 4x4
모든 숫자가 분리되어야하면 5 개의 셀을 얻게됩니다. 따라서 어쩌면 0
?를 제거해야 합니까? 또한 게임이 중단 된 이후 다섯 번째 예가 유효하지 않은 것 같습니다 2048
:)
1