login
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

%I #32 May 26 2024 08:20:54

%S 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,

%T 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,

%U 29,15,7,30,31,16,8,32,33,17,9,4,34,35,2,1,18,19,36

%N 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).

%C 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).

%C 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).

%C 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.

%H Michael S. Branicky, <a href="/A372704/b372704.txt">Table of n, a(n) for n = 1..10000</a>

%H Neal Gersh Tolunsky, <a href="/A372704/a372704.png">Graph of first differences of first 20000 terms</a>.

%e a(n) ban 1 2 3 4 5 6 ...

%e 1 | | | | | |

%e 2 | | | | | |

%e 1 | x | | | |

%e 2 x | | | | |

%e 1 | x | | | |

%e 3 x x | | | |

%e 2 x | x | | |

%e 1 | x x | | |

%e 4 x x x | | |

%e 5 x x x x | |

%e 6 x x x x x |

%e 2 x | | x x x

%e 1 | x | x x x

%e 3 x x x x x x

%o (Python)

%o from collections import Counter

%o from itertools import count, islice

%o def agen(): # generator of terms

%o an, ban, occurs = 1, {1: 1}, Counter([1])

%o for n in count(2):

%o yield an

%o an = next(k for k in count(1) if k not in ban)

%o for k in list(ban):

%o if ban[k] > 1: ban[k] -= 1

%o else: del ban[k]

%o ban[an] = n - 1 - occurs[an]

%o occurs[an] += 1

%o print(list(islice(agen(), 75))) # _Michael S. Branicky_, May 10 2024

%Y Cf. A364603, A364604.

%K nonn

%O 1,2

%A _Neal Gersh Tolunsky_, May 10 2024

%E a(20) and beyond from _Michael S. Branicky_, May 10 2024