Napisz program lub funkcję, która przyjmuje następujące dane wejściowe w rozsądnym wybranym formacie:
Dwie dodatnie liczby całkowite W i H, które określają szerokość i wysokość generowanego obrazu.
Dwa kolory RGB C1 i C2, które zostaną użyte do pokolorowania obrazu.
Lista 3-krotek formularza,
(r, x, y)
które definiują koła o promieniur
i środkux, y
w płaszczyźnie obrazu.r
jest dodatnią liczbą całkowitąx
iy
są dowolnymi liczbami całkowitymi. Lewy górny piksel obrazu jest,0, 0
a oś x zwiększa się w prawo, a oś y zwiększa się w dół.
Wyjście obrazu o wymiarach W przez H, który jest zabarwiony za pomocą C1 i C2 w taki sposób, że żadne dwa sąsiednie regiony zdefiniowane przez wszystkie nakładające się koła nie są tego samego koloru.
Na przykład: Jeśli dane wejściowe to
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)
wtedy granice okręgu wyglądają tak:
Na obrazie utworzonym przez kręgi znajduje się sześć odrębnych, ciągłych regionów. Każdy region musi być zabarwiony za pomocą C1 (żółty) lub C2 (fioletowy), aby żadne dwa sąsiednie regiony nie były tego samego koloru.
Można to zrobić na dwa sposoby, a jedyną różnicą jest zamiana kolorów:
Zatem każdy z tych dwóch obrazów byłby prawidłowym wyjściem dla przykładowego wejścia.
Coś jak to byłoby nieważne wyjście ponieważ dwie żółte regionów sąsiada siebie.
Obrazy wyjściowe powinny być zgodne z następującymi wskazówkami:
Oprócz C1 i C2 można zastosować trzeci, neutralny kolor, taki jak czarny lub biały, do granic okręgu, o ile nie mają one więcej niż 5 pikseli grubości. (Czarne granice o grubości 1 piksela są obecne w powyższym przykładzie).
Granice kręgów nie są jednak wymagane. Regiony mogą sąsiadować bezpośrednio:
Oba są kolejnymi prawidłowymi danymi wyjściowymi do powyższego przykładu.
Koła powinny być tak dokładne, jak to możliwe, przy użyciu algorytmów rysowania okręgów lub czegokolwiek, co zapewnia biblioteka graficzna.
Zasadniczo perfekcja pikseli nie jest wymagana, ale jeśli parametry wejściowe są skalowane jednakowo coraz bardziej, otrzymany obraz powinien być coraz bardziej dokładny.
Wygładzanie jest dozwolone, ale nie wymagane.
Linie siatki lub etykiety osi itp. W tle są niedozwolone.
Najkrótszy kod w bajtach wygrywa.
Więcej przykładów
Wszystkie używają tych danych wejściowych z różnymi zestawami kół:
W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
W każdym przykładzie kolory mogą być zamieniane i pozostają ważne.
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.
Upewnij się, że dane wyjściowe zachowują się podobnie do wszystkich tych przykładów.
tikz