A114802 3-concatenation-free sequence starting (1,2).
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 22, 30, 33, 40, 44, 50, 55, 60, 66, 70, 77, 80, 88, 90, 99, 100, 121, 131, 141, 151, 161, 171, 181, 191, 200, 212, 232, 242, 252, 262, 272, 282, 292, 300, 313, 323, 343, 353, 363, 373, 383, 393, 400, 414, 424, 434, 454
Offset: 1
Links
- Michael S. Branicky, Table of n, a(n) for n = 1..10000
- Eric Weisstein's World of Mathematics, Stöhr Sequence.
Programs
-
Mathematica
conc[w_] := Flatten[ (FromDigits /@ Flatten /@ IntegerDigits /@ (Permutations[#]) &) /@ Subsets[w, {2, 3}]]; up = 10^3; L = {1, 2, 3}; cc = conc[L]; Do[k = 1 + Max@L; While[MemberQ[cc, k], k++]; If[k > up, Break[]]; Do[cc = Union[cc, Select[ conc[{k, L[[i]], L[[j]]}], # <= up &]], {i, Length[L]}, {j, i - 1}]; AppendTo[L, k], {60}]; L (* Giovanni Resta, Jun 15 2016 *)
-
Python
from itertools import islice def incats(s, L, k): if s == "": return True if k == 0: return False return any(s.startswith(w) and incats(s[len(w):], L[:i]+L[i+1:], k-1) for i, w in enumerate(L)) def agen(): # generator of terms L, an, s = ["1", "2"], 3, "3" yield from [1, 2] while True: yield an L.append(s) while incats((s:=str(an)), L, 3): an += 1 print(list(islice(agen(), 70))) # Michael S. Branicky, Feb 01 2024
Formula
a(0) = 1, a(1) = 2, for n>2: a(n) = least k > a(n-1) such that k is not an element of {Concatenate[a(h),a(i),a(j)]} or {Concatenate[a(i),a(j)]} for any three distinct a(h), a(i), and a(j), where h, i, j < n.
Extensions
Corrected and edited by Giovanni Resta, Jun 15 2016
Comments