Narysuj coś, co wygląda następująco:
Mówiąc dokładniej, narysuj okrąg o promieniu r, z n równomiernie rozmieszczonymi stycznymi liniami długości l. Połącz końce tych linii, aby utworzyć nowy n-stronny regularny wielokąt.
Zasady
r = promień okręgu
n = liczba linii stycznych - musi być równomiernie rozmieszczona wokół koła (n> = 3)
l = długość boku linii stycznych
Utwórz program, który akceptuje argumenty {r, n, l} i rysuje wymagane dane wyjściowe.
Jednostki są w pikselach.
Nie ma ograniczeń co do lokalizacji rysunku, o ile jest on widoczny.
Obraz jest dość oczywisty.
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach!
code-golf
graphical-output
Stretch Maniac
źródło
źródło
Odpowiedzi:
Mathematica,
135132131123 123 bajtówTen kod oczekuje danych wejściowych (za pomocą zachęty) dokładnie tak, jak określono w pytaniu: np
{100, 6, 150}
. Tworzy grafikę wektorową, więc dołączam oś, jak określono w komentarzach OP.Zarówno styczne, jak i wielokąt są w rzeczywistości paskiem pojedynczej linii, przechodząc przez „narożnik wielokąta, punkt styczny, narożnik wielokąta, następny narożnik wielokąta, punkt styczności, narożnik wielokąta ...”
Gdyby nie oś, mógłbym to zrobić w 107 bajtach:
Dodatkowe oszczędności (oprócz
Axes->1>0
) wynikają z faktu, że mogę teraz przeskalować wszystkor
, co upraszcza wezwanie doCircle
uzyskania koła jednostek.źródło
{0,0}~Circle~r
Python, 133 bajty
Jak dotąd jedyną odpowiedzią na zgodność z zasadą „Jednostki są w pikselach” ...
Dodaj
exitonclick()
na końcu, jeśli nie chcesz, aby okno natychmiast się zamykało.Wynik:
python tangentpoly.py <<< "20, 6, 30"
:python tangentpoly.py <<< "100, 8, 200"
:źródło
for i in n*[0]:c(r,360/n);fd(l);bk(l)
->exec'c(r,360/n);fd(l);bk(l)'*n;
T-SQL
440483Nie zamierzam wygrać żadnych nagród, ale lubię rysować :)
Edytuj przekleństwa! Właśnie zauważyłem, że popsułem wielokąty narysowane w poprzek koła. Naprawiono kosztem.
Wykonany z następującymi zmiennymi
Uruchom w Sql Server Management Studio 2012+ zwróci to w zakładce wyników przestrzennych.
Z
z
Rozbudowany
źródło
MATLAB - 233 bajty
Przykładowa funkcja wyjściowa dla
n = 8, r = 4, l = 6
(dołączone osie wskazują długość jednostki):Przykładowe wyjście funkcji dla
n = 1024, r = 4, l = 2
:źródło
HTML + JavaScript (E6) 298
Aby przetestować, zapisz jako plik HTML i otwórz za pomocą FireFox. Wstaw parametry r, n, l do pola wprowadzania, oddzielając przecinkami, a następnie tabuluj.
Lub spróbuj jsfiddle
Próbka wyjściowa
źródło