login
A372704
a(1)=1; a(2)=2; for n>1, this is the lexicographically earliest sequence such that, following each occurrence of a(n), a(n) is banned for the next k terms, where k is the number of terms prior to a(n) that are not equal to a(n).
1
1, 2, 1, 2, 1, 3, 2, 1, 4, 5, 6, 2, 1, 3, 7, 8, 9, 4, 10, 5, 2, 1, 6, 11, 12, 13, 3, 14, 15, 7, 16, 8, 17, 9, 4, 18, 19, 2, 1, 5, 10, 20, 21, 22, 6, 23, 24, 11, 25, 12, 26, 3, 13, 27, 28, 14, 29, 15, 7, 30, 31, 16, 8, 32, 33, 17, 9, 4, 34, 35, 2, 1, 18, 19, 36
OFFSET
1,2
COMMENTS
1 occurs immediately after its ban ends so that the i-th occurrence of a(n) = 1, for i >= 2, is at n = 2^(i-2) + i = A052968(i-1).
2 occurs immediately after its ban ends, since it turns out that's immediately before the ban on 1 ends, so the i-th occurrence of a(n) = 2 is at n = 2^(i-1) + i = A005126(i-1).
If the definition is changed so that k is the number of terms in the sequence thus far equal to a(n) (rather than unequal), this becomes A002260 without the initial 1.
EXAMPLE
a(n) ban 1 2 3 4 5 6 ...
1 | | | | | |
2 | | | | | |
1 | x | | | |
2 x | | | | |
1 | x | | | |
3 x x | | | |
2 x | x | | |
1 | x x | | |
4 x x x | | |
5 x x x x | |
6 x x x x x |
2 x | | x x x
1 | x | x x x
3 x x x x x x
PROG
(Python)
from collections import Counter
from itertools import count, islice
def agen(): # generator of terms
an, ban, occurs = 1, {1: 1}, Counter([1])
for n in count(2):
yield an
an = next(k for k in count(1) if k not in ban)
for k in list(ban):
if ban[k] > 1: ban[k] -= 1
else: del ban[k]
ban[an] = n - 1 - occurs[an]
occurs[an] += 1
print(list(islice(agen(), 75))) # Michael S. Branicky, May 10 2024
CROSSREFS
Sequence in context: A205696 A029635 A375577 * A203301 A309853 A107456
KEYWORD
nonn
AUTHOR
Neal Gersh Tolunsky, May 10 2024
EXTENSIONS
a(20) and beyond from Michael S. Branicky, May 10 2024
STATUS
approved