Machen Sie Ihr Programm sequentiell! [geschlossen]

8

Ihre Aufgabe ist einfach, wenn Sie sie annehmen möchten.

Zielsetzung

Sie müssen ein Programm erstellen, das beim Ausführen einige (beliebig viele) Begriffe in einer von Ihnen gewählten Reihenfolge druckt. Die Sequenz muss eine gültige OEIS- Sequenz sein. Der Clou ist, dass Sie, wenn Sie die Zeichen aus Ihrem Code, aus denen Ihre Sequenz besteht, aneinander reihen und in derselben Sprache ausführen , die Formel für das n- te Ihrer Sequenz für Ihre Sequenz erhalten sollten.

Beispiel

Angenommen, ich habe dieses Programm erstellt:

abcdefghij

und wählte die Reihenfolge der Quadrate: http://oeis.org/A000290

und ich habe es gewählt, um die ersten 5 Terme der Sequenz zu drucken. Die Ausgabe sollte sein:

1, 4, 9, 16, 25

Hinweis: Die Ausgabe ist flexibel. Sie können auswählen, durch welches Trennzeichen die Begriffe getrennt werden sollen. Das Trennzeichen sollte jedoch erkennbar sein, damit die einzelnen Begriffe der Sequenz unterschieden werden können.

Nun ist das Zeichen bei Index 1 a. Das Zeichen bei Index 4 ist d. Das Zeichen bei Index 9 ist i. Mein neues Programm wäre also:

adi

und es müsste die Formel für den n- ten Term für meine Sequenz drucken , die ist:

n^2

Einfach!

Andere Dinge

  • Sie müssen mindestens 5 Begriffe drucken.
  • Sie können zwischen 0- und 1-Index wählen.
  • Wiederholte Zahlen bedeuten wiederholte Zeichen.
  • Wenn Ihre Sequenz nicht in der richtigen Reihenfolge ist (z. B. geht sie rückwärts), folgt Ihr Code immer noch (z. B. wird Ihr Code rückwärts geschrieben).
  • Sie müssen die Zahlen in Grenzen Ihrer Antwort verwenden und nur verwenden, auch wenn sie bereits außerhalb der Grenzen liegt. Sie können keine Zahlen aus derselben Reihenfolge verwenden, die Sie nicht gedruckt haben.
  • Wenn Ihre Sequenz offiziell keine Formel hat, können Sie die ersten 3 Buchstaben des auf der OEIS- Website angegebenen Namens verwenden (z. B. würde die Fibonacci-Sequenz gedruckt fibund die Lucas-Lehmer-Sequenz würde gedruckt luc).

Denken Sie daran, dies ist , also gewinnt die kürzeste Antwort in Bytes!

FinW
quelle
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Martin Ender
Muss der Variablenname sein n?
ETHproductions
Ich stelle dies auf Eis, bis ein paar weitere Details zur Herausforderung geklärt sind (siehe den oben verlinkten Chatroom).
Martin Ender
5
An Personen, die bereits wieder Stimmen abgeben. Wenn bei einer Antwort davon ausgegangen wird, dass Sie so viele Werte wie möglich aus der Sequenz übernehmen sollten, und bei einer anderen Antwort davon ausgegangen wird, dass Sie nur so viele Werte verwenden, wie Sie im vollständigen Programm gedruckt haben, ist die Herausforderung unklar und muss vor dem Hinzufügen von gerade verbessert werden Weitere Antworten . Außerdem ist dies nicht der einzige Randfall, der noch nicht behandelt wurde (wie sollten nicht ansteigende Sequenzen oder Sequenzen mit wiederholten Werten behandelt werden?).
Martin Ender
Ich liebe diese Herausforderung absolut, aber es sollte ein Wettbewerb sein, um zu sehen, wer die komplexeste Formel verwenden kann.
Magic Octopus Urn

Antworten:

3

05AB1E , 10 Bytes, A008585

Dieser Code gibt die ersten 11 Elemente der Sequenz 3n aus .

3TÝ' §n*»J

Probieren Sie es online aus!

Erläuterung

3            # push 3
             # STACK: 3
 TÝ          # push range [0 ... 10]
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10]
   ' §       # push a space char converted to string
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10], " "
      n      # square the string
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10]
       *     # multiply the top 2 elements of the stack
             # STACK: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
        »    # join by newlines
         J   # join to string

Wenn Sie jedes n-te Element (0-indiziert) nehmen, erhalten Sie:

3'nJ

welches 3n ausgibt

Emigna
quelle
5

Python 2, 35 Bytes

Ich habe mich für die offensichtliche Sequenz A000027 entschieden , die im Wesentlichen die Formel hat n;) Wenn Sie den folgenden Code ausführen:

#print'n'
n=1
exec'print n;n+=1;'*8

Sie erhalten die Ausgabe:

1
2
3
4
5
6
7
8

