Apparentemente si! In tre semplici passaggi.
Passo 1
Sia f ( n ) la funzione di conteggio dei primi (numero di numeri primi minore o uguale a n ).
Definire la sequenza intera s ( n ) come segue. Per ogni numero intero positivo n ,
- Inizializza da t a n .
- Finché t non è né primo né 1, sostituire t con f ( t ) e iterare.
- Il numero di iterazioni è s ( n ).
Il processo iterativo termina perché f ( n ) < n per tutto n .
Si consideri ad esempio n = 25. Inizializziamo t = 25. Dato che questo non è un numero primo né 1, calcoliamo f (25), che è 9. Questo diventa il nuovo valore per t . Questo non è un numero primo né 1, quindi continuiamo: f (9) è 4. Continuiamo di nuovo: f (4) è 2. Dato che questo è un numero primo, ci fermiamo qui. Abbiamo eseguito 3 iterazioni (da 25 a 9, quindi a 4, quindi a 2). Quindi s (25) è 3.
I primi 40 termini della sequenza sono i seguenti. La sequenza non è in OEIS.
0 0 0 1 0 1 0 2 2 2 0 1 0 2 2 2 0 1 0 3 3 3 0 3 3 3 3 3 0 3 0 1 1 1 1 1 0 2 2 2
Passo 2
Dato un numero intero dispari positivo N , costruisci un array N × N (matrice) avvolgendo la sequenza finita s (1), s (2), ..., s ( N 2 ) per formare una spirale quadrata verso l'esterno . Ad esempio, dato N = 5 la spirale è
s(21) s(22) s(23) s(24) s(25)
s(20) s(7) s(8) s(9) s(10)
s(19) s(6) s(1) s(2) s(11)
s(18) s(5) s(4) s(3) s(12)
s(17) s(16) s(15) s(14) s(13)
o, sostituendo i valori,
3 3 0 3 3
3 0 2 2 2
0 1 0 0 0
1 0 1 0 1
0 2 2 2 0
Passaggio 3
Rappresenta l'array N × N come un'immagine con una mappa dei colori grigia o con qualche altra mappa dei colori di tuo gusto. La mappa dovrebbe essere graduale, in modo che l'ordine dei numeri corrisponda a un ordine visivamente evidente dei colori. I casi di test seguenti mostrano alcune mappe dei colori di esempio.
La sfida
Dato un numero intero positivo dispari N , produce l'immagine sopra descritta.
Regole
La spirale deve essere esterna, ma può essere in senso orario o antiorario e può iniziare a muoversi a destra (come nell'esempio sopra), a sinistra, in basso o in alto.
Le scale degli assi orizzontale e verticale non devono necessariamente essere le stesse. Anche le etichette degli assi, la barra dei colori e elementi simili sono opzionali. Finché la spirale può essere vista chiaramente, l'immagine è valida.
Le immagini possono essere emesse con qualsiasi mezzo standard . In particolare, l'immagine può essere visualizzata sullo schermo, oppure può essere prodotto un file grafico o può essere emessa una matrice di valori RGB. Se si genera un file o un array, si prega di pubblicare un esempio di come appare quando viene visualizzato.
I mezzi di input e il formato sono flessibili come al solito . È possibile fornire un programma o una funzione . Sono vietate le scappatoie standard .
Vince il codice più breve in byte.
Casi test
Le seguenti immagini (clicca per la risoluzione completa) corrispondono a diversi valori di N . Viene utilizzata una prima spirale verso destra, in senso orario, come nell'esempio sopra. Le immagini illustrano anche diverse mappe dei colori valide.
imshow
fa
imshow
fa.
s(n)
può essere inserito in qualche funzione / pacchetto di stampa senza essere modificato (penso cheimshow
in matplotlib potrebbe gestirlo ad esempio) è questo un modulo di output accettabile?