Вхідні дані
Ваш внесок у цей виклик - це список цілих пар. Вони представляють південно-західні кути одиничних квадратів на площині, а список представляє їх об’єднання як підмножину площини. Наприклад, список
[(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)]
являє набір червоного кольору на цьому малюнку:
Вихідні дані
Вихідний результат - це перелік цілих чотиривіршів, що представляють прямокутні підмножини площини. Більш виразно, чотириразовий (x,y,w,h)
повторює прямокутник шириною w > 0
і висотою, h > 0
чий південно-західний кут знаходиться (x,y)
. Прямокутники повинні утворювати точне покриття вхідної області, в тому сенсі, що кожен з одиниць квадратів є підмножиною якогось прямокутника, кожен прямокутник є підмножиною області, а два прямокутники можуть перекриватися лише на їх межах. Щоб заборонити тривіальні рішення, покриття не повинно містити двох прямокутників, які можна було б об'єднати у більший прямокутник.
Наприклад, список
[(0,0,2,1),(0,1,3,1),(1,2,2,1)]
являє собою юридичне покриття
вищевказаного регіону, тоді як покриття, надане
[(0,0,2,2),(2,1,1,1),(1,2,1,1),(2,2,1,1)]
є незаконним, оскільки сусідні квадрати 1 на 1 можуть бути об'єднані:
Правила
Ви можете надати повну програму або функцію. Точне форматування вводу та виводу не є важливим в межах причини. Виграє найкоротший байт, а стандартні лазівки заборонені. Вам пропонується надати пояснення свого алгоритму та деякі приклади результатів.
Випробування
П-подібний регіон:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,0),(2,1),(3,0),(3,1),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5)]
Великий трикутник:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(6,0),(6,1),(6,2),(6,3),(7,0),(7,1),(7,2),(8,0),(8,1),(9,0)]
Квадрат з отворами:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(3,0),(3,1),(3,2),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,7),(5,8),(5,9),(6,1),(6,2),(6,3),(6,5),(6,6),(6,7),(6,8),(6,9),(7,0),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,4),(9,5),(9,6),(9,7),(9,8),(9,9)]
Відключені регіони:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(4,0),(4,1),(4,2),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,6),(5,7),(5,8),(5,9),(6,0),(6,1),(6,2),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,7),(9,8),(9,9),(10,0),(10,1),(10,2),(10,3),(10,4),(10,5),(10,6),(10,7),(10,8),(10,9)]
Верифікатор
Використовуйте цю програму Python 2 для підтвердження свого рішення. З STDIN береться список кортежів (вхід) та список чотирьох (ваш вихід), розділених комою.
Я також написав цю програму Python 2 для створення зображень, і ви також можете їх використовувати. Він бере зі STDIN список або кортезів, або чотирьох, і створює файл з назвою out.png
. Для цього потрібна бібліотека PIL. Якщо ви хочете, ви можете також змінити розмір комірок сітки та ширину ременів.