งานของคุณคือการสร้างรูปแบบการเล่นกลที่ถูกต้องโดยกรอกแม่แบบที่กำหนด แต่ก่อนอื่นคุณอาจจำเป็นต้องรู้ว่ารูปแบบดังกล่าวแสดงอย่างไร

Siteswap เบื้องต้น
Siteswap เป็นสัญลักษณ์ที่สร้างขึ้นสำหรับรูปแบบการเล่นปาหี่ มันทำงานได้โดยการแบ่งรูปแบบเป็นจังหวะ ในแต่ละครั้งที่คุณตีมือซ้ายและมือขวาของคุณจะเป็นการขว้างลูกบอล การโยนแต่ละครั้ง (เช่นการตีแต่ละครั้ง) แสดงด้วยหมายเลขซึ่งระบุว่าเมื่อใดที่ลูกบอลถูกโยนต่อไป - สิ่งนี้สอดคล้องโดยตรงกับความสูงของการโยน
ลองดูตัวอย่าง ดูภาพเคลื่อนไหวของสิ่งเหล่านี้ที่นี่
น้ำตก 3 ลูก
รูปแบบ 3 ลูกที่ง่ายที่สุด ลูกบอลแต่ละลูกจะถูกโยนทุกครั้งที่สาม (มือสลับ) การตีจังหวะที่มีลักษณะดังนี้ (สาย ASCII เชื่อมต่อการเต้นสองครั้งที่มีการโยนลูกบอลเดียวกัน):
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 3 3 3 3 3 3 3 3 3
└─┼─┼─┘ │ │
└─┼───┘ │
└─────┘
โปรดทราบว่าลูกบอลทุกลูกที่ถูกLตีจะถูกโยนต่อไปอย่างไรในRจังหวะการเต้นรูปแบบการสลับไซต์ซ้ำโดยปริยายดังนั้นรูปแบบนี้มักจะแสดงเป็น333แม้ว่าจะง่าย3พอ
441
นี่เป็นตัวอย่างที่ซับซ้อนกว่าเล็กน้อยกับ siteswap 441 :
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 4 1 4 4 1 4 4 1
│ │ └─┘ │ │
└─┼─────┘ │
└───────┘
โปรดทราบว่าการโยนหมายเลขคู่นั้นทำได้อย่างไรในมือเดียวกันกับที่พวกเขาโยนมา
423
บางครั้งคุณเพียงแค่ต้องการที่จะถือลูกบอลผ่านจังหวะแทนที่จะโยนมัน ทั้งหมดนี้หมายความว่าลูกบอลนี้จะถูกโยนในครั้งต่อไปที่จะถึงมือนี้ - เช่น 2 ครั้งในภายหลัง ดังนั้นการถือลูกบอลจึงเท่ากับ a 2ในรูปแบบ:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 2 3 4 2 3 4 2 3
│ └─┼─┘ │ │
│ └───┼─┘
└───────┘
50505
A 0หมายถึงมือปัจจุบันว่างเปล่าที่จังหวะนั้นดังรูปแบบนี้แสดง:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 5 0 5 0 5 5 0 5 0
└───┼───┼─┘ │
└───┼─────┘
└───────>
เล่นกลมัลติเพล็ก
ปัญหานี้อาจจะง่ายเกินไปหากวานิลลา siteswap ใส่รูปแบบมัลติเพล็ก! การเล่นกลมัลติเพล็กซ์หมายความว่าคุณโยนลูกบอลหลายลูกจากมือเดียวในเวลาเดียวกัน ตัวอย่างเช่นในน้ำตก 3 ลูกข้างต้นหากคุณสองคนขว้างลูกบอลเพิ่มอีกหนึ่งนัดในการตีครั้งที่สามรูปแบบจะกลายเป็น[33]33และมีลักษณะดังนี้:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [33] 3 3 [33] 3 3 [33] 3 3
└┴──┼─┼──┴┘ │ │
└─┼──────┘ │
└────────┘
นี่เป็นอีกตัวอย่างหนึ่งที่การฉายมัลติเพล็กมีความสูง / ความยาวต่างกันสองระดับ มันอาจจะแสดงเป็นอย่างใดอย่างหนึ่ง[34]11หรือ[43]11:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [43] 1 1 [43] 1 1 [43] 1 1
││ └─┴──┘│ │
│└────────┘ │
└────────────┘
(หมายเหตุว่า1โยนที่ตี2ดินแดนที่จังหวะ3และถูกโยนทันทีอีกครั้ง (อีก1) ไปยังดินแดนที่จังหวะ4และเป็นส่วนหนึ่งของการโยน multiplex สอง.)
siteswap [53]15121สำหรับการเคลื่อนไหวที่จุดเริ่มต้นของบทความนี้คือ
รูปแบบความถูกต้อง
เพื่อให้รูปแบบมีความหมายถูกต้องจำนวนลูกในมือต้องสอดคล้องกับจำนวนการโยนที่ระบุในจังหวะนั้นเสมอ ซึ่งหมายความว่าจะต้องไม่มีลูกบอลลงจอดด้วยการตีด้วย a 0, ต้องมีเพียงหนึ่งลูกที่ลงจอดด้วยการตีด้วยหลักเดียวอื่น ๆ และจะต้องมีการลงจอดลูกบอลnที่จังหวะมัลติเพล็กซ์โดยที่nคือจำนวนหลัก ในการโยนมัลติเพล็ก รูปแบบจะต้องสามารถทำซ้ำได้อย่างราบรื่น
ตัวอย่างของรูปแบบที่ไม่ถูกต้องคือ543(ลูกบอลทั้งหมดจะร่อนลงที่จังหวะเดียวกัน), 240( 2จะลงจอดที่0จังหวะ) หรือ33[24](ไม่มีลูกบอลกลิ้งลงที่จังหวะมัลติเพล็กซ์ แต่บอลสองลูกลงที่ทั้งสองจังหวะอื่น ๆ )
ความท้าทาย
คุณจะใช้รูปแบบ siteswap ซึ่งมีสัญลักษณ์แทนและส่งออกรูปแบบที่ถูกต้องโดยใช้สัญลักษณ์แทนเหล่านั้น
รับเป็นอินพุต (ผ่าน stdin, อาร์กิวเมนต์บรรทัดคำสั่ง, ไฟล์หรือฟังก์ชันพารามิเตอร์)ของสตริงของรูปแบบ
n s
ที่ไหนnเป็นจำนวนเต็มระบุจำนวนของลูกที่จะนำมาใช้และsเป็นรูปแบบ siteswap ( โดยไม่ต้องเว้นวรรค) คุณอาจคิดว่ามันถูกต้องทางไวยากรณ์ - วงเล็บเหลี่ยมทั้งหมดจับคู่และไม่ซ้อนกันและไม่มีอักขระที่ไม่คาดคิด การโยนทั้งหมดจะเป็นการโยนครั้งเดียว ( 0- 9) อย่างไรก็ตามการเต้นบางครั้งอาจถูกเขียนเป็น a _ซึ่งจะถูกเติมด้วยการโยนเดี่ยวหรือมัลติเพล็กซ์ในเอาต์พุต
หมายเหตุ:สิ่งที่ชอบ[_3]จะไม่เป็นส่วนหนึ่งของอินพุต ทั้งจังหวะที่ขาดหายไปหรือจังหวะที่ได้รับทั้งหมด
เอาท์พุทรูปแบบที่ถูกต้องซึ่งสามารถเล่นกลกับจำนวนลูกบอลที่กำหนดและตกลงกับรูปแบบอินพุตในจังหวะที่ระบุทั้งหมด !ถ้าไม่มีรูปแบบที่ถูกต้องเป็นไปได้ด้วยปัจจัยการผลิตที่ได้รับการส่งออก เอาท์พุทก็จะผ่าน stdout ไปยังไฟล์หรือเป็นค่าตอบแทนฟังก์ชั่น
หมายเหตุ:ผลลัพธ์จะต้องไม่มีเครื่องหมายวงเล็บเหลี่ยมที่ไม่จำเป็นหรือเลขศูนย์ในการมัลติเพล็กซ์ ดังนั้นเอาต์พุตที่มี[3]หรือ[03]ไม่ได้รับการยอมรับคุณต้องเอาท์พุท3แทน ลำดับของตัวเลขในการโยนแบบมัลติเพล็กซ์ไม่เกี่ยวข้อง
หมายเหตุ:คุณอาจละเว้นรูปแบบที่ซ้ำกันภายใต้พีชคณิตการเรียงสับเปลี่ยน เช่นสำหรับการป้อนข้อมูล3 __(ให้จดจำไวลด์การ์ดทั้งสอง) ทั้งคู่42และ24เป็นคำตอบที่ถูกต้อง (ในกลุ่มอื่น ๆ ) แต่จริง ๆ แล้วพวกเขาอธิบายรูปแบบเดียวกัน คุณสามารถส่งออกทั้งสองหรือเพียงหนึ่งในพวกเขา แต่คุณจะต้องทำอย่างสม่ำเสมอ
นี่คือการเข้ารหัสกอล์ฟรหัสที่สั้นที่สุดชนะ (ขึ้นอยู่กับโบนัสที่ระบุไว้ที่ด้านล่างของคำถาม)
คุณสามารถใช้JugglingLabเพื่อเล่นกับลวดลายเพื่อดูว่าพวกมันถูกต้องหรือไม่และมีลักษณะอย่างไร
ตัวอย่าง
Input Possible Outputs Comments
3 _ 3
[21]
[111]
3 4_3 423
4 4_2 4[51]2
4[42]2
4[321]2
3 _23_ 6231
4233
323[31]
2235
223[41]
0237
023[43]
[42]231
[32]23[11]
4 5_3 ! 5 and 3 will both land at the third beat, but
there is only a single throw at that beat. This
cannot be fixed with any throw in the blank.
2 5_4 ! Any possible throw in the wildcard (including a
0) will make a pattern for at least 3 balls.
3 54_ ! The only solution that would correspond to a
3-ball pattern is 540, which is not semantically
valid because the 5 and 4 both land at beat 3.
There are valid solutions, but they require at
least 4 balls.
โบนัส
- ถ้าคำตอบของคุณสามารถจัดการ "ตัวเลข" ถึง 35, เขียนแทนด้วยตัวอักษร (10 = A, B = 11, ... ) ลบ20 ตัวอักษร คุณอาจตัดสินใจว่าจดหมายเหล่านั้นควรเป็นตัวพิมพ์ใหญ่ตัวพิมพ์เล็กหรือตัวพิมพ์เล็ก (JugglingLab สามารถจัดการกับมันในกรณีที่ต่ำกว่าถ้าคุณต้องการดูรูปแบบบ้าบางอย่าง)
- ถ้าคำตอบของคุณออกผลลัพธ์ทั้งหมดการแก้ปัญหาที่ถูกต้องลบ20 ตัวอักษร