Dessinez la séquence de Recamán avec ASCII


12

La séquence de Recamán ( A005132 ) est une séquence mathématique, définie comme telle:

UNE(n)={0si n=0UNE(n-1)-nsi UNE(n-1)-n est positif et n'est pas déjà dans la séquenceUNE(n-1)+nautrement

Une explication verbale alternative et plus simple est la suivante:

Soustrayez sauf si vous ne pouvez pas (le nombre est négatif ou a déjà été utilisé), auquel cas ajoutez.

Les premiers termes sont 0,1,3,6,2,7,13,20,12,21,11

Maintenant, il y a déjà ce défi qui vous demande de générer le ne terme de la séquence. Celui-ci est légèrement différent.

Défi

Étant donné un nombre n, tracez les premiers ntermes de la séquence. Qu'est-ce que j'entends par «dessiner»? Permettez-moi de démontrer:

  1. Tracez un nombre de lignes de max([A(y) for y<=n])long. Nous supposerons n5, pour l'instant, donc la droite numérique est longue de 6 unités (puisque le plus grand de UNE(1)=0 , UNE(2)=1 , UNE(3)=3 , UNE(4)=6 et UNE(5)=2 est 6 ). Faites la ligne à partir des traits de soulignement, en commençant à 0:

______

  1. Commencez par la transition entre le premier et le deuxième termes: c'est-à-dire 0 et 1. Utilisez |et -pour dessiner un carré (longueur et hauteur égales), en remontant. Dans ce cas, nous devrons manquer le -car la distance n'est que de 1.
||
______
  1. Maintenant, nous allons dessiner sur l'étape suivante ( UNE(2)=1 à UNE(3)=3 ) en bas de la ligne (nous alternons à chaque fois de haut en bas):
||
______
 | |
 |-|

Comme vous pouvez le voir, cette ligne a également une hauteur de 2, car la hauteur doit être égale à la distance entre les deux termes.

Si nous continuons, nous finirons par arriver à:

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

Règles

  • S'il y a un -et |entrer en collision, l'une est prioritaire plus tard.
  • Il peut y avoir des espaces avant / après l'image, mais les _s ou -s avant / arrière ne sont pas autorisés (l'exception est 0 ou 1 indexation)
  • Vous pouvez choisir de définir le point 0 juste avant le premier _sur la droite numérique ou juste après.
  • Aucun caractère de remplacement pour -, |ou _peuvent être utilisés.
  • C'est le , donc la réponse la plus courte en octets l'emporte.

Cas de test

Voici un autre cas de test, avec n=10

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

Il n'est pas clair où le bord gauche du carré doit être placé.
Daniil Tutubalin

@DaniilTutubalin Je ne suis pas sûr de comprendre ce que tu veux dire.
Geza Kerecsenyi

fondamentalement, l'instruction spécifie seulement que nous devons dessiner des carrés (largeur = hauteur) et qu'ils doivent alterner entre haut et bas. Il n'y a pas d'instructions sur la taille et la position des carrés. Dans le cas de test, je vois que 2 carrés peuvent avoir la même position de bord gauche.
Daniil Tutubalin

Je pense 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., ainsi que de You can choose to set the 0 point just before the first _ on the number line, or just after it.conclure assez bien.
Geza Kerecsenyi

Je pense que le cas de test pour n = 10 est faux à partir de 13-> 20.
Nick Kennedy

Réponses:


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.