Напишіть програму або функцію, яка приймає наступний текст у розумному форматі на ваш вибір:
Два натуральних числа W і H, які визначають ширину і висоту зображення, яке ви будете створювати.
Два кольори RGB C1 і C2, які будуть використані для фарбування зображення.
Список 3-х кортезів форми,
(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)
тоді межі кола виглядають приблизно так:
На зображенні, створеному колами, є шість чітких суміжних областей. Кожна область повинна бути пофарбована С1 (жовтий) або С2 (фіолетовий), щоб жодна сусідня область не була однакового кольору.
Це можна зробити двома способами, їх різниця полягає лише в тому, що кольори поміняються:
Таким чином, будь-яке з цих двох зображень буде дійсним результатом для прикладу введення.
Що - щось на зразок цього буде недійсним виходом , так як два жовтих областей межують один з одним.
Ваші вихідні зображення повинні відповідати цим рекомендаціям:
Крім 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