Und wenn Sie die 8 Zeichen aus meinem Quellcode (0-indiziert) nehmen, erhalten Sie Folgendes:

print'n'

Was einfach druckt n.


Wenn Sie auf eine aufregendere Antwort gehofft haben, finden Sie hier eine Python 2-Lösung für n^2: A000290 :

#p  r    i      n        t          '            n              ^                2                  '
n=1
exec'print n*n;n+=1;'*10
Kade
quelle
4

05AB1E, 7 6 Bytes, A000027

5L'n s

Probieren Sie es online aus!

Erläuterung:

5L      # Push [1, 2, 3, 4, 5]
  'n    # Push "n"
        # Do nothing
     s  # Swap (only in original program)
        # Implicit print
Oliver Ni
quelle
4L"n"sist auch eine Option, oder bin ich hier weit weg von der Basis?
Magic Octopus Urn
Ja, so ist es. Aber es muss 5nicht sein4
Oliver Ni
"und ich habe es gewählt, um die ersten 5 Begriffe der Sequenz zu drucken" - OP
Magic Octopus Urn
1
@ carusocomputing Schauen Sie auf der Unterseite
Oliver Ni
3

Oktave, 64 Bytes A000290

Ich habe mich für den n^2einen entschieden:

@()(1:5 ).^2 % '        n          ^            2              '

Nehmen Sie die Begriffe 1, 4, 9, 16, 25, 36, 49 und 64, um Folgendes zu erhalten:

@()'n^2'

welche druckt:

n^2
Stewie Griffin
quelle
2

05AB1E , 30 28 Bytes, A000290

Dies ist die Folge von Quadraten

"  n    ^      2        "5Ln

Gibt die ersten 5 Terme der Sequenz mit der Formel aus n^2:

[1, 4, 9, 16, 25]

Probieren Sie es online aus!

Dies ist 1-indiziert. Ich nehme also die Zeichen aus dem Code, aus dem die Sequenz besteht

"n^2"

Welche Ausgänge

n^2

Probieren Sie es online aus!

Erläuterung

"  n    ^      2        "              # push this string
                         5             # push 5
                          L            # push range [1, ..., 5]
                            n          # square it
                                       # implicit output
user41805
quelle
1

Wunder , 16 Bytes A005843

 0";2"tk 5gen *2

Dies war einst DASH, wurde aber jetzt in Wonder umbenannt.

Gibt die ersten 6 geraden Zahlen aus. Beachten Sie das führende Leerzeichen. Wenn Sie die Indizes 0, 2, 4, 6 und 8 beibehalten, erhalten Sie:

 "2t 

Welche druckt 2t.

Erläuterung

0";2"

Dies ist nur eine Zeichenfolge und eine Zahl.

tk 5gen *2

Dies erzeugt eine unendliche Liste von geraden Zahlen ab 0 und nimmt dann die ersten 5 Elemente aus dieser Liste.

Mama Fun Roll
quelle
1

MATL , 8 Bytes, A000027

Vielen Dank an Oliver für eine Korrektur bei der Interpretation der Herausforderung

'n'  5:&

Der Code wird gedruckt 1 2 3 4 5. Behalten Sie nur die ersten Zeichen bei, die gedruckt werden n.

Probieren Sie es online aus!

Luis Mendo
quelle
1

Oktave, 49 Bytes, A109234

@()  1      :      5     %'floor (n*sin h(1)) ';]

Die Reihenfolge floor(n*sinh(1))besteht aus allen Zahlen ab 1und zu, außer dass 6, 13, 20, 26, 33, 40, 46, _3, _0, _6 ...die für die Erstellung verwendeten Zeichen an 1 2 3 4 5diesen Positionen platziert werden müssen. Die verbleibenden Positionen werden für die Zeichenfolge verwendet, die die Funktion erklärt.

Stewie Griffin
quelle
0

Heuhaufen , 21 10 9 Bytes

Haystack hat in den letzten Tagen viele neue Funktionen hinzugefügt :) Natürlich werde ich A000027 verwenden . Hier ist das erste Programm:

<"n"o|OR4

Dies wird ausgedruckt:

[1, 2, 3, 4, 5]

Und wenn Sie die Zeichen 1-5, 0-indiziert nehmen, erhalten Sie:

"n"o|

Welche druckt n.


Wenn Sie mehr Spaß haben möchten, finden Sie hier eine Lösung für A000290 :

^"_(n\D2l^
3keU02/:[W
D5m"5s\ih_
Cr:OF]uAIe
hWd>g|AkuH
/6R>ud*O,\
)G:q$n|4y{
:|v\X:?dP/

Wenn Sie nur die erforderlichen Zeichen sehen möchten, klicken Sie hier .

Dadurch werden die ersten 7 Quadrate gedruckt, und die entsprechenden Zeichen im obigen Programm, 0-indiziert, sind:

"n^2"O|

Welche druckt n^2.

Kade
quelle