체커 체커


10

이 과제의 목표는 이동이 유효한 영어 체커 이동 인지 확인하는 것입니다 .

이 과제는 8x8 보드를 사용합니다. 움직 인 조각은 대각선으로 만 움직일 수있는 사람 (왕이 아닌)으로 취급해야합니다. 보드에는 0 개 이상의 검은 조각과 1 개 이상의 흰색 조각이 있습니다. 하나의 흰색 조각이 현재 움직이고 있습니다. 바로 뒤에있는 사각형이 비어 있으면 흰색 조각이 검은 색 조각 위에 대각선으로 "점프"할 수 있습니다. 앞면의 대각선 방향으로 다른 검은 색 조각이 있으면 해당 위치에서 추가로 점프 할 수 있습니다. 캡처는 필수이므로 사용 가능한 점프를하지 않는 것은 불법입니다. 그러나 점프 수를 최대화하는 경로를 반드시 가져야하는 것은 아닙니다. 기본적으로 이것은 점프를하고 종료 위치에서 또 다른 점프가 가능한 경우 해당 이동은 불법임을 의미합니다. 피스 위치는 다음과 같은 번호 체계를 사용합니다.

바둑판 번호 매기기


규칙

입력 :

  • 검은 색 조각을 나타내는 숫자 목록입니다.

  • 흰색 조각을 나타내는 숫자 목록입니다.

  • 하얀 조각의 시작 위치

  • 흰색 조각의 끝 위치

산출:

  • 이동이 유효하면 참값, 그렇지 않으면 거짓 값


흰색 조각이 항상 시작 위치를 차지한다고 가정 할 수 있습니다.

편리하다면 흰색 조각 ​​목록의 첫 번째 흰색 조각에 입력 3을 받아들이지 않고 시작 위치가 있다고 가정 할 수 있습니다.

표준 코드 골프 규칙. 가장 적은 바이트가 이깁니다.


테스트 사례

예를 들어, O는 시작 위치, X는 종료 위치, B는 검은 색, W는 흰색입니다

Black pieces: []
White pieces: [5]
Move: (5, 1)
Output: True

Single move no jump
 X _ _ _
O _ _ _ 

B: [6]
W: [9]
M: (9, 2)
O: True

Single jump
 _ X _ _
_ B _ _ 
 O _ _ _

B: [2, 6]
M: (9, 2)
O: False

Illegal ending position on top of black piece
 _ X _ _
_ B _ _ 
 O _ _ _

B: [7, 14]
W: [17]
M: (17, 3)
O: True

Double jump
 _ _ X _
_ _ B _ 
 _ _ _ _
_ B _ _ 
 O _ _ _

B: [7, 14]
M: (17, 10)
O: False

Illegal jump, must take the next jump as well
 _ _ _ _
_ _ B _ 
 _ X _ _
_ B _ _ 
 O _ _ _

B: [4]
W: [8]
M: (8, 3)
O: False

Illegal jump across the board
 _ _ _ X
B _ _ _ 
 O _ _ _


B: [6, 7]
W: [6]
M: (10, 1)
O: True

Split decision p1
 X _ _ _
_ B B _ 
 _ O _ _

B: [6, 7]
M: (10, 3)
O: True

Split decision p2
 _ _ X _
_ B B _ 
 _ O _ _


B: [2]
W: [1]
M: (1, 3)
O: False

Sideways Jump
 O B X _

B: [6]
W: [1]
M: (1, 10)
O: False

Backwards Jump
 O _ _ _
_ B _ _ 
 _ X _ _

B: [6]
W: [9, 2]
M: (9, 2)
O: False

Illegal ending position on top of white piece
 _ X _ _
_ B _ _ 
 O _ _ _

B: []
W: [9, 6]
M: (9, 2)
O: False

Illegal jump over white piece
 _ X _ _
_ W _ _ 
 O _ _ _

B: [8, 15, 23, 24]
W: [27]
M: (27, 4)
O: True


Split decision long path
 _ _ _ X
_ _ _ B 
 _ _ _ _
_ _ B _ 
 _ _ _ _
_ _ B B 
 _ _ W _

B: [8, 15, 23, 24]
W: [27]
M: (27, 20)
O: True

Split decision short path
 _ _ _ _
_ _ _ B 
 _ _ _ _
_ _ B _ 
 _ _ _ X
_ _ B B 
 _ _ W _

3
나는 B=[8,15,23,24];W=[27]각각 1 M=[27,4]과 같은 테스트 사례를 제안한다 M=[27,20]. 그것은 방향을 바꿀 것이다. 2 그것은 내가 가진 질문에 대답 할 것입니다 : 둘 다 유효합니까 아니면 더 오래 걸리나요? ( "캡처는 필수이므로 사용할 수있는 점프를하지 않는 것은 불법입니다") 일종의 제안은 둘 다 유효하지만 가능한 경우 캡처하지 않는 것이 왜 불법인지 알지 못합니다. 가능한 많은 조각?)
Jonathan Allan

죄송합니다 . (영어) 체커 게임 방법을 모르겠습니다 . 법적 조치에 대한 자세한 내용을 추가 하시겠습니까?
tsh

1
다음은 테스트 사례 를 STDIN 친화적 형식으로 요약 한 것입니다 .
Arnauld

캡처는 필수이므로 사용 가능한 점프를하지 않는 것은 불법입니다. "점프하다"는 무슨 뜻입니까?
Outgolfer Erik

1
@JonathanAllan 나는 설명에서 귀하의 질문을 해결하고 테스트 사례를 추가했다고 생각합니다.
aoemica

답변:


1

그것은 도전적이었습니다 :) * 고정 버그 (바이트 추가)

자바 스크립트 (Node.js를) , 197 (193) 191 185 181 186 바이트

f=(B,W,S,E,F=1)=>g(S).filter((x,i)=>B[I="includes"](x)&!B[I](t=g(x)[i])&!W[I](t)&&t>0?F+=f(B,W,t,E):0)[0]?F>1:g(S)[I](E)
g=S=>[S--,!(y=~-(e=S-3)/4%2|0)||S%4^3?y?e+1:e:0,S%4||y?y?e:e-1:0]

온라인으로 사용해보십시오!


>>2&1대신 사용할 수 있다고 생각합니다 /4%2|0.
Arnauld

테스트 사례 : [10, 3], [14], 14, 7실패했습니다.
tsh

더 많은 테스트 사례가 실패하면 @tsh fixed :)
DanielIndie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.