เขียนโปรแกรมหรือฟังก์ชั่นที่รับอินพุตต่อไปนี้ในรูปแบบที่เหมาะสมตามที่คุณต้องการ:
จำนวนเต็มบวกสองจำนวน W และ H ที่กำหนดความกว้างและความสูงของภาพที่คุณกำลังสร้าง
สองสี RGB C1 และ C2 ที่จะใช้ในการสีภาพ
รายการ 3-tuples ของรูปแบบ
(r, x, y)
ที่กำหนดวงกลมด้วยรัศมีr
และกึ่งกลางx, y
ในระนาบของภาพr
เป็นจำนวนเต็มบวกและx
และy
เป็นจำนวนเต็มใด ๆ พิกเซลด้านซ้ายบนของภาพคือ0, 0
และแกน x เพิ่มขึ้นไปทางขวาและแกน y เพิ่มขึ้นลง
เอาท์พุทภาพที่มีขนาด W คูณ H ที่ทำสีด้วย C1 และ C2 ซึ่งไม่มีบริเวณใกล้เคียงสองแห่งที่กำหนดโดยวงกลมที่ทับซ้อนกันทั้งหมดเป็นสีเดียวกัน
ตัวอย่างเช่น:ถ้าอินพุตคือ
W = 300 H = 200 C1 = (255, 200, 0) C2 = (128, 0, 255) Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)
จากนั้นขอบเขตวงกลมจะเป็นดังนี้:
ภาพที่สร้างโดยแวดวงมีหกภูมิภาคที่แตกต่างและต่อเนื่องกัน แต่ละภูมิภาคจะต้องทำสีด้วย C1 (สีเหลือง) หรือ C2 (สีม่วง) ซึ่งไม่มีบริเวณใกล้เคียงสองแห่งที่มีสีเดียวกัน
มีสองวิธีในการทำสิ่งนี้ความแตกต่างเพียงอย่างเดียวคือการเปลี่ยนสี:
ดังนั้นทั้งสองภาพจะเป็นผลลัพธ์ที่ถูกต้องสำหรับตัวอย่างอินพุต
สิ่งนี้จะเป็นผลลัพธ์ที่ไม่ถูกต้องเนื่องจากมีพื้นที่สีเหลืองสองแห่งซึ่งอยู่ติดกัน
รูปภาพที่ส่งออกของคุณควรเป็นไปตามหลักเกณฑ์เหล่านี้:
นอกจาก C1 และ C2 แล้วสีที่สามที่เป็นกลางเช่นสีดำหรือสีขาวอาจถูกใช้สำหรับขอบเขตวงกลมตราบใดที่มีความหนาไม่เกิน 5 พิกเซล (ขอบเขตสีดำหนา 1 พิกเซลแสดงอยู่ในตัวอย่างด้านบน)
ไม่จำเป็นต้องใช้ขอบเขตของแวดวง ภูมิภาคอาจเป็นเพื่อนบ้านกันโดยตรง:
ทั้งสองอย่างนี้เป็นอีกผลลัพธ์ที่ถูกต้องสำหรับตัวอย่างด้านบน
แวดวงควรมีความแม่นยำที่สุดเท่าที่จะทำได้โดยใช้อัลกอริธึมการวาดวงกลมหรือไลบรารีกราฟิกของคุณมีให้
โดยทั่วไปไม่จำเป็นต้องมีความสมบูรณ์แบบของพิกเซล แต่หากปรับพารามิเตอร์อินพุตให้ใหญ่ขึ้นและใหญ่ขึ้นเท่า ๆ กันภาพที่ได้ควรมีความแม่นยำมากขึ้น
อนุญาตให้ลบนามแฝงได้ แต่ไม่จำเป็น
ไม่อนุญาตให้ใช้เส้นกริดหรือป้ายกำกับแกนในพื้นหลัง
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
ตัวอย่างเพิ่มเติม
ทั้งหมดใช้อินพุตเหล่านี้กับชุดวงกลมที่แตกต่างกัน:
W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
ในตัวอย่างใด ๆ สีสามารถสลับและยังคงใช้ได้
Circles =
A. empty list
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
A.
B.
C.
D.
E.
F.
G.
H.
I.
J.
K.
L.
ตรวจสอบให้แน่ใจว่าผลลัพธ์ของคุณทำงานคล้ายกับตัวอย่างเหล่านี้ทั้งหมด
tikz