Die Aufgabe besteht darin, ein reguläres Polygon von n Seiten mit nur einem Kompass und einem nicht markierten Lineal zu zeichnen.
Eingabe (n) ist eine der folgenden 10 Zahlen: 3, 4, 5, 6, 8, 10, 12, 15, 16, 17.
Methode : Da Sie nur ein Lineal und einen Kompass haben, können Sie nur Punkte, Linien und Kreise zeichnen.
Eine Linie kann nur gezeichnet werden:
- durch zwei bestehende Punkte.
Ein Kreis kann nur gezeichnet werden:
- mit einem Punkt als Mittelpunkt und mit seinem Umfang durch einen zweiten Punkt.
Ein Punkt kann nur gezogen werden:
am Schnittpunkt zweier Linien,
an der Schnittstelle (n) einer Linie und eines Kreises,
am Schnittpunkt zweier Kreise,
zu Beginn, wenn Sie 2 Punkte ziehen können, um zu beginnen.
Durch diesen Prozess (und nur durch diesen Prozess) müssen Sie die n Linien des angeforderten n-Gons zeichnen, zusammen mit jeglicher Arbeit, die erforderlich ist, um zu dieser Stufe zu gelangen.
BEARBEITEN: Die Position von Schnittpunkten muss berechnet werden, aber Linien und Kreise können mit allen Mitteln gezeichnet werden, die von der Sprache bereitgestellt werden.
Die Ausgabe ist ein Bild eines n-seitigen regulären Polygons, das die Arbeit zeigt.
Grafisch gibt es keine Einschränkungen hinsichtlich Bildgröße, Format, Linienstärke oder sonstigem, was hier nicht erwähnt wird. Es muss jedoch möglich sein, verschiedene Linien, Kreise und deren Schnittpunkte visuell zu unterscheiden. Zusätzlich:
- Die n Linien, aus denen die Seiten Ihres n-gons bestehen, müssen eine andere Farbe haben als Ihre Arbeit (dh Punkte, Kreise oder andere Linien) und eine andere Farbe für Ihren Hintergrund.
- Beim Arbeiten können die Ränder des Zeichenbereichs mit Ausnahme von Punkten, die sich alle innerhalb der sichtbaren Grenzen des Bildes befinden müssen, verlassen werden.
- Ein Kreis kann ein Vollkreis oder nur ein Bogen sein (solange er die erforderlichen Schnittpunkte anzeigt).
Eine Linie ist unendlich (dh verlässt den Zeichenbereich) oder wird an den beiden Punkten, durch die sie verläuft, abgeschnitten.BEARBEITEN: Eine Linie kann in beliebiger Länge gezogen werden. Punkte können nur dort erstellt werden, wo sich die gezeichnete Linie visuell schneidet.- Ein Punkt kann nach Belieben gezeichnet werden, auch wenn er nicht markiert ist.
Es gibt zwei Punkte, eine Einsendung erhält 1 Punkt für jede Eingabe, die sie unterstützt, für maximal 10 Punkte. Im Falle eines Unentschieden gewinnt die kürzeste Byteanzahl.
Einsendungen, die in den wenigsten Schritten n-Gons konstruieren können oder in der Lage sind, n-Gons außerhalb des angegebenen Bereichs zu konstruieren, werden anerkannt, aber dies hilft Ihrer Punktzahl nicht.
CIRCLE 0,0,500
oder muss ich dies tunR=SQRT(300^2+400^2): CIRCLE 0,0,R
? (Übrigens ist das Ausarbeiten von Positionen von Kreuzungen wahrscheinlich schwieriger als das Ausarbeiten von Linien und Kreisen.)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
Antworten:
BBC Basic, 8 Polygone: 3,4,5,6,8,10,12,15 Seiten (auch 60 Seiten)
Laden Sie den Emulator unter http://www.bbcbasic.co.uk/bbcwin/download.html herunter
Ich habe mich entschieden, 16 Seiten nicht einzubeziehen, nur weil meine Vorkonstruktion ziemlich unübersichtlich wurde. 2 weitere Kreise und eine Linie wären nötig. BTW 17 Seiten ist in der Tat sehr kompliziert und würde vielleicht am besten als separates Programm gehen.
Ich bekam mehr Gegenleistung für das Hinzufügen von 2 Kreisen zu meiner ursprünglichen Konstruktion, um das Fünfeck herzustellen, da dies mir auch Zugang zu 10,15 und 60 Seiten verschaffte.
Das Programm führt eine Vorkonstruktion durch, bevor Benutzereingaben angefordert werden. Dies ist ausreichend, um mindestens 2 Punkte auf dem Hauptkreis zu definieren, die benachbarten Eckpunkten einer 3, 4, 5, 6, 8, 10, 12, 15 oder 60-seitigen Figur entsprechen. Die Punkte werden in einem Satz von 99-Element-Arrays gespeichert, in denen die Elemente 0-59 für gleichmäßig verteilte Punkte am Umfang beiseite gelegt werden. Dies dient hauptsächlich der Klarheit. Das Achteck passt nicht perfekt in 60 Punkte. Daher ist dort eine gewisse Flexibilität erforderlich (und auch für das 16-Gon, wenn es enthalten wäre.) Das Bild sieht wie das folgende aus, nur in Weiß und Grau mit Die beiden gelben Kreise sind ausschließlich Formen mit einem Vielfachen von 5 Seiten gewidmet. Siehe http://en.wikipedia.org/wiki/Pentagon#mediaviewer/File:Regular_Pentagon_Inscribed_in_a_Circle_240px.giffür meine bevorzugte Pentagon-Zeichenmethode. Der unruhige Winkel soll vertikale Linien vermeiden, da das Programm keine unendlichen Steigungen verarbeiten kann.
Der Benutzer gibt eine Zahl
d
für die Anzahl der erforderlichen Seiten ein. Das Programm schlägt im Array den Index des ersten der beiden Punkte nach (der nächste Punkt ist im Uhrzeigersinn 60 / d entfernt).Das Programm durchläuft dann den Prozess des Zeichnens eines Kreises, der auf dem zweiten Punkt zentriert ist, der durch den ersten verläuft, und des Berechnens des neuen Schnittpunkts, um sich um den Hauptkreis herum fortzubewegen. Die Konstruktionskreise werden blau und das gewünschte Polygon rot gezeichnet. Die endgültigen Bilder sehen so aus.
Ich bin sehr zufrieden mit ihnen. BBC Basic führt die Berechnungen genau genug durch. Es ist jedoch offensichtlich (besonders bei 15 und 60 Seiten), dass BBC Basic dazu neigt, Kreise mit einem etwas kleineren Radius zu zeichnen, als es sollte.
quelle
Mathematica,
234 Polygone, 759 BytesZufällige Aufzählungszeichen:
Switch
, um die relevanten Kreise und Linien für jede Konstruktion auszuwählen. Auf diese Weise konnte ich viele Primitive zwischen ihnen wiederverwenden.Hier ist der ungolfed Code:
Und hier sind die Ausgaben:
quelle
Switch
. Das würde mir wahrscheinlich erlauben, viel mehr Kreislinien und Punkte wiederzuverwenden.