Desenhe a sequência de Recamán com ASCII


11

A sequência de Recamán ( A005132 ) é uma sequência matemática, definida da seguinte forma:

A(n)={0if n=0A(n1)nif A(n1)n is positive and not already in the sequenceA(n1)+notherwise

Uma explicação verbal alternativa mais simples é a seguinte:

Subtraia a menos que você não possa (o número é negativo ou já foi usado antes); nesse caso, adicione.

Os primeiros termos são 0,1,3,6,2,7,13,20,12,21,11

Agora, já existe esse desafio que solicita que você gere o nth termo da sequência. Este é um pouco diferente.

Desafio

Dado um número n, desenhe os primeiros ntermos da sequência. O que quero dizer com 'desenhar'? Deixe-me demonstrar:

  1. max([A(y) for y<=n])nA(1)=0A(2)=1A(3)=3A(4)=6A(5)=26

______

  1. Comece com a transição entre o primeiro e o segundo termo: ou seja, 0 e 1. Use |e -para desenhar um quadrado (comprimento e altura iguais), subindo. Nesse caso, teremos que perder o -porque a distância é apenas 1.
||
______
  1. A(2)=1A(3)=3
||
______
 | |
 |-|

Como você pode ver, essa linha também tem uma altura de 2, pois a altura deve ser igual à distância entre os dois termos.

Se continuarmos, chegaremos a:

   |--|
   |  |
|| |  |
______
 |||  |
 |||  |
  |   |
  |---|

Regras

  • Se houver um -e |colidindo, o posterior terá prioridade.
  • Pode ser que precede / fuga espaços antes / depois da imagem, mas de fuga / precedente _s ou -s não são permitidos (exceção é 0- ou 1- indexação)
  • Você pode optar por definir o ponto 0 imediatamente antes do primeiro _na linha numérica ou logo após.
  • Nenhum caractere alternativo para -, |ou _pode ser usado.
  • Isso é , então a resposta mais curta em bytes vence.

Caso de teste

Aqui está outro caso de teste, com n=10

            |-------|
            ||-----||
            ||     ||
  |----|    ||     ||
  |    |    ||     ||
  ||--||    ||     ||
  ||  ||    ||     ||
||||  ||    ||     ||
_____________________
 |||  ||   |||     ||
 |||  ||   |||     ||
  |   ||   |||     ||
  |---||   |||     ||
       |   |||     ||
       |---|||     ||
           ||------||
           |--------|

Não está claro onde a borda esquerda do quadrado deve ser colocada.
Daniil Tutubalin 18/07/19

@DaniilTutubalin Não sei ao certo o que você quer dizer.
Geza Kerecsenyi 18/07/19

basicamente, a instrução especifica apenas que precisamos desenhar quadrados (largura = altura) e que eles devem alternar entre cima e baixo. Não há instruções sobre o tamanho e a posição dos quadrados. No caso de teste, vejo que 2 quadrados podem ter a mesma posição da borda esquerda.
Daniil Tutubalin 18/07/19

Eu acho As you can see, this line also has a height of 2, since the height must be equal to the distance between the two terms., assim como You can choose to set the 0 point just before the first _ on the number line, or just after it.encerrar isso muito bem.
Geza Kerecsenyi 18/07/19

Eu acho que o caso de teste para n = 10 está errado de 13 a 20 em diante.
Nick Kennedy

Respostas:


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.