เกมBattleBlock ละครบางครั้งมีปริศนาซึ่งเป็นรุ่นทั่วไปของไฟออก คุณมีบล็อกที่อยู่ติดกันสามบล็อกซึ่งแต่ละบล็อกระบุระดับระหว่าง 1 ถึง 4 ที่รวมกับแท่งเช่น:
|
||||
||
หากคุณสัมผัสบล็อกบล็อกนั้นและบล็อกที่อยู่ติดกันจะเพิ่มระดับของบล็อกนั้น (ย้อนกลับจาก 4 เป็น 1) ปริศนาดังกล่าวได้รับการแก้ไขเมื่อบล็อกทั้งสามแสดงระดับเดียวกัน (ไม่สำคัญว่าระดับใด) เนื่องจากลำดับที่คุณสัมผัสบล็อกในนั้นไม่สำคัญเราจึงแสดงวิธีแก้ปัญหาโดยแตะแต่ละบล็อกบ่อยครั้ง ทางออกที่ดีที่สุดสำหรับอินพุตด้านบนจะเป็น201
:
| --> || --> ||| |||
|||| | || |||
|| || || --> |||
เกมนี้สามารถวางบล็อกได้อย่างง่ายดายแม้ว่าจะมีตัวเลขบางตัว แต่การตั้งค่าบางอย่างนั้นไม่สามารถแก้ไขได้
ความท้าทาย
เมื่อได้รับลำดับของระดับบล็อกให้ส่งกลับความถี่ที่แต่ละบล็อคต้องสัมผัสเพื่อไขปริศนา เช่นตัวอย่างข้างต้นจะได้รับ142
และสามารถให้201
ผล หากไม่มีวิธีแก้ปัญหาให้ส่งคืนผลลัพธ์ที่คุณเลือกที่สอดคล้องซึ่งสามารถแยกได้จากโซลูชันที่อาจเกิดขึ้นทั้งหมด-1
หรือสตริงว่าง
คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมรับอินพุตผ่าน STDIN อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ฟังก์ชันในรายการหรือรูปแบบสตริงที่สะดวกและออกผลลัพธ์ในทำนองเดียวกันผ่านค่าส่งคืนหรือพิมพ์ไปยัง STDOUT
รหัสของคุณควรส่งคืนผลลัพธ์ที่ถูกต้องสำหรับกรณีทดสอบทั้งหมดภายในหนึ่งนาทีบนเครื่องที่เหมาะสม (นี่ไม่ใช่ขีด จำกัด ที่เข้มงวดอย่างสมบูรณ์ดังนั้นหากวิธีแก้ปัญหาของคุณใช้เวลาหนึ่งนาทีและสิบวินาทีก็ไม่เป็นไร แต่ถ้าใช้เวลา 3 นาทีมันไม่ใช่เลยอัลกอริธึมที่ดีจะแก้ปัญหาได้อย่างง่ายดายในไม่กี่วินาที)
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ
ตัวอย่าง
การแก้ปัญหาไม่ใช่เรื่องแปลกดังนั้นคุณอาจได้ผลลัพธ์ที่แตกต่างกัน
Input Output
1 0
11 00
12 No solution
142 201
434 101
222 000
4113 0230
32444 No solution
23432 10301
421232 212301
3442223221221422412334 0330130000130202221111
22231244334432131322442 No solution
111111111111111111111222 000000000000000000000030
111111111111111111111234 100100100100100100100133
412224131444114441432434 113013201011001101012133
เท่าที่ฉันรู้มีโซลูชั่น 4 ข้อสำหรับแต่ละอินพุตที่จำนวนบล็อกคือ 0 mod 3 หรือ 1 mod 3 และมี 0 หรือ 16 โซลูชันซึ่งเป็น 2 mod 3