Szekeres 'Sequenz


9

Definition

  • a(1) = 1
  • a(2) = 2
  • a(n)ist die kleinste Zahl k>a(n-1), die eine 3-Term-Arithmetik-Progression in vermeidet a(1), a(2), ..., a(n-1), k.
  • Mit anderen Worten, a(n)ist die kleinste Zahl, k>a(n-1)so dass es nicht existiert x, ywo 0<x<y<nund a(y)-a(x) = k-a(y).

Beispiel ausgearbeitet

Für n=5:

Wir haben a(1), a(2), a(3), a(4) = 1, 2, 4, 5

Wenn a(5)=6, dann 2, 4, 6bilden Sie eine arithmetische Folge.

Wenn a(5)=7, dann 1, 4, 7bilden Sie eine arithmetische Folge.

Wenn a(5)=8, dann 2, 5, 8bilden Sie eine arithmetische Folge.

Wenn a(5)=9, dann 1, 5, 9bilden Sie eine arithmetische Folge.

Wenn a(5)=10kein arithmetischer Verlauf gefunden werden kann.

Deshalb a(5)=10.

Aufgabe

Gegeben n, Ausgabe a(n).

Technische Daten

  • n wird eine positive ganze Zahl sein.
  • In diesem Fall nkönnen Sie 0-indiziert anstelle von 1-indiziert verwenden 0. Bitte geben Sie dies in Ihrer Antwort an, wenn Sie 0-indiziert verwenden.

Wertung

Da wir versuchen, eine 3-Term-Arithmetik-Progression zu vermeiden und 3 eine kleine Zahl ist, sollte Ihr Code in Bezug auf die Anzahl der Bytes so klein (dh kurz) wie möglich sein.

Testfälle

Die Testfälle sind 1-indiziert. Sie können 0-indiziert verwenden, geben Sie dies jedoch in Ihrer Antwort an, wenn Sie dies tun.

1     1
2     2
3     4
4     5
5     10
6     11
7     13
8     14
9     28
10    29
11    31
12    32
13    37
14    38
15    40
16    41
17    82
18    83
19    85
20    86
10000 1679657

Verweise


2
Verbunden. (Wenn ich Ihre Herausforderung richtig verstehe.)
— Martin Ender

@ MartinEnder Du hast meine Herausforderung richtig verstanden.
— Undichte Nonne

Antworten:



6

Haskell, 37 36 32 Bytes

Verwenden der angegebenen Formel im OEIS-Eintrag unter Verwendung von 0-basierten Indizes. Danke @nimi für 4 Bytes!

a 0=1;a m=3*a(div m 2)-2+mod m 2

3

Python 3, 28 Bytes

lambda n:int(bin(n)[2:],3)+1

Eine anonyme Funktion, die Eingaben über Argumente entgegennimmt und das Ergebnis zurückgibt. Dies ist nullindiziert.

Wie es funktioniert

lambda n    Anonymous function with input zero-indexed term index n
bin(n)      Convert n to a binary string..
...[2:]     ...remove `0b` from beginning...
int(...,3)  ...convert from base-3 to decimal...
...+1       ...increment...
:...        and return

Probieren Sie es auf Ideone


2

Python 3, 113 Bytes

def f(n):
 i=1;a=[]
 for _ in range(n):
  while any(i+x in[y*2for y in a]for x in a):i+=1
  a+=[i]
 return a[n-1]

Ideone es!


2

Rubin, 28 24 Bytes

Verwenden Sie dieselbe Methode wie Dennis mit 0-basierten Indizes:

->n{n.to_s(2).to_i(3)+1}

Führen Sie die Testfälle auf repl.it aus: https://repl.it/Cif8/1



0

Java 8, 52 46 Bytes

0 indiziert.

i->Integer.valueOf(Integer.toString(i,2),3)+1;

Sie brauchen das nicht, returnaber Sie brauchen das Semikolon danach
— Leaky Nun

Diese Antwort , die besagt, dass Semikolons nicht gezählt werden; Ich könnte es so oder so ändern, aber ist das Zählen von Semikolons der Konsens?
— Justin

Eh, das haben sie mir gesagt. Ich weiß nicht, ob der Konsens so ist.
— Undichte Nonne

Okay, keine Rückkehr plus Semikolon ist sowieso kürzer als zuvor :)
— Justin
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.