Viết chương trình hoặc chức năng nhận đầu vào sau theo định dạng hợp lý theo lựa chọn của bạn:
Hai số nguyên dương W và H xác định chiều rộng và chiều cao của hình ảnh bạn sẽ tạo.
Hai màu RGB C1 và C2 sẽ được sử dụng để tô màu cho hình ảnh.
Một danh sách gồm 3 bộ dữ liệu có dạng
(r, x, y)
xác định các vòng tròn có bán kínhr
và tâmx, y
trong mặt phẳng của hình ảnh.r
là một số nguyên dươngx
vày
là bất kỳ số nguyên nào. Pixel trên cùng bên trái của hình ảnh là0, 0
và trục x tăng sang phải và trục y tăng xuống.
Xuất ra một hình ảnh có kích thước W by H được tô màu bằng C1 và C2 sao cho không có hai vùng lân cận được xác định bởi tất cả các vòng tròn chồng chéo có cùng màu.
Ví dụ: Nếu đầu vào là
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)
sau đó các ranh giới vòng tròn trông như thế này:
Có sáu vùng riêng biệt, tiếp giáp trong hình ảnh được tạo bởi các vòng tròn. Mỗi vùng phải được tô màu bằng C1 (màu vàng) hoặc C2 (màu tím) sao cho không có hai vùng lân cận nào có cùng màu.
Có hai cách để làm điều này, sự khác biệt duy nhất của chúng là màu sắc được hoán đổi:
Do đó, một trong hai hình ảnh này sẽ là đầu ra hợp lệ cho đầu vào ví dụ.
Một cái gì đó như thế này sẽ là đầu ra không hợp lệ vì hai vùng màu vàng lân cận nhau.
Hình ảnh đầu ra của bạn nên tuân theo các nguyên tắc sau:
Ngoài C1 và C2, màu thứ ba, màu trung tính như đen hoặc trắng có thể được sử dụng cho các ranh giới vòng tròn miễn là chúng có độ dày không quá 5 pixel. (Đường viền màu đen, dày 1 pixel có trong ví dụ trên.)
Tuy nhiên, ranh giới không được yêu cầu. Các khu vực có thể lân cận trực tiếp với nhau:
Cả hai đều là một đầu ra hợp lệ cho ví dụ trên.
Các vòng kết nối phải chính xác nhất có thể, sử dụng thuật toán vẽ vòng tròn hoặc bất cứ điều gì thư viện đồ họa của bạn cung cấp.
Nói chung, không cần phải hoàn thiện pixel, nhưng nếu các tham số đầu vào được chia tỷ lệ lớn hơn và lớn hơn, hình ảnh thu được sẽ ngày càng chính xác hơn.
Khử răng cưa được cho phép nhưng không bắt buộc.
Đường lưới hoặc nhãn trục, vv trong nền không được phép.
Mã ngắn nhất tính bằng byte thắng.
Thêm ví dụ
Tất cả sử dụng các đầu vào này với các nhóm vòng tròn khác nhau:
W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
Trong mọi ví dụ, màu sắc có thể được hoán đổi và vẫn còn hiệu lực.
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.
Hãy chắc chắn rằng đầu ra của bạn hoạt động tương tự như tất cả các ví dụ này.
tikz