นี่เป็นความท้าทายครั้งที่สองในสองเรื่องเกี่ยวกับ "ฟังก์ชันดึงตึง" นี่คือง่ายเล็กน้อย Part I
Let 's ไดรฟ์เมตรเล็บเข้าไปในคณะกรรมการที่ตำแหน่ง(x 1 , y 1 )การ(x เมตร , y ม. ) มัดยางรัดไว้กับเส้นที่หนึ่งและเส้นสุดท้ายของเล็บเหล่านั้นและเหยียดรอบเล็บอื่น ๆ เช่นที่วงจะเคลื่อนที่ไปตามเล็บทั้งหมดตามลำดับ โปรดทราบว่าในตอนนี้แถบยางอธิบายฟังก์ชั่นพารามิเตอร์เชิงเส้น(x (t), y (t))ในขอบเขต 2D
ตอนนี้ขับไปอีกnเล็บเข้าไปในคณะกรรมการที่ตำแหน่ง(x 1 , y 1 )การ(x n , y n ) ถ้าตอนนี้เราเอาของเดิมเมตรเล็บยกเว้นคนแรกและครั้งสุดท้าย (ซึ่งปลายของยางที่มีการเชื่อมโยงกับ) ยางรัดจะสั้นลงจนกว่าจะมีการโกหกตึงรอบเล็บใหม่ที่ให้ผลผลิตค่อีกฟังก์ชั่นการเชิงเส้น
ยกตัวอย่างเช่นใช้m = 12เล็บเริ่มต้นที่ตำแหน่ง(0, 0), (2, -1), (3/2, 4/3), (7/2, 1/3), (11/2, 16/3), (1, 16/3), (0, 1), (7, -2), (3, 4), (8, 1), (3, -1), (11, 0)และn = 10เล็บเพิ่มเติมที่ตำแหน่ง(1, 1), (3, 1), (4, 4), (1, 3), (2, 2), (5, -1), (5, 0 ), (6, 2), (7, 1), (6, 0) สามแปลงต่อไปนี้แสดงกระบวนการที่อธิบายข้างต้น:
สำหรับรุ่นใหญ่: คลิกขวา -> เปิดในแท็บใหม่
และนี่คือแอนิเมชั่นของแถบยางรัดให้กระชับถ้าคุณมีปัญหาในการมองเห็น:
ความท้าทาย
ให้รายชื่อ "nails" สองรายการให้พล็อตยางรัดตึงรอบรายการที่สองหากเริ่มต้นจากการเคลื่อนที่ของเล็บทั้งหมดในรายการแรก
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นและรับอินพุตผ่าน STDIN, ARGV หรืออาร์กิวเมนต์ของฟังก์ชัน คุณสามารถแสดงผลบนหน้าจอหรือบันทึกภาพเป็นไฟล์
หากผลลัพธ์เป็น rasterised จะต้องมีอย่างน้อย 300 พิกเซลในแต่ละด้าน ยางรัดสุดท้ายและเล็บจะต้องครอบคลุมอย่างน้อย 75% ของขอบเขตแนวนอนและแนวตั้งของภาพ สเกลความยาวของxและyต้องเท่ากัน คุณต้องแสดงเล็บในชุดที่สอง (ใช้อย่างน้อย 3x3 พิกเซล) และสตริง (กว้างอย่างน้อย 1 พิกเซล) คุณสามารถหรือไม่รวมแกน
สีเป็นตัวเลือกของคุณ แต่คุณต้องมีอย่างน้อยสองสีที่แตกต่าง: หนึ่งสำหรับพื้นหลังและหนึ่งสำหรับเล็บและสตริง (อาจมีสีที่แตกต่างกัน)
คุณอาจสันนิษฐานได้ว่าเล็บทั้งหมดในรายการที่สองอยู่ห่างกันอย่างน้อย 10 -5ยูนิตจากรูปร่างเริ่มต้นของแถบยาง (เพื่อให้คุณไม่ต้องกังวลเกี่ยวกับความไม่แม่นยำของจุดลอย)
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ
ตัวอย่างเพิ่มเติม
นี่คืออีกสองตัวอย่าง:
{{1, 1}, {3, 3}, {2, 4}, {1, 3}, {4, 0}, {3, -1}, {2, 0}, {4, 2}}
{{2, 1}, {3, 2}, {1, 2}, {4, 1}}
{{1, 1}, {3, 1}, {3, 3}, {1, 3}, {1, 5}, {3, 5}, {-1, 3}, {-1, 0}, {3, 4}, {5, 1}, {5, -1}, {7, -1}, {3, 7}, {7, 5}}
{{0, 0}, {0, 2}, {0, 4}, {0, 6}, {2, 0}, {2, 2}, {2, 4}, {2, 6}, {4, 0}, {4, 2}, {4, 4}, {4, 6}, {6, 0}, {6, 2}, {6, 4}, {6, 6}}
และนี่คือตัวอย่างหนึ่งที่แสดงให้เห็นถึงความสำคัญของสองเล็บเริ่มแรกที่เหลืออยู่ ผลที่ควรจะขและไม่ :
{{0, 0}, {0, 1}, {-1, 1}, {-1, -1}, {1, -1}, {1, 0}}
{{-0.5, 0.5}}
ขอบคุณ Ell ที่ให้ตัวอย่างนี้