Це зображення було зроблене накладанням 7 прямокутників різного кольору один на одного:
Чорний та бордовий прямокутники є безперешкодними , тобто над ними немає інших прямокутників.
Напишіть програму, яка знімає подібне зображення та видаліть один-єдиний безперешкодний прямокутник, вивівши отримане зображення.
Приклад
Якщо ви запустили програму на зображенні вище і продовжували її повторно працювати на виході, вона може прогресувати так.
Виконання 1 - Чорний видалений (міг бути бордовим):
Виконання 2 - Maroon видалено (єдиний вибір):
Виконати 3 - Видалити жовтий (єдиний вибір):
Виконання 4 - Синій вилучено (міг бути зеленим):
Виконати 5 - Зняти зелений (єдиний вибір):
Запуск 6 - Коричневий видалено (єдиний вибір):
Виконати 7 - Червоний видалений (єдиний вибір):
Будь-які додаткові пробіги повинні створювати однакові білі зображення.
Сподіваємось, обмін стеками не втратив жодного з цих зображень.
Зображення завжди матиме білий фон, і кожен прямокутник буде унікальним кольором RGB, який не є білим.
Можна припустити, що зображення завжди можна інтерпретувати як набір прямокутників, що перекриваються. Зокрема, ви можете припустити, що для певного кольору піксель із тим кольором, який знаходиться найближче до верхньої частини зображення, є частиною верхнього краю прямокутника цього кольору. Те ж саме стосується нижнього, лівого та правого країв.
Так, наприклад, у цьому зображенні верхній край червоного прямокутника був би трохи нижче нижнього краю жовтого прямокутника, оскільки помаранчевий прямокутник покривав старий червоний верхній край:
На цьому зображенні червоний прямокутник можна було спочатку видалити (разом із чорним / бордовим / оранжевим / сірим):
Коли порядок нижніх прямокутників неоднозначний, ви можете надати їм будь-яке замовлення.
Наприклад, ліве зображення тут може стати серединою або правою:
Вихідні дані не повинні мати парадоксальних перекриттів (тому створення алгоритму художника має бути можливим). Тож у цьому зображенні ( спасибі user23013 ) воно повинно бути зеленим під помаранчевим прямокутником:
Додаткові відомості
- Зображення та прямокутники можуть мати будь-які розміри.
- Прямокутники можуть стосуватися межі зображення.
- Тут може бути до 256 3 - 1 прямокутників.
- Якщо вхід повністю білий, вихід повинен бути також.
- Ви можете використовувати бібліотеки зображень.
- Вхідним документом має бути назва файлу зображення або неочищені дані зображення. Він може надходити зі stdin або командного рядка.
- Вихід може бути записаний у той самий чи інший файл зображення, засипаний сировиною до stdout, або просто відображатися.
- Будь загальний без втрат повноколірний формат файлу зображення допускається.
Виграє подання з найменшими байтами.