คำอธิบายปัญหา
ลองนึกภาพคุณเป็นเต่าบนกริด คุณได้ตัวเลขสองตัวคือ fและbและคุณหันหน้าไปทางทิศตะวันออก คุณทำการเดินขบวนข้ามตารางนับแต่ละเซลล์ที่คุณพบตามกฎต่อไปนี้:
- โดยค่าเริ่มต้นคุณเขียนจำนวนลงในเซลล์ที่คุณเข้ามาแล้วเดินไปข้างหน้า
- หากการนับหารด้วยfคุณเขียน
F
ไปยังเซลล์ที่คุณอยู่จากนั้นเลี้ยวขวาแล้วเดินไปข้างหน้า - หากการนับหารด้วยbคุณเขียน
B
ไปยังเซลล์ที่คุณอยู่จากนั้นเลี้ยวซ้ายแล้วเดินไปข้างหน้า - หากการนับสามารถหารได้ด้วยfและbคุณเขียน
FB
ไปยังเซลล์ที่คุณอยู่จากนั้นให้เดินไปข้างหน้า - หากคุณไปถึงจตุรัสที่คุณเคยไปคุณจะหยุด
ตัวอย่างเช่นการปฏิบัติตามกฎเหล่านี้โดยใช้f = 3 และb = 5 จะสร้างรูปแบบเช่นนี้:
F 28 29 FB 1 2 F
26 4
F B B F
23 7
22 8
F B B F
19 11
F 17 16 FB 14 13 F
ความท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ยอมรับตัวเลขสองตัวเป็นอินพุตสอดคล้องกับfและbและสร้างเอาต์พุตเป็นรูปแบบสำหรับตัวเลขเหล่านี้ที่กำหนดโดยกฎด้านบน
ข้อกำหนดการจัดรูปแบบ:
- แต่ละเซลล์มีความกว้างสองตัวอักษร
- เนื้อหาของเซลล์ถูกจัดเรียงชิดขวาภายในอักขระสองตัวนี้
- เซลล์ในแถวเดียวกันจะถูกคั่นด้วยช่องว่าง
- คอลัมน์แรกของเซลล์ต้องมีเซลล์ที่ไม่ว่างเปล่า
- แถวทั้งหมดต้องมีเซลล์ที่ไม่ว่างเปล่า
- ไม่จำเป็นต้องใช้ช่องว่างต่อท้าย แต่อนุญาต
- อย่างไรก็ตามความกว้างทั้งหมดของแต่ละแถวจะต้องไม่เกิน 3 เท่าของจำนวนคอลัมน์ที่ไม่ว่างเปล่า
รหัสของคุณจะต้องใช้งานได้ในกรณีทดสอบที่ให้มา
ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์
กรณีทดสอบ
(f = 3, b = 5 ทำซ้ำที่นี่เพื่อความสะดวกสบาย)
f=3, b=5 ->
F 28 29 FB 1 2 F
26 4
F B B F
23 7
22 8
F B B F
19 11
F 17 16 FB 14 13 F
f=4, b=10 ->
F 25 26 27 F
23 29
22 1 2 3 F
21 5
FB 6
19 7
18 B 9 F
17 11
F 15 14 13 F
f=3, b=11 ->
F 16 17 F
14 19
13 1 2 F
F B 4
10 5
F 8 7 F
f=5, b=9 ->
F 41 42 43 44 1 2 3 4 F
39 6
38 7
37 8
F B B F
34 11
33 12
32 13
31 14
F 29 28 B B 17 16 F
26 19
F 24 23 22 21 F
f=5, b=13 ->
F 31 32 33 34 F
29 36
28 1 2 3 4 F
27 6
F B 7
24 8
23 9
22 B 12 11 F
21 14
F 19 18 17 16 F