Questa sfida è ispirata a questo fantastico diagramma animato (grazie a Flawr per averlo pubblicato in chat).
Dato un input n, disegna tutti i suoi fattori primi come poligoni nidificati di punti, come specificato.
Ad esempio, dato il numero 357 = 17x7x3, disponi 3 punti in un triangolo, 7 versioni di quei triangoli in un ettagono e 17 versioni di quegli eptagoni in un 17 gon. In breve, i poligoni nidificati vanno dal più grande fattore primo all'esterno al più piccolo all'interno. Perché 357, la tua risposta dovrebbe apparire un po 'così (con o senza colore):
Ogni poligono di ogni numero primo >= 3non deve essere ruotato attorno al diagramma.
L'unica eccezione è il primo 2, in particolare per i poteri dispari di 2. Come puoi vedere nell'esempio che 376 = 47x2x2x2segue, le 8s ruotano e non sono singole linee di 2s, ma sono pile verticali per 4s in un quadrato. Anche i poteri di 2, disposti in quadrati, non devono essere ruotati in questo modo.
In effetti, 448 = 7x2x2x2x2x2x2ha un diagramma che assomiglia a un ettagono di 64s, ed 64è organizzato in un quadrato di quadrati di quadrati, ma senza rotazione.
Altri due esempi sono 440 = 11x5x2x2x2e 432 = 3x3x3x2x2x2x2. Vediamo che 440con una potenza dispari di 2, ha ruotato 8s, ma 432con una potenza pari a 2non ruota i suoi 16s.
E infine, ecco un esempio minimo 10 = 5x2, senza colore che ho preso in giro con Python e il suo turtlemodulo.
La sfida
- Dato un input in
ncui1 <= n <= 10000, output un'immagine dei suoi poligoni fattore nidificato. - Le regole sono:
- L'immagine è composta da poligoni nidificati di punti, da un poligono con (il più grande fattore primo) lati all'esterno al più piccolo fattore primo all'interno.
- Per il fattore 2, i poteri di 2 dovrebbero impilarsi come una linea, quindi un quadrato, quindi una linea di quadrati e così via. Anche i poteri di 2 non devono essere ruotati. Poteri dispari di 2 dovrebbero essere ruotati attorno ai rispettivi poligoni e dovrebbero essere impilati verticalmente prima della rotazione.
- Puoi orientare l'immagine come preferisci (anche se preferisco), ma ogni poligono nidificato dovrebbe essere rivolto nella stessa direzione di qualsiasi altro poligono, con la sola eccezione dei poteri dispari di 2.
- Sono disponibili due opzioni per la dimensione dell'immagine e la dimensione del punto:
- La dimensione dell'immagine è statica e la dimensione del punto diminuisce
nall'aumentare (come nell'animazione). - La dimensione del punto è statica e la dimensione dell'immagine aumenta
nall'aumentare.
- La dimensione dell'immagine è statica e la dimensione del punto diminuisce
- I primi tre strati di poligoni dovrebbero essere distinguibili dai poligoni vicini (cioè non toccanti), ma considerando la dimensione delle immagini intorno e intorno
n=10000, va bene se gli strati dopo iniziano a toccarsi. Preferirei se non lo facessero, ma potrebbe essere inevitabile adattarsi a un'immagine caricabile su Stack Exchange. - Il colore è facoltativo
- La forma dei punti dipende da te. Se i quadrati sono migliori per la tua lingua, usa quelli.
- Nessun bonus, ma vorrei vedere qualcuno animare e colorare i diagrammi come nel post originale.
Grazie a Conor O'Brien, EasterlyIrk, Martin Ender, Kritixi Lithos, Mego, DJ McMayhem e El'endia Starman per il loro aiuto nello scrivere questa domanda.
Questo codice golf, quindi il codice più corto vince. Buona fortuna e buon golf!







n = n //= idovrebbe esseren//= i?