Dato un numero intero N> = 2, produce un'immagine che mostra un nodo Sierpiński di grado N.
Ad esempio, qui ci sono nodi di grado 2, 3, 4 e 5:
Fare clic sulle immagini per visualizzare a schermo intero (maggiore è il grado più grande è l'immagine).
specificazione
- Un nodo Sierpiński di grado N viene disegnato usando i vertici di un triangolo Sierpiński di grado N come punti guida. Un triangolo Sierpiński di grado N è costituito da tre triangoli Sierpiński di grado N-1 disposti in un triangolo più grande. Un triangolo Sierpiński di grado 0 è un triangolo equilatero.
- I triangoli dei componenti più piccoli hanno una lunghezza laterale 64, dando al triangolo Sierpiński su cui si basa il nodo una lunghezza laterale complessiva di
- Il centro del triangolo esterno è posizionato al centro dell'immagine. Questo non dà uguale spazio bianco in alto e in basso.
- L'output è un'immagine quadrata di lunghezza laterale dove è
ceiling(x)
, il numero intero più piccolo maggiore o uguale a x. Questo è appena abbastanza grande per il vertice superiore del triangolo Sierpiński sottostante da essere contenuto nell'immagine quando il centro del triangolo è al centro dell'immagine. - La singola curva deve passare sopra e sotto se stessa, alternandosi rigorosamente. Le soluzioni possono scegliere tra under then over, oppure over then under.
- Le immagini di esempio mostrano il primo piano nero e lo sfondo bianco. Puoi scegliere due colori facilmente distinguibili. L'antialiasing è consentito ma non necessario.
- Non devono esserci spazi dove si incontrano due archi o dove la curva passa sopra o sotto se stessa.
- L'output può essere in qualsiasi file di immagine in formato raster o in qualsiasi file di immagine in formato vettoriale che includa una dimensione di visualizzazione predefinita corretta. Se si visualizza direttamente sullo schermo, questo deve essere in una forma che consenta allo scorrimento di vedere l'immagine intera quando è più grande dello schermo.
Determinazione del centro, del raggio e dello spessore dell'arco
- Il nodo è costruito come una serie di archi circolari che si incontrano in punti in cui le loro tangenti sono parallele, per unire senza soluzione di continuità. Questi archi vengono visualizzati come settori anulari (archi con spessore).
- I centri di questi archi sono i vertici dei più piccoli triangoli sottosopra. Ciascuno di questi vertici è il centro di esattamente un arco.
- Ogni arco ha un raggio di
- L'eccezione è che gli archi nei tre triangoli più esterni (agli angoli del triangolo grande) hanno un centro che è il punto medio dei due vertici interni adiacenti, e quindi hanno un raggio di
- Ogni arco è rappresentato con uno spessore totale (differenza tra raggio interno e raggio esterno) di e i bordi neri di questo hanno ciascuno uno spessore di La curva deve avere questi bordi e non essere solo una striscia solida.
Unità di misura
- Tutte le distanze sono in pixel (1 è la distanza orizzontale o verticale tra 2 pixel adiacenti).
- La radice quadrata di 3 deve avere una precisione di 7 cifre significative. Cioè, i tuoi calcoli devono essere equivalenti all'utilizzo di un ROOT3 tale che
1.7320505 <= ROOT3 < 1.7320515
punteggio
Vince il codice più breve in byte.
Per quelli che si chiedono, N = 0 e N = 1 non sono inclusi perché corrispondono a un cerchio e un trifoglio, che non corrispondono del tutto allo schema che si applica per N> = 2. Mi aspetto che la maggior parte degli approcci a questa sfida debba aggiungere un codice di caso speciale per 0 e 1, quindi ho deciso di ometterli.
stroke-width:3.464102
e simili è un po 'eccessivo se l'idea fosse quella di ottenere una precisione di 1 pixel. Andrò avanti e lo includerò in questo modo, però, se questa è la sentenza.