O objetivo deste desafio é representar graficamente uma caminhada no plano, onde a direção de cada etapa é determinada pela primalidade de pela paridade de sua expansão binária. Especificamente,
- A direção inicial é fixa, digamos Norte.
- Todas as etapas têm o mesmo comprimento .
- A direção da etapa pode ser norte, oeste, sul ou leste e é determinada da seguinte maneira:
- Se não for primo, a direção não muda.
- Se for primo e a expansão binária de tiver um número par de unidades, vire à direita.
- Se for primo e a expansão binária de tiver um número ímpar de unidades, vire à esquerda.
Como exemplo , assuma que a direção inicial é Norte. Os primeiros passos são:
- não é primo. Então, avançamos um passo na direção atual, que é o norte.
- é primo e sua expansão binária,,
10
tem e número ímpar de unidades. Então, vire à esquerda e agora estamos de frente para o oeste. Nós damos um passo nessa direção. - é primo e sua expansão binária,,
11
tem e número par de unidades. Então, viramos à direita e agora estamos voltados para o norte. Nós damos um passo nessa direção. - não é primo. Então, avançamos um passo na direção atual, que é o norte.
O desafio
Entrada : positivo inteiro .
Saída : plotagem da caminhada step, conforme definido acima.
Regras adicionais
- A direcção inicial pode ser livremente escolhida (e não necessariamente do Norte), mas deve ser a mesma para todos os .
- A regra de giro pode ser oposta à descrita acima, ou seja, vire à direita para paridade ímpar e à esquerda para par; mas tem que ser o mesmo para todos os .
- A saída deve ser uma representação gráfica da caminhada. Por exemplo:
- A caminhada pode ser desenhada com segmentos de linha.
- Os pontos visitados podem ser mostrados com um marcador, como um ponto; com ou sem conectar segmentos de linha.
- É possível fornecer uma imagem rasterizada de duas cores, uma cor correspondente aos pontos visitados e outra para os não visitados.
- As escalas dos eixos horizontal e vertical não precisam ser as mesmas. Também etiquetas de eixo e elementos semelhantes são opcionais. Desde que a caminhada possa ser vista com clareza, o enredo é válido.
- Observe que alguns pontos são visitados mais de uma vez. O enredo não é sensível a isso. Por exemplo, se os segmentos de linha são mostrados no gráfico, cada segmento de unidade é exibido da mesma forma, não importando quantas vezes ele foi percorrido.
- O código deve funcionar para quaisquer
N
recursos ilimitados. É aceitável se, na prática, falhar bastanteN
devido a limitações de tempo, memória ou tipo de dados. - Entrada e saída são flexíveis, como de costume. Em particular, qualquer um dos meios padrão para a saída de imagens pode ser usado.
- O código mais curto em bytes vence.
Casos de teste
Os seguintes gráficos usam o Norte como direção inicial; até a paridade vira à direita; e a caminhada é representada com segmentos de linha.
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
é permitida? Alguma razão em particular para a saída ASCII não permitida, como a minha resposta agora excluída do carvão vegetal?