Za pomocą Algodoo i Paint wykonałem te sześć monochromatycznych obrazów o wymiarach 300 × 300 i czterech wygodnych kształtach:
Ta klasa obrazów ma następujące właściwości:
- Są one zawsze w rozmiarze 300 × 300 pikseli, monochromatyczne (tylko czarno-białe) i mają dokładnie cztery białe obszary odpowiadające kwadratowi, okręgowi, trójkątowi i zębatce.
- Kształty nigdy się nie nakładają ani nie dotykają się, ani nie dotykają obramowania obrazu ani nie wychodzą poza granice.
- Kształty zawsze mają ten sam rozmiar, ale można je dowolnie obracać i ustawiać.
(Kształty mają również równe obszary, chociaż przy takim rastrowaniu ich liczba pikseli prawdopodobnie nie będzie dokładnie równa.)
Wyzwanie
Napisz najkrótszy możliwy program lub funkcję, która pobierze nazwę pliku takiego obrazu i zamieni wszystkie białe piksele ...
- czerwony,
(255, 0, 0)
jeśli są na kwadracie. - niebieski,
(0, 0, 255)
jeśli są w kole. - zielony,
(0, 255, 0)
jeśli są w trójkącie. - żółty,
(255, 255, 0)
jeśli są na biegu.
na przykład
Detale
Twój program powinien działać skutecznie dla wszystkich możliwych obrazów wejściowych. (Wprowadzone zostaną tylko prawidłowe obrazy monochromatyczne 300 × 300). Sześć obrazów, które przedstawiłem, są jedynie przykładami, możesz nie zakodować na stałe ich wyników w swoim programie.
Nie wolno używać bibliotek lub funkcji komputerowych, wbudowanych ani zewnętrznych. Chodzi o to, aby to zrobić za pomocą własnych operacji na poziomie pikseli. Możesz użyć bibliotek obrazów, które po prostu pozwalają otwierać i modyfikować obrazy (np. PIL dla Pythona).
Możesz używać dowolnych popularnych bezstratnych formatów plików obrazu do wprowadzania i wyprowadzania, o ile trzymasz się schematu kolorów.
Możesz pobrać nazwę pliku obrazu jako argument funkcji, ze standardowego wejścia lub z wiersza poleceń. Obraz wyjściowy można zapisać w nowym pliku, tym samym pliku lub po prostu wyświetlić.
Punktacja
Zgłoszenie z najmniejszą liczbą bajtów wygrywa. Mogę przetestować zgłoszenia za pomocą dodatkowych zdjęć, aby ustalić ich ważność.