Zadanie polega na narysowaniu regularnego wielokąta n boków za pomocą tylko kompasu i nieoznakowanej linijki.
Dane wejściowe (n) to jedna z następujących 10 liczb: 3, 4, 5, 6, 8, 10, 12, 15, 16, 17.
Metoda : Ponieważ masz tylko linijkę i kompas, możesz rysować tylko punkty, linie i okręgi.
Linię można narysować tylko:
- przez dwa istniejące punkty.
Koło można narysować tylko:
- z jednym punktem jako środkiem, a jego obwód przechodzi przez drugi punkt.
Punkt można narysować tylko:
na przecięciu dwóch linii
na przecięciu linii i koła
na przecięciu dwóch kręgów
na początku, kiedy możesz narysować 2 punkty, aby rozpocząć.
Poprzez ten proces (i tylko przez ten proces) musisz narysować n linii żądanego n-gona wraz z wszelkimi pracami wymaganymi do przejścia do tego etapu.
EDYCJA: Pozycja skrzyżowań musi zostać obliczona, ale linie i okręgi można narysować dowolnymi środkami przewidzianymi przez język.
Wyjście to obraz wielokąta n-stronnego, przedstawiający działanie.
Graficznie nie ma żadnych ograniczeń dotyczących rozmiaru obrazu, formatu, grubości linii lub czegokolwiek innego nie wymienionego tutaj. Musi być jednak możliwe wizualne rozróżnienie wyraźnych linii, okręgów i ich przecięć. Do tego:
- N linii, które składają się na boki twojego n-gona, muszą mieć inny kolor niż twój „działający” (tj. Dowolne punkty, koła lub inne linie) oraz inny kolor tła.
- Praca może opuścić granice obszaru rysunku, z wyjątkiem punktów, które muszą znajdować się w widocznych granicach obrazu.
- Okrąg może być pełnym kołem lub tylko łukiem (o ile pokazuje wymagane przecięcia).
Linia jest nieskończona (tzn. Opuszcza obszar rysowania) lub odcięta w dwóch punktach, przez które przechodzi.EDYCJA: Linia może być narysowana na dowolnej długości. Punkty można tworzyć tylko tam, gdzie narysowana linia przecina się wizualnie.- Punkt można narysować według własnego uznania, w tym nie oznaczać go.
Punktacja jest dwojaka, zgłoszenie otrzymuje 1 punkt za każdy obsługiwany wkład, co daje maksymalnie 10 punktów. W przypadku remisu wygrywa najkrótsza liczba bajtów.
Uznanie zostanie przyznane tym, które mogą skonstruować n-gony w jak najmniejszej liczbie kroków lub są w stanie skonstruować n-gony poza podanym zakresem, ale to nie poprawi twojego wyniku.
CIRCLE 0,0,500
czy muszęR=SQRT(300^2+400^2): CIRCLE 0,0,R
? (BTW wypracowanie pozycji skrzyżowań jest prawdopodobnie trudniejsze niż linie i okręgi.)Carl Friedrich Gauss in 1796 showed that a regular n-sided polygon can be constructed with straightedge and compass if the odd prime factors of n are distinct Fermat primes
Odpowiedzi:
BBC Basic, 8 wielokątów: 3,4,5,6,8,10,12,15 strony (także 60 stron)
Pobierz emulator ze strony http://www.bbcbasic.co.uk/bbcwin/download.html
Postanowiłem nie uwzględniać 16 stron, po prostu dlatego, że moja przedkonstrukcja była dość zagracona. Potrzebne byłyby jeszcze 2 kółka i linia. BTW 17 stron jest naprawdę bardzo skomplikowane i być może najlepiej byłoby, gdyby był to osobny program.
Dostałem więcej zwrotu za dodanie 2 kółek do mojej oryginalnej konstrukcji, aby stworzyć pięciokąt, ponieważ to również dało mi dostęp do 10,15 i 60 stron.
Program wykonuje wstępną konstrukcję, zanim poprosi o dane wejściowe użytkownika. To wystarczy, aby zdefiniować co najmniej 2 punkty na głównym okręgu, które odpowiadają sąsiednim wierzchołkom figury 3,4,5,6,8,10,10,15 lub 60-stronnej. Punkty są przechowywane w zestawie 99-elementowych tablic, w których elementy 0-59 są odłożone na równomiernie rozmieszczone punkty na obwodzie. Ma to głównie na celu zapewnienie przejrzystości, ośmiokąt nie mieści się idealnie w 60 punktach, więc potrzebna jest tam pewna elastyczność (a także 16-gon, jeśli byłby uwzględniony). Zdjęcie wygląda jak zdjęcie poniżej, w kolorze białym i szarym, z tylko dwa żółte kółka poświęcone są wyłącznie kształtom z wielokrotnością 5 boków. Zobacz http://en.wikipedia.org/wiki/Pentagon#mediaviewer/File:Regular_Pentagon_Inscribe_in_a_Circle_240px.gifdla mojej preferowanej metody rysowania pięciokątem. Jawny kąt ma na celu uniknięcie linii pionowych, ponieważ program nie obsługuje nieskończonych gradientów.
Użytkownik wprowadza liczbę
d
wymaganej liczby stron. Program wyszukuje w tablicy indeks pierwszego z dwóch punktów (następny znajduje się 60 / d dalej w kierunku zgodnym z ruchem wskazówek zegara).Następnie program przechodzi przez proces rysowania koła wyśrodkowanego na drugim punkcie przechodzącym przez pierwszy i obliczania nowego skrzyżowania w celu obejścia głównego koła. Koła konstrukcyjne są narysowane na niebiesko, a wymagany wielokąt jest narysowany na czerwono. Ostateczne obrazy wyglądają tak.
Jestem z nich bardzo zadowolony. BBC Basic wykonuje obliczenia wystarczająco dokładnie. Jednak jest oczywiste (szczególnie z 15 i 60 bokami), że BBC Basic ma tendencję do rysowania kół o nieco mniejszym promieniu niż powinien.
źródło
Mathematica,
234 wielokąty, 759 bajtówLosowe punkty wypunktowania:
Switch
aby wybrać odpowiednie koła i linie dla każdej konstrukcji. W ten sposób mogłem ponownie wykorzystać wiele prymitywów między nimi.Oto nielepszy kod:
A oto wyniki:
źródło
Switch
. To prawdopodobnie pozwoliłoby mi ponownie użyć znacznie więcej linii i punktów w kręgach.