(แรงบันดาลใจจากคำตอบของ Helka ต่อการจับคู่แท็ก "หมากรุก" และ "Fibonacci" แบบสุ่มในการแชท)
fibonacci
ตัวเลข Fibonacciเป็นหนึ่งในลำดับที่รู้จักกันดีในวิชาคณิตศาสตร์ที่แต่ละหมายเลขจะประกอบด้วยโดยการเพิ่มตัวเลขสองก่อนหน้านี้ร่วมกัน ด้านล่างนี้เป็นคำจำกัดความของลำดับศูนย์ดัชนี:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
ซึ่งจะส่งผลในลำดับ0, 1, 1, 2, 3, 5, 8, 13, 21, ...
( ลิงค์ OEIS ) ในความท้าทายนี้เราจะมุ่งเน้นเฉพาะค่าบวกอย่างเคร่งครัด (ดังนั้น1, 1, 2, 3, ...
) และคุณสามารถเลือกการจัดทำดัชนีเป็นศูนย์หรือการจัดทำดัชนีเดียว แต่โปรดระบุสิ่งที่คุณส่งมา
หมายเลข Fibonacci สามารถใช้สำหรับการเรียงตัวของระนาบโดยใช้กำลังสองที่ต่อเนื่องกันf(n)
ในขนาดและจัดตำแหน่งขอบเข้าด้วยกัน การเรียงกระเบื้องทำในลักษณะทวนเข็มนาฬิกาโดยวางสี่เหลี่ยมในรูปแบบ "ขวาขึ้น - ซ้าย - ลง" จากตารางปัจจุบัน ตัวอย่างของการเรียงต่อกันบางส่วนสำหรับที่f(8)=21
มีตารางเริ่มต้นเน้นด้วยสีฟ้ามีดังนี้:
ท่านสามารถเข้าดูf(1)=1
เป็นตารางเริ่มต้น (ไฮไลท์สีฟ้า) ที่f(2)=1
ตารางวางไปทางขวาของมันf(3)=2
ตารางวางขึ้นจากที่นั่นที่f(4)=3
ตารางวางซ้ายและอื่น ๆ สี่เหลี่ยมต่อไปจะเป็นf(9)=21+13=34
และจะถูกวางไว้ที่ด้านล่าง นี่เป็นวิธีการเรียงไฟล์บางส่วนที่เราจะใช้ในการท้าทายนี้
ราชินี
ในเกมหมากรุกชิ้นส่วนที่ทรงพลังที่สุดคือราชินีเพราะสามารถเคลื่อนย้ายช่องว่างจำนวนเท่าใดก็ได้ทั้งแนวนอนแนวตั้งหรือแนวทแยงมุม ในแผนภาพด้านล่างบอร์ดสี่เหลี่ยมที่มีวงกลมสีดำแสดงตำแหน่งที่ราชินีสามารถเคลื่อนที่ได้:
เราจะกำหนดคำครอบคลุมเป็น
เปอร์เซ็นต์ของช่องสี่เหลี่ยมที่ราชินีสามารถเลื่อนไปเทียบกับจำนวนช่องสี่เหลี่ยมทั้งหมดได้รับตำแหน่งเฉพาะของราชินีบนกระดานเปล่าและรวมถึงตำแหน่งเริ่มต้นของราชินี
28/64 = 43.75%
สำหรับการย้ายตัวอย่างข้างต้นความคุ้มครองของพระราชินีเป็น ถ้าราชินีอยู่ในh8
ตารางด้านบนขวาความคุ้มครองก็จะเป็น22/64 = 34.375%
เช่นนั้น ถ้าพระราชินีอยู่ในความคุ้มครองจะเป็นe7
24/64 = 37.5%
ความท้าทาย
เราจะใช้ฟีโบนัชชีปูกระเบื้องสาธิตข้างบนเป็นกระดานหมากรุกของเราสำหรับความท้าทายนี้ คุณจะได้รับจำนวนเต็มบวกสองค่าเป็นอินพุตn
และx
:
n
แสดงให้เห็นถึงวิธีการปูกระเบื้องขนาดใหญ่คือ ตัวอย่างการเรียงต่อกันด้านบนโดยที่ช่อง21
สี่เหลี่ยมด้านซ้ายเป็นบอร์ดขนาดn = 8
ตั้งแต่f(8) = 21
(เมื่อไม่มีดัชนี)x
หมายถึงซึ่งสี่เหลี่ยม Fibonacci ใช้สำหรับพระราชินี (s) ตำแหน่งสำหรับการคำนวณความคุ้มครอง ราชินีถูกวางครั้งเดียวในแต่ละตารางในกระเบื้องสี่เหลี่ยม Fibonacci นั้นและความครอบคลุมโดยรวมคือผลรวมของความครอบคลุมของแต่ละบุคคล (ไม่ซ้ำกัน)
ตัวอย่างเช่นที่นี่เป็นภาพของn = 8
(ปูกระเบื้องเดียวกันกับด้านบน) และx = 4
(ตรงกับf(4) = 3
สี่เหลี่ยมสีน้ำเงินเทา) โดยการวางราชินีหนึ่งครั้งในแต่ละช่องสี่เหลี่ยมสีน้ำเงินทั้งเก้านี้ราชินีสามารถ (รวมกัน) ครอบคลุมทุกสี่เหลี่ยมจัตุรัสที่มีสีส้ม 309/714 = 43.28%
ความคุ้มครองรวมในตัวอย่างนี้จึงเป็น
เห็นได้ชัดว่าทุกเวลาที่n = x
ความครอบคลุมจะเป็น100%
(ตัวอย่างเช่นด้วยn=8
และx=8
คุณจะเห็นได้ว่าทุกตารางในกระดานทั้งหมดจะครอบคลุมอย่างน้อยหนึ่งครั้ง) ในทางกลับกันด้วยขนาดที่ใหญ่พอสมควรn
และx=1
หรือx=2
ความครอบคลุมจะเข้าใกล้ (แต่ไม่ถึง) 0%
(ตัวอย่างเช่นด้วยn=8
และx=1
ความครอบคลุมเป็นเรื่องเล็ก88/714 = 12.32%
)
เมื่อป้อนหมายเลขดังกล่าวสองหมายเลขคุณต้องส่งออกเปอร์เซ็นต์ความครอบคลุมแม่นยำเป็นทศนิยมสองตำแหน่ง โปรดระบุวิธีที่รหัสของคุณจัดการการปัดเศษ
กฎระเบียบ
- อินพุตและเอาต์พุตสามารถกำหนดได้ในรูปแบบที่สะดวกแต่ต้องมีความถูกต้องกับทศนิยมสองตำแหน่ง โปรดระบุวิธีที่รหัสของคุณจัดการการปัดเศษ
- สมมติว่าไม่มีชิ้นส่วนอื่น ๆ อยู่บนกระดานหรือขัดขวางการเคลื่อนไหว
- ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
- หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือรหัส - กอล์ฟเพื่อให้ใช้กฎการเล่นกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ
ตัวอย่าง
n = 8, x = 4
43.28
n = 8, x = 8
100 or 100.00
n = 8, x = 1
12.32
n = 4, x = 1
66.67
n = 4, x = 2
60 or 60.00
n = 5, x = 3
75 or 75.00
n = 5, x = 1
47.5 or 47.50