Zeichnen Sie Recamáns Sequenz mit ASCII


11

Recamáns Sequenz ( A005132 ) ist eine mathematische Sequenz, definiert als solche:

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

Eine alternative, einfachere verbale Erklärung lautet wie folgt:

Subtrahieren, es sei denn, Sie können nicht (die Zahl ist negativ oder wurde zuvor verwendet). In diesem Fall addieren.

Die ersten Begriffe sind0,1,3,6,2,7,13,20,12,21,11

Jetzt gibt es bereits diese Herausforderung, bei der Sie aufgefordert werden, den ndritten Term der Sequenz zu generieren . Dieser ist etwas anders.

Herausforderung

nZeichnen Sie nanhand einer bestimmten Zahl die ersten Terme der Sequenz. Was meine ich mit "zeichnen"? Lassen Sie mich demonstrieren:

  1. Zeichnen Sie eine max([A(y) for y<=n])lange Zahleneinheit. Wir gehen nvorerst von 5 aus, daher ist die Zahlenreihe 6 Einheiten lang (da die größte von , , , und ist ). Machen Sie die Linie aus Unterstrichen, beginnend bei 0:A(1)=0A(2)=1A(3)=3A(4)=6A(5)=26

______

  1. Beginnen Sie mit dem Übergang zwischen dem ersten und dem zweiten Term: 0 und 1. Verwenden Sie |und, -um ein Quadrat (gleiche Länge und Höhe) nach oben zu zeichnen . In diesem Fall müssen wir das verpassen, -da der Abstand nur 1 beträgt.
||
______
  1. Jetzt zeichnen wir auf den nächsten Schritt ( bis ) am Ende der Zeile (wir wechseln jedes Mal zwischen auf und ab):A(2)=1A(3)=3
||
______
 | |
 |-|

Wie Sie sehen können, hat diese Linie auch eine Höhe von 2, da die Höhe dem Abstand zwischen den beiden Begriffen entsprechen muss.

Wenn wir fortfahren, werden wir irgendwann zu:

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

Regeln

  • Wenn es ein -und |kollidiert, hat das spätere Priorität.
  • Vor / nach dem Bild können vorangestellte / nachfolgende Leerzeichen vorhanden sein, nachfolgende / vorangestellte _s oder -s sind jedoch nicht zulässig (Ausnahme ist 0- oder 1-Indizierung).
  • Sie können wählen, ob der 0-Punkt unmittelbar vor dem ersten Punkt _in der Zahlenreihe oder unmittelbar danach festgelegt werden soll.
  • Keine alternativen Zeichen für -, |oder _kann verwendet werden.
  • Dies ist , also gewinnt die kürzeste Antwort in Bytes.

Testfall

Hier ist ein weiterer Testfall mit n=10

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

Es ist nicht klar, wo der linke Rand des Quadrats platziert werden soll.
Daniil Tutubalin

@DaniilTutubalin Ich bin nicht sicher, ob ich verstehe, was du meinst.
Geza Kerecsenyi

Grundsätzlich gibt die Anweisung nur an, dass Quadrate gezeichnet werden müssen (Breite = Höhe) und dass sie zwischen Auf und Ab wechseln sollten. Es gibt keine Anweisungen zur Größe und Position der Quadrate. Im Testfall sehe ich, dass 2 Quadrate die gleiche Position der linken Kante haben können.
Daniil Tutubalin

Ich denke 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., und You can choose to set the 0 point just before the first _ on the number line, or just after it.fasse das ziemlich gut zusammen.
Geza Kerecsenyi

Ich denke, der Testfall für n = 10 ist ab 13-> 20 falsch.
Nick Kennedy

Antworten:


4

Gelee , 70 65 Bytes

µ_ż+ɗLṪ>Ƈ-ḟ⁸Ḣṭµ¡µL;ⱮṀ’ṭr,;ɗƝJW,RN¹ƭƲ€$+Lp""ƲZẎ€Ʋ‘ŒṬ×"J$»/ị“-|_ ”Y

Probieren Sie es online aus!

Ein vollständiges Programm, das eine einzelne Ganzzahl über STDIN nimmt und die ASCII-Grafik basierend auf der Nullindizierung ausgibt.n

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.