Wykonaj wykres (dysk Poincare) teselacji na płaszczyźnie hiperbolicznej, na przykład:
Program pobiera cztery dane wejściowe:
1) Ile krawędzi / wielokątów (trzy w tym przykładzie).
2) Ile przecina w każdym wierzchołku (siedem w tym przykładzie).
3) Ile kroków od środkowego wierzchołka do renderowania (5 w tym przykładzie, jeśli przyjrzysz się uważnie). Oznacza to, że wierzchołek jest uwzględniony, jeśli można go osiągnąć w 5 lub mniej krokach od środka. Krawędzie są renderowane, jeśli oba ich wierzchołki są uwzględnione.
4) Rozdzielczość obrazu (pojedyncza liczba pikseli, obraz jest kwadratowy).
Dane wyjściowe muszą być obrazem. Krawędzie muszą być renderowane jako łuki okręgów, a nie linie (rzut dysku Poincaré przekształca linie w koła). Punkty nie muszą być renderowane. Gdy użytkownik wprowadza coś, co nie jest hiperboliczne (tj. 5 trójkątów spotykających się w każdym wierzchołku), program nie musi działać poprawnie. To jest golf golfowy, więc wygrywa najkrótsza odpowiedź.
źródło
Odpowiedzi:
Mathematica, 2535 bajtów
Zaczerpnięte stąd (stąd dlaczego jest to wiki społeczności). Nie do końca tak golfa. Zobacz podany link wyjaśniający autorowi jego kod.
Poza tym nie jestem ekspertem od Matematyki, ale założę się, że Martin potrafi zdziałać cuda w zakresie długości kodu. Nie rozumiem nawet matematyki.
Zostawiłem czytelny, ale jeśli pytanie się nie zamknie, przejdę do poprzedniej wersji i przeniosę 2 pozostałe parametry do funkcji wywołującej.
Obecnie nieważne , pomóż nam to poprawić:
Myślę, że używa to raczej linii niż łuków.
Wyśrodkowany na twarzy, a nie wierzchołku.
Nazywany jak:
źródło