Biorąc pod uwagę tylko linię prostą i kompas, wpisz romb wewnątrz danego prostokąta, dzieląc dwa przeciwne punkty.
Wkład
Dane wejściowe to wymiary prostokąta. W pokazanym przykładzie byłoby to 125, 50
. Możesz pobierać dane w najbardziej dogodny sposób (jako dwie liczby całkowite, lista, ciągi znaków itp.).
Większy wymiar będzie wynosił minimum 100, a mniejszy będzie wynosił minimum 25. Oba limity wynoszą 200.
Wydajność
Wyjściem będzie obraz (wyświetlany na ekranie lub zapisany jako plik)
- Prostokąt wejściowy
- Wszystkie „działające” linie / okręgi
- Wpisany romb
w wyraźnych kolorach. Na powyższym obrazie prostokąt jest czarny, linie robocze są niebieskie, a romb pomarańczowy. Linie powinny być rysowane w kolejności pokazanej na liście (np. Romb zastępuje linie robocze i prostokąt).
Obraz wyjściowy musi być wystarczająco duży, aby pomieścić wszystko. Na przykład pokazane kręgi nie mogą wyjść poza granice.
metoda
Metodą zastosowaną w powyższym przykładzie jest:
- Narysuj okrąg, używając lewego dolnego rogu jako środka, a górnego prawego jako punktu na obwodzie, nadając promień równy przekątnej prostokąta.
- Zrób to samo, ale zamień punkty środkowe i obwodowe.
- Narysuj linię między przecięciami dwóch kół, nadając prostopadłą dwusieczną do przekątnej prostokąta.
- Użyj skrzyżowań nowej linii i prostokąta, aby narysować romb.
Działa to, ponieważ wewnętrzne przekątne rombu zawsze są prostopadłe do siebie. Nie dołączam tutaj jednak pełnego tego dowodu.
Nie jest to jedyna metoda na zdobycie rombu i możesz użyć innej, biorąc pod uwagę, że wyjaśnisz, co robisz. Myślę , że to chyba najłatwiejsze.
Zasady
Możesz rysować tylko koła i linie (a raczej segmenty linii). Okrąg jest definiowany za pomocą punktu środkowego i punktu obwodowego. Linia jest zdefiniowana przez dowolne dwa punkty. Linie nie muszą mieć żadnej określonej długości, ale muszą co najmniej obejmować punkty definiujące (zwróć uwagę na przykładowy obraz: linia przechodzi nieco poza przecięcia okręgu, ale nie do krawędzi). W przypadku okręgów promień od środka do wybranego punktu obwodowego jest uważany za linię roboczą i musi zostać pokazany.
Aby zrasteryzować linie, możesz użyć dowolnego rozpoznanego algorytmu (np. Bresenhama) lub polegać na wszelkich wbudowaniach, jakie może mieć Twój język. Jeśli Twoje dane wyjściowe są oparte na wektorze, upewnij się, że są wyświetlane w rozdzielczości co najmniej tak dużej, jak prostokąt wejściowy w pikselach. Będziesz także rysować na zwykłym płótnie, więc proszę, pomiń wszelkie znaki siatki lub obce wyniki.
Bez oszukiwania! Możesz określić położenie punktów / linii / okręgów tylko na podstawie tego, co ustaliłeś do tej pory. Jeśli nie potrafisz wyjaśnić, jak używać linii roboczych / okręgów do pokazania, że to romb, robisz to źle.
Możesz użyć dowolnej pary przeciwnych punktów, a prostokąt nie musi być narysowany w linii, o ile dane wyjściowe są prawidłowe.
Wejście zawsze będzie prostokątem innym niż kwadrat, więc nie martw się o specjalną obudowę.
Wreszcie jest to standardowy kod golfowy, więc wygrywa najmniejszy rozmiar w bajtach.