A366691 Lexicographically earliest sequence such that each set of terms enclosed by two equal values, excluding the endpoints, contains a distinct number of elements.
1, 1, 2, 1, 3, 4, 2, 5, 6, 3, 7, 4, 8, 2, 9, 5, 10, 11, 6, 12, 3, 13, 14, 7, 15, 4, 16, 17, 8, 18, 2, 19, 20, 21, 9, 22, 5, 23, 24, 10, 25, 11, 26, 6, 27, 28, 12, 29, 30, 13, 31, 14, 32, 7, 33, 15, 34, 35, 36, 16, 37, 17, 38, 8, 39, 18, 40, 41, 19, 42, 43, 20
Offset: 1
Keywords
Examples
a(1)=1; no pair of terms exists yet. a(2)=1 creates the pair [1, 1], which encloses 0 elements. This means that no consecutive equal values can occur again, since this would create another set of 0 elements. a(3)=2 because if a(3)=1, this would create a second pair enclosing 0 elements. a(4)=1 creates two new sets: [1, 2, 1], enclosing 1 element {2}, and [1, 1, 2, 1], enclosing 2 elements {1, 2}. a(5) cannot be 1 as this would again create a pair enclosing 0 elements [1,1]. 2 would create the pair [2, 1, 2] which encloses 1 element {1}, which has been impossible since a(4). So a(5)=3, which has not occurred before.
Links
- Neal Gersh Tolunsky, Table of n, a(n) for n = 1..10000
- Rémy Sigrist, PARI program
Programs
-
PARI
See Links section.
-
Python
from itertools import islice def agen(): # generator of terms e, a = set(), [] while True: an, allnew = 0, False while not allnew: allnew, an, ndset = True, an+1, set() for i in range(len(a)): if an == a[i]: nd = len(set(a[i+1:])) if nd in e or nd in ndset: allnew = False; break ndset.add(nd) yield an; a.append(an); e |= ndset print(list(islice(agen(), 72))) # Michael S. Branicky, Oct 25 2023
Extensions
More terms from Rémy Sigrist, Oct 25 2023
Comments