Polygrams ปกติ


16

ได้รับหมายเลขของจุดn ≥ 3และ "ขนาดขั้นตอน" 1 ≤ m < n/2 (ระบุระยะห่างระหว่างสองจุดที่เกี่ยวโยงกัน) เอาท์พุทการแสดงกราฟิกของที่สอดคล้องโพลีปกติ หากรูปหลายเหลี่ยมประกอบด้วยวงหลายวงปิดแต่ละวงจะต้องแสดงผลในสีเส้นต่างกัน (หากสิ่งนี้ฟังดูสับสนตัวอย่างด้านล่างควรมีความหวังที่ชัดเจน)

กฎระเบียบ

การแก้ปัญหาที่สมเหตุสมผลใด ๆ จะทำให้กฎเหล่านี้เป็นไปตามกฎโดยอัตโนมัติ - พวกเขาอยู่ที่นั่นเพียงแค่ใส่ข้อ จำกัด บางอย่างเกี่ยวกับพารามิเตอร์ของผลลัพธ์เพื่อป้องกันคำตอบเช่น "บล็อกสีดำนี้เป็นรูปหลายเหลี่ยมทั้งหมด แต่คุณมองไม่เห็นเพราะ ฉันตั้งค่าความกว้างของบรรทัดเป็นมากกว่า 9000 "

  • คุณสามารถเรนเดอร์รูปหลายเหลี่ยมลงในไฟล์ (ซึ่งอาจเขียนลงดิสก์หรือไปยังเอาต์พุตสตรีมมาตรฐาน) หรือแสดงบนหน้าจอ
  • คุณสามารถใช้กราฟิกแบบเวกเตอร์หรือแรสเตอร์ก็ได้ หากผลลัพธ์ของคุณ rasterised ภาพของคุณต้องมีขนาด 400x400 พิกเซลหรือมากกว่าและรัศมีของรูปหลายเหลี่ยม(ระยะทางจากกึ่งกลางถึงจุดสุดยอดแต่ละจุด) ต้องอยู่ระหว่าง 35% ถึง 50% ของความยาวด้านข้าง
  • อัตราส่วนภาพของรูปหลายเหลี่ยมจะต้องเป็น 1 (เพื่อให้จุดยอดของมันอยู่ในวงกลมที่เหมาะสม) - ผืนผ้าใบของภาพอาจเป็นรูปสี่เหลี่ยมผืนผ้า
  • เส้นของรูปหลายเหลี่ยมจะต้องไม่หนากว่า 5% ของรัศมี (และแน่นอนว่าพวกเขาจะต้องมีความหนาที่ไม่เป็นศูนย์ที่จะมองเห็นได้)
  • คุณสามารถสร้างแกนหรือเฟรมเพิ่มเติมจากรูปหลายเหลี่ยม แต่ไม่มีอะไรอื่น
  • คุณสามารถเลือกสีพื้นหลัง (ทึบ)
  • สำหรับรูปหลายเหลี่ยมที่ประกอบด้วยหลายวงปิดคุณต้องสนับสนุนสีที่แตกต่างกันอย่างน้อย 6 สีซึ่งทั้งหมดจะต้องแตกต่างจากพื้นหลัง (ระดับสีเทาใช้ได้ดีหากเฉดสีกระจายออกไปตามสเปกตรัมอย่างเพียงพอ) โค้ดของคุณยังต้องใช้งานได้มากกว่า 6 ลูป แต่สีไม่จำเป็นต้องแยกออกจากลูปเพิ่มเติมใด ๆ (เช่นคุณอาจนำมาใช้ซ้ำได้ สีจากลูปก่อนหน้า ณ จุดนั้น)

นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ

ตัวอย่าง

นี่คือผลลัพธ์ทั้งหมดจนถึงn = 16(ซึ่งคอลัมน์สอดคล้องกับnและแถวถึงm):

ป้อนคำอธิบายรูปภาพที่นี่ คลิกเพื่อดูรุ่นที่ใหญ่กว่า

เป็นตัวอย่างสำหรับขนาดใหญ่ขึ้นnที่นี่(n, m) = (29, 11)และ(30, 12):

ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่


