Маленький Чендлер сумує. Намалюйте йому хмару, щоб підбадьорити його.
Примітка: малювання хмари насправді не розвеселить його.
Коло можна визначити як 3-кортеж, (x,y,r)
де x
- х положення кола на декартовій площині, y
- y-положення кола на декартовій площині і r
є радіусом кола. x
і y
може бути негативним. r
завжди позитивний. Вхід - це список кіл у вигляді пробілів, розділених 3-кортежами. Наприклад:
3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8
В 3,1,1
означає «коло з центральною точкою на 3,1
1 радіус. 3,2,1.5
Чи означає» окружність з центром в точці точки 3,2
з радіусом 1.5.
Якщо ми намалюємо всі ці кола вхідних даних на графіку, це виглядає приблизно так (я включив лінії сітки та мітки лише для наочності; вони не потрібні):
Зверніть увагу, наскільки всі кола є згуртованими . Тобто всі вони перекриваються разом, так що вона утворює одну велику групу, не маючи невеликих груп, відокремлених від решти. Вхід гарантовано є злагодженим.
Припустимо, зараз ми намалюємо лінію, яка об’їжджає «кордон», утворений цими колами, без жодної іншої лінії. Це було б як намалювати межу силуету, сформованого всіма колами. Отримана хмара виглядатиме приблизно так:
Отже ця хмара була утворена шляхом малювання лише дуг кіл на вході, які утворюють межу, в результаті чого виходить одна форма. Іншими словами, хмара утворюється лише малюванням дуг, які не знаходяться в іншому колі. Ваша програма прийме введення у формі, поясненій вище, і виведе зображення, що відображає отриману хмару. Загальна форма хмари повинна бути правильною, але від вас залежить масштаб, колір, товщина ліній та те, як вона виглядає на вершинах. Зауважте, що хмара повинна бути видимою, тому ви не можете тягнути щось на кшталт "Ця програма малює білу хмару на білому фоні", "Ця програма малює хмару в нескінченно малому масштабі", "Ця програма малює хмару з 0 товщина лінії "тощо. Також зауважте, що колір облямівки повинен відрізнятися від кольору заливки або фону.
Ще один приклад. Вхід:
1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7
Вихід:
Якщо в хмарі є «дірка», слід також намалювати отвір. Вхід:
0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4
Вихід:
Ось важливе правило: ваша програма повинна малювати лише лінії, що утворюють межу. Це означає, що ви НЕ МОЖЕТЕ просто намалювати кола повністю, а потім намалювати кола трохи менше білою заливкою - оскільки цей метод все ще малює лінії, які не утворюють межі, він просто прикриває їх згодом. Метою правила було заборонити реалізацію "намалювати кола, а потім намалювати кола знову білою заливкою" або щось подібне до цього. Очікується, що відповідь фактично розрахує, де намалювати речі, перш ніж малювати.
Це кодовий гольф, тому виграє найменший кількість символів.