Aparentemente sim! Em três etapas fáceis.
Passo 1
Seja f ( n ) a função de contagem primária (número de primos menor ou igual a n ).
Defina a sequência inteira s ( n ) da seguinte maneira. Para cada número inteiro positivo n ,
- Inicialize t para n .
- Enquanto t não for primo nem 1, substitua t por f ( t ) e itere.
- O número de iterações é s ( n ).
É garantido que o processo iterativo termine porque f ( n ) < n para todos os n .
Considere, por exemplo, n = 25. Inicializamos t = 25. Como esse não é um primo nem 1, calculamos f (25), que é 9. Esse valor se torna o novo valor para t . Como não é primo nem 1, continuamos: f (9) é 4. Continuamos novamente: f (4) é 2. Como esse é um primo, paramos aqui. Fizemos três iterações (de 25 para 9, depois para 4 e depois para 2). Assim s (25) é 3.
Os primeiros 40 termos da sequência são os seguintes. A sequência não está no 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
Dado um número inteiro positivo ímpar N , construa uma matriz N × N (matriz) enrolando a sequência finita s (1), s (2), ..., s ( N 2 ) para formar uma espiral quadrada para fora . Por exemplo, dado N = 5, a espiral é
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)
ou, substituindo os valores,
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
etapa 3
Represente a matriz N × N como uma imagem com um mapa de cores cinza ou com outro mapa de cores do seu gosto. O mapa deve ser gradual, para que a ordem dos números corresponda a alguma ordem visualmente óbvia das cores. Os casos de teste abaixo mostram alguns exemplos de mapas de cores.
O desafio
Dado um número inteiro positivo ímpar N , produza a imagem descrita acima.
Regras
A espiral deve estar para fora, mas pode ser no sentido horário ou anti-horário, e pode começar a se mover para a direita (como no exemplo acima), esquerda, baixo ou para cima.
As escalas dos eixos horizontal e vertical não precisam ser as mesmas. Também etiquetas de eixo, barra de cores e elementos similares são opcionais. Desde que a espiral possa ser vista com clareza, a imagem é válida.
As imagens podem ser produzidas por qualquer meio padrão . Em particular, a imagem pode ser exibida na tela ou um arquivo gráfico pode ser produzido ou uma matriz de valores RGB pode ser impressa. Se estiver produzindo um arquivo ou uma matriz, publique um exemplo da aparência quando exibida.
Os meios e o formato de entrada são flexíveis, como de costume . Um programa ou uma função pode ser fornecida . As brechas padrão são proibidas .
O menor código em bytes vence.
Casos de teste
As imagens a seguir (clique para resolução total) correspondem a vários valores de N . Uma espiral no sentido horário e primeira direita é usada, como no exemplo acima. As imagens também ilustram vários mapas de cores válidos.
imshow
faz
imshow
faz isso.
s(n)
pode ser alimentada em alguma função / pacote de plotagem sem ser modificada (acho queimshow
no matplotlib poderia lidar com isso, por exemplo), essa é uma forma de saída aceitável?