Ten obraz powstał przez nałożenie na siebie 7 prostokątów o różnych kolorach:
Czarne i bordowe prostokąty nie są zasłonięte , to znaczy, żadne inne prostokąty nie są nad nimi.
Napisz program, który pobiera obraz taki jak ten, i usuń pojedynczy niezablokowany prostokąt, wysyłając obraz wynikowy.
Przykład
Jeśli uruchomiłeś program na powyższym obrazku i nadal uruchamiałeś go ponownie na wyjściu, może to wyglądać następująco.
Run 1 - Czarny usunięty (mógł być bordowy):
Run 2 - Maroon usunięty (tylko wybór):
Przebieg 3 - Żółty usunięty (tylko wybór):
Uruchom 4 - niebieski usunięty (mógł być zielony):
Uruchom 5 - Usunięto kolor zielony (tylko wybór):
Run 6 - Brązowy usunięty (tylko wybór):
Uruchom 7 - Usunięto czerwony (tylko wybór):
Wszelkie dodatkowe przebiegi powinny dawać ten sam biały obraz.
Mam nadzieję, że Stack Exchange nie skompresował żadnego z tych obrazów.
Obraz zawsze będzie miał białe tło, a każdy prostokąt będzie miał unikalny kolor RGB, który nie jest biały.
Możesz założyć, że obraz zawsze może być interpretowany jako zestaw nakładających się prostokątów. W szczególności można założyć, że w przypadku określonego koloru piksel o tym kolorze najbliższym górnej krawędzi obrazu jest częścią górnej krawędzi prostokąta tego koloru. To samo dotyczy dolnej, lewej i prawej krawędzi.
Na przykład na tym obrazie górna krawędź czerwonego prostokąta znajdowałaby się tuż poniżej dolnej krawędzi żółtego prostokąta, ponieważ pomarańczowy prostokąt zakrywał starą czerwoną górną krawędź:
Na tym obrazku czerwony prostokąt można najpierw usunąć (wraz z czarnym / bordowym / pomarańczowym / szarym):
Gdy kolejność dolnych prostokątów jest niejednoznaczna, możesz nadać im dowolną kolejność.
Na przykład lewy obraz tutaj może stać się środkiem lub prawą stroną:
Wyjście nie powinno mieć paradoksalnych nakładek (więc powinno być możliwe zrobienie tego za pomocą algorytmu malarza ). Na tym obrazku ( dzięki user23013 ) musiałby być zielony pod pomarańczowym prostokątem:
Dodatkowe Szczegóły
- Obraz i prostokąty mogą mieć dowolne wymiary.
- Prostokąty mogą dotykać ramki obrazu.
- Może być do 256 prostokątów 3 - 1.
- Jeśli wejście jest całkowicie białe, wyjście powinno również być.
- Możesz użyć bibliotek obrazów.
- Dane wejściowe powinny być nazwą pliku obrazu lub surowymi danymi obrazu. Może pochodzić ze standardowego wejścia lub wiersza poleceń.
- Dane wyjściowe można zapisać do tego samego lub innego pliku obrazu, wyrzucać na surowo do standardowego wyjścia lub po prostu wyświetlać.
- Dowolny typowy bezstratny format pliku obrazu truecolor jest dozwolony.
Zgłoszenie z najmniejszą liczbą bajtów wygrywa.