สิ่งที่เกี่ยวกับการป้องกันนามแฝงและสิ่งต่าง ๆ ? (เนื่องจากเรากำลังติดต่อกับเส้นที่ทำมุม)
เครื่องมือเพิ่มประสิทธิภาพ

1
@Optimizer ฉันจะไม่กำหนดอัลกอริธึมการต่อต้านนามแฝง เส้นอาจเป็นนามแฝงหรือต่อต้านนามแฝงตราบใดที่พวกเขาสามารถมองเห็นได้ชัดเจน ใช้วิจารณญาณที่ดีที่สุดของคุณ
Martin Ender

คำตอบ:


5

MATLAB, 85 81

ฟังก์ชั่นแสดงโครงเรื่องบนหน้าจอ

function f(n,m)
hold all
axis equal
for k=1:gcd(m,n)
plot(i.^(4*(k:m:n^2)/n))
end

ผลลัพธ์สำหรับ n = 30, m = 12: f (30,12)


ฉันไม่แน่ใจงานนี้; หากฉันทำอย่างถูกต้องแล้วมันจะส่งออกภาพนี้เป็นเวลา 30, 12 ดู: bit.ly/1GFZni7
durron597

@ durron597 มันใช้งานได้จริงใน Matlab แต่ฟังก์ชั่นนั้นไม่สามารถนำกลับมาใช้ใหม่ได้ทันทีเพราะมีhold allการนำไปสู่พล็อตถัดไปที่ถูกวาดไว้ด้านบนของอันแรก ... ฉันไม่รู้ว่าเรามีฉันทามติเกี่ยวกับ ซื่อสัตย์
Martin Ender

@ MartinBüttnerมันควรจะhold onบันทึก byte อยู่ดี หากคุณเพิ่มสี่ไบต์จะสามารถใช้ซ้ำได้ ( clf\n)
durron597

ปรากฎว่า เรามีฉันทามติและฉันยังโพสต์คำถามและตอบตัวเองไม่กี่เดือนที่ผ่านมา oO holdดังนั้นโดยการโพสต์เมตาที่นี้จะไม่ถูกต้องโดยไม่ต้องมีอะไรบางอย่างที่จะปล่อย
Martin Ender

@ MartinBüttnerหากคุณเปลี่ยนhold allไปแล้วจะสามารถclf\nhold onแก้ไขปัญหาได้หรือไม่
durron597

3

CJam, 114

"P2"N400:ASAN6N0aA*aA*q~:M;:K{:CK,f{M*+K%P*2*K/_[mc)\ms)]199f*}_+2ew{~1$.-Af/A,\ff*\f.+{:mo~_3$=@C6%)tt}/}/}/Sf*N*

มันแสดงผลภาพในรูปแบบ ASCII PGM

คุณสามารถลองออนไลน์ได้ แต่ผลลัพธ์จะค่อนข้างยาว คุณสามารถเปลี่ยน400และ199ลดจำนวนภาพให้เล็กลงเพื่อลดขนาดภาพ

CJam ไม่มีแนวคิดของภาพวาดเส้นหรือรูปทรงดังนั้นฉันจึงสร้างภาพในรูปสี่เหลี่ยมจตุรัสพิกเซลต่อพิกเซล (หมายเลขหนึ่งแสดงถึงเฉดสีเทาสำหรับแต่ละพิกเซล)

นี่คือผลลัพธ์ที่ดูเหมือนว่า30 12:

โพลี


1

Mathematica, 70 ไบต์

ListPolarPlot[Table[{2Pi(i+j#2)/#,1},{i,GCD@##},{j,#+1}],Joined->1>0]&

ดี ... นี่คือการดำเนินการอ้างอิงของฉันซึ่งเต้นทั้งสองส่งจนถึง ฉันไม่ได้ตั้งใจจะชนะการท้าทายของตัวเองดังนั้นฉันหวังว่าจะมีคนเอาชนะมันได้

ผลลัพธ์เป็นเหมือนแผนการในการท้าทายยกเว้นว่าฉันจะไม่ลบแกนที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.