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.