Wenn Sie nur ein Lineal und einen Kompass haben, schreiben Sie eine Raute in das gegebene Rechteck und teilen Sie zwei gegenüberliegende Punkte.
Eingang
Eingabe sind die Abmessungen des Rechtecks. Im gezeigten Beispiel wäre das 125, 50
. Sie können Eingaben auf die bequemste Weise vornehmen (als zwei Ganzzahlen, Liste, Zeichenfolgen usw.).
Die größere Abmessung beträgt mindestens 100, während die kleinere mindestens 25 beträgt. Beide Cap bei 200.
Ausgabe
Die Ausgabe erfolgt in Form eines Bildes (auf dem Bildschirm angezeigt oder als Datei gespeichert)
- Das Eingaberechteck
- Alle "arbeitenden" Linien / Kreise
- Die eingeschriebene Raute
in verschiedenen Farben. Im obigen Bild ist das Rechteck schwarz, die Arbeitslinien blau und die Raute orange. Die Linien sollten in der in der Liste angegebenen Reihenfolge gezeichnet werden (z. B. Rhombus überschreibt Arbeitslinien und Rechtecke).
Das Ausgabebild muss groß genug sein, um alles zu enthalten. Beispielsweise können die angezeigten Kreise nicht außerhalb der Grenzen liegen.
Methode
Die im obigen Beispielbild verwendete Methode lautet:
- Zeichnen Sie einen Kreis mit der linken unteren Ecke als Mittelpunkt und der rechten oberen Ecke als Punkt auf dem Umfang. Geben Sie dabei einen Radius an, der der Diagonale des Rechtecks entspricht.
- Gehen Sie genauso vor, tauschen Sie jedoch die Mittelpunkt- und Umfangspunkte aus.
- Zeichnen Sie eine Linie zwischen den Schnittpunkten der beiden Kreise und geben Sie der Diagonale des Rechtecks eine senkrechte Halbierung.
- Verwenden Sie die Schnittpunkte der neuen Linie und des neuen Rechtecks, um die Raute zu zeichnen.
Dies funktioniert, weil die Innendiagonalen einer Raute sich immer senkrecht halbieren. Ich lege hier jedoch keinen vollständigen Beweis dafür bei.
Dies ist nicht die einzige Methode, um Ihre Raute zu erhalten, und Sie können eine andere verwenden, vorausgesetzt, Sie erklären, was Sie tun. Ich glaube, es ist wahrscheinlich das einfachste.
Regeln
Sie können nur Kreise und Linien (bzw. Liniensegmente) zeichnen. Ein Kreis wird mit einem Mittelpunkt und einem Umfangspunkt definiert. Eine Linie wird durch zwei beliebige Punkte definiert. Linien müssen keine festgelegte Länge haben, aber sie müssen mindestens die definierenden Punkte abdecken (beachten Sie das Beispielbild: Die Linie verläuft ein Stück über die Kreiskreuzungen hinaus, jedoch nicht bis zur Kante). Bei Kreisen gilt der Radius vom Mittelpunkt zum gewählten Umfangspunkt als Arbeitslinie und muss angezeigt werden.
Um die Zeilen zu rastern, können Sie einen beliebigen anerkannten Algorithmus (z. B. Bresenham) verwenden oder sich auf die in Ihrer Sprache enthaltenen Funktionen verlassen. Wenn Ihre Ausgabe vektorbasiert ist, stellen Sie bitte sicher, dass sie mit einer Auflösung angezeigt wird, die mindestens so groß ist wie das Eingaberechteck in Pixel. Außerdem werden Sie auf einer einfachen Leinwand zeichnen, also unterdrücken Sie bitte alle Gittermarkierungen oder überflüssigen Ausgaben.
Kein Schummeln! Sie können die Platzierung von Punkten / Linien / Kreisen nur anhand der bisher festgelegten Werte bestimmen. Wenn Sie nicht erklären können, wie Sie Ihre Arbeitslinien / -kreise verwenden, um zu zeigen, dass es sich um eine Raute handelt, machen Sie es falsch.
Sie können jedes beliebige Paar von gegenüberliegenden Punkten verwenden, und das Rechteck muss nicht achsenausgerichtet gezeichnet werden, solange die Ausgabe korrekt ist.
Die Eingabe wird immer ein nicht quadratisches Rechteck sein. Machen Sie sich also keine Gedanken über die Sondergehäuse.
Schließlich ist dies Standard-Code-Golf, so dass die niedrigste Größe in Bytes gewinnt.