Erstellen Sie eine Darstellung (Poincare-Scheibe) einer Tessellation auf einer hyperbolischen Ebene, z.
Das Programm benötigt vier Eingaben:
1) Wie viele Kanten / Polygone (drei in diesem Beispiel).
2) Wie viele schneiden sich an jedem Scheitelpunkt (in diesem Beispiel sieben).
3) Wie viele Schritte vom mittleren Scheitelpunkt entfernt, um gerendert zu werden (5 in diesem Beispiel, wenn Sie genau hinschauen). Dies bedeutet, dass ein Scheitelpunkt enthalten ist, wenn er in 5 oder weniger Schritten vom Zentrum aus erreicht werden kann. Kanten werden gerendert, wenn beide Scheitelpunkte enthalten sind.
4) Die Auflösung des Bildes (eine einzelne Anzahl von Pixeln, das Bild ist quadratisch).
Die Ausgabe muss ein Bild sein. Kanten müssen als Kreisbögen und nicht als Linien gerendert werden (die Poincaré-Scheibenprojektion verwandelt Linien in Kreise). Punkte müssen nicht gerendert werden. Wenn der Benutzer etwas eingibt, das nicht hyperbolisch ist (dh 5 Dreiecke treffen sich an jedem Scheitelpunkt), muss das Programm nicht richtig funktionieren. Dies ist Code-Golf, also gewinnt die kürzeste Antwort.
quelle
Antworten:
Mathematica, 2535 Bytes
Von hier genommen (daher ist es das Community-Wiki). Nicht wirklich so golfen. Sehen Sie sich den bereitgestellten Link an, um die Erklärung des Autors zu seinem Code zu erhalten.
Ich bin auch kein Mathematica-Experte, aber ich wette, Martin könnte Wunder in Bezug auf die Codelänge bewirken. Ich verstehe nicht einmal die Mathematik dahinter.
Ich habe es lesbar gelassen, aber wenn die Frage nicht geschlossen wird, spiele ich es über die Lesbarkeit hinaus und verschiebe die 2 anderen Parameter innerhalb der Aufruferfunktion.
Derzeit ungültig , zögern Sie nicht, es zu verbessern:
Ich denke, dies verwendet eher Linien als Bögen.
Zentriert auf einem Gesicht und nicht auf einem Scheitelpunkt.
Genannt wie:
quelle