ตัวตรวจสอบตัวตรวจสอบ


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]กับแต่ละข้อM=[27,4]และM=[27,20]1 มันจะเปลี่ยนทิศทาง 2 มันจะตอบคำถามที่ฉันมี: ถูกต้องหรือต้องใช้อีกต่อไป? ("การจับภาพเป็นสิ่งจำเป็นดังนั้นจึงผิดกฎหมายที่จะไม่กระโดดที่มี" ประเภทของคำแนะนำทั้งสองนั้นใช้ได้แม้ว่าฉันจะไม่ทราบว่าทำไมคุณถึงทำให้มันผิดกฎหมายไม่ให้จับถ้าเป็นไปได้ เป็นไปได้มากแค่ไหน?)
Jonathan Allan

ขออภัยผมไม่ทราบวิธีการเล่น(อังกฤษ) หมากฮอส คุณต้องการทราบหรือไม่ว่าจะเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับการดำเนินการทางกฎหมาย
tsh

1
นี่คือบทสรุปของกรณีทดสอบในรูปแบบที่เป็นมิตรกับ STDIN
Arnauld

การจับเป็นสิ่งจำเป็นดังนั้นจึงผิดกฎหมายที่จะไม่กระโดดที่มี "กระโดด" หมายความว่าอะไร?
Erik the Outgolfer

1
@JanathanAllan ฉันคิดว่าฉันตอบคำถามของคุณในคำอธิบายและเพิ่มกรณีทดสอบ
aoemica

คำตอบ:


1

นั่นเป็นเรื่องที่ท้าทาย :) * แก้ไขข้อบกพร่อง (เพิ่มไบต์)

JavaScript (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

Testcase: [10, 3], [14], 14, 7ล้มเหลว
tsh

@tsh คงที่ :) ถ้ากรณีทดสอบล้มเหลวอีกให้ฉันรู้
DanielIndie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.