이것은 나의 첫 번째 질문이므로 의견에 대한 제안은 감사하겠습니다! 감사 😉
소개
2048 게임 의 가장 일반적인 전략 중 하나 는 결코 스 와이프하지 않는 것입니다 . 이렇게하면 모든 큰 숫자가 맨 위에 배치되고 아래쪽에있는 큰 숫자가 배치됩니다. 따라서이 전략을 올바르게 적용하면 보드는 항상 다음 패턴과 일치합니다.
확인할 패턴 / 작업
제출물은 전체 프로그램 또는 보드가 다음과 같이 설명 될 수있는 경우 진실한 값을 반환하는 함수 여야합니다. 보드의 각 열을 내려 가면 첫 번째 숫자가 열의 가장 높고 두 번째 숫자는 더 작아야합니다. 제 개수와 같거나, 등 좋은 2048 보드 최고 숫자 위에 모두되는 기판으로 정의된다. 이것은 code-golf 이므로 언어 당 가장 짧은 코드 (바이트)가 이깁니다.
I / O
입력은 적절한 방법으로 수행 할 수 있습니다 (예 : 각각 4 개의 숫자를 포함하는 4 개의 배열 배열 또는 16 개의 숫자 배열). 4×4 보드를 나타내는 전체 숫자는 항상 16 개의 숫자입니다
. 출력은 입력의 실제 값이 “좋은 2048 보드”여야하고 그렇지 않은 경우 잘못된 값이어야합니다.
예
진실한 :
|-------------------|
| 16 | | 64 | 8 |
|-------------------|
| 8 | | 32 | 8 |
|-------------------|
| 4 | | 32 | 2 |
|-------------------|
| 2 | | | |
|-------------------|
|-------------------|
| 16 | 128| 64 | 32 |
|-------------------|
| 8 | 128| 32 | 8 |
|-------------------|
| 4 | 16 | 8 | 2 |
|-------------------|
| 4 | | | |
|-------------------|
거짓 :
|-------------------|
| 16 | | 64 | 8 |
|-------------------|
| 8 | | 32 | 16 |
|-------------------|
| 32 | | 128| 2 |
|-------------------|
| 2 | | | |
|-------------------|
|-------------------|
| 16 | 128| 64 | 32 |
|-------------------|
| 8 | 32| | 8 |
|-------------------|
| 4 | 16 | 8 | 2 |
|-------------------|
| 4 | | | |
|-------------------|
노트
두 번째 거짓 테스트 사례를 살펴보십시오. 어딘가에 빈 값 (또는 0)이 있고 그 뒤에 0이 아닌 마지막 숫자보다 높은 값이 오는 경우에도 다음 값이 잘못되므로 거짓이어야합니다. 0은 0보다 높으므로 유효하지 않습니다.
행운을 빕니다!
답변
답변
답변
답변
답변
R (+ pryr), 23 바이트
pryr::f(all(diff(x))<1)
어떤 기능으로 평가
function (x)
all(diff(x)) < 1
행렬을 입력으로 사용합니다.
[,1] [,2] [,3] [,4]
[1,] 16 0 64 8
[2,] 8 0 32 8
[3,] 4 0 32 2
[4,] 2 0 0 0
매트릭스가 주어지면 diff
행 내 차이를 자동으로 계산합니다 (놀랍게도이 도전에 대해 시도 할 때 까지이 기능을 알지 못했습니다).
[,1] [,2] [,3] [,4]
[1,] -8 0 -32 0
[2,] -4 0 0 -6
[3,] -2 0 -32 -2
좋은 보드에서는 이러한 값 중 어느 것도 1 이상이 될 수 없으므로 행렬 값이 적합한 지 테스트 <1
하고 확인합니다 all
.
[,1] [,2] [,3] [,4]
[1,] TRUE TRUE TRUE TRUE
[2,] TRUE TRUE TRUE TRUE
[3,] TRUE TRUE TRUE TRUE
[1] TRUE
답변
자바 스크립트, 37 바이트
x=>''+x==x.map(v=>v.sort((x,y)=>y-x))
다음과 같이 호출하십시오.
|-------------------|
| 16 | | 64 | 8 |
|-------------------|
| 8 | | 32 | 8 |
|-------------------|
| 4 | | 32 | 2 |
|-------------------|
| 2 | | | |
|-------------------|
f([[8,8,2,0],[64,32,32,0],[0,0,0,0],[16,8,4,2]])
Firefox, Chrome, JavaScript Shell 및 Node.js에서 테스트되었습니다.