Oto pięć zdjęć gruszek i stalowej rynny :
To są tylko miniatury, kliknij je, aby wyświetlić w pełnym rozmiarze!
(Zrobiłem je z Algodoo .)
Ta klasa obrazów ma zawsze następujące właściwości:
- Są to zawsze 400 x 400 pikseli na białym tle. (Może nie być dokładnie biały, ponieważ obrazy SE są kompresowane stratnie).
- Mają od 1 do 4 identycznych gruszek, każda obrócona i ustawiona w (prawie) dowolny sposób.
- Mają jedną pionową stalową rynnę, która sięga do dolnej części obrazu.
- Inne niż dolna część rynny, rynna i gruszka obwiedni ( przykład obwiedni ) nigdy nie dotykają ani nie wychodzą poza granice obrazu.
- Obwiednie gruszek nigdy nie zachodzą na siebie ani nie nachodzą na rynnę.
- Gruszki może znajdować się pod nachyloną część rynny, tak jak w B , C i D . (Tak więc obwiednia rynny może zachodzić na obwiednię gruszki.)
- Rynna może mieć dowolne położenie poziome i pionowe, o ile jest wystarczająco dużo miejsca, aby wszystkie obwiednie gruszek mogły swobodnie się nad nią zmieścić (nie będą testowane skrzynie „ledwo pasujące”), a część kolumny będzie widoczna.
Wyzwanie
Napisz program, który pobiera taki obraz i wyprowadza kolejny obraz 400 × 400 z rynną w tym samym miejscu, ale z ustawionymi gruszkami tak, aby wszystkie znajdowały się nad rynną (aby mogły w nią wpaść i zostać wyciśnięte i tak dalej).
Wymagania dla obrazu wyjściowego są następujące:
- Wszystkie gruszki na obrazie wejściowym muszą zostać ustawione w taki sposób, aby znajdowały się nad rynną, między lewą i prawą krawędzią lejka. (Powyżej krawędzi nie jest w porządku.)
- Każda gruszka musi zachować kąt obrotu. (Więc powinieneś przecinać i wklejać gruszki, a nie przerysowywać je.)
- Gruszki nie mogą zachodzić na siebie ani dotykać się ani rynny. ( Obramowania gruszy mogą się jednak nakładać).
- Gruszki nie mogą dotykać ani wychodzić poza granice obrazu.
Oto przykłady prawidłowych wyników dla pięciu przykładowych obrazów:
To są tylko miniatury, kliknij je, aby wyświetlić w pełnym rozmiarze!
Zauważ, że obraz wejściowy dla E był już prawidłowym wyjściem, ale zmiana kolejności gruszek, gdy nie jest to technicznie konieczne, jest w porządku.
Detale
- Weź nazwę pliku obrazu lub dane surowego obrazu za pomocą stdin / wiersza poleceń / wywołania funkcji.
- Wyślij obraz do pliku o wybranej nazwie lub wyślij surowe dane pliku obrazu na standardowe wyjście lub po prostu wyświetl obraz.
- Można użyć dowolnego popularnego formatu plików bezstratnych.
- Można stosować biblioteki grafiki i obrazów.
- Kilka niepoprawnych pikseli tu i tam (z powodu straty lub czegoś) nie jest wielkim problemem. Jeśli nie mogę powiedzieć, że coś jest nie tak wizualnie, to prawdopodobnie jest w porządku.
Najkrótszy kod w bajtach wygrywa. Tiebreaker to najwyżej oceniany post.