login
a(n) is the least positive integer not occurring earlier that shares a digit with a(n-1); a(1)=1.
16

%I #32 Oct 03 2024 15:13:26

%S 1,10,11,12,2,20,21,13,3,23,22,24,4,14,15,5,25,26,6,16,17,7,27,28,8,

%T 18,19,9,29,32,30,31,33,34,35,36,37,38,39,43,40,41,42,44,45,46,47,48,

%U 49,54,50,51,52,53,55,56,57,58,59,65,60,61,62,63,64,66,67,68,69,76,70,71,72,73

%N a(n) is the least positive integer not occurring earlier that shares a digit with a(n-1); a(1)=1.

%C A permutation of the positive integers.

%H Reinhard Zumkeller, <a href="/A184992/b184992.txt">Table of n, a(n) for n = 1..10000</a>

%H <a href="/index/Per#IntegerPermutation">Index entries for sequences that are permutations of the natural numbers</a>

%t FromDigits /@ Nest[Function[a, Append[a, Block[{k = 2, d}, While[Nand[FreeQ[a, #], IntersectingQ[a[[-1]], #]] &@ Set[d, IntegerDigits@ k], k++]; d]]], {{1}}, 73] (* _Michael De Vlieger_, Mar 17 2018 *)

%o (PARI) A184992(n,show=0)={my(a=1,u=2^1);for(k=2,n,show && print1(a",");a=Set(Vec(Str(a))); for(j=2,9e9,bittest(u,j) && next;setintersect(Set(Vec(Str(j))),a) || next; u+=2^a=j; break));a} \\ _M. F. Hasler_, Dec 22 2011

%o (Haskell)

%o import Data.List (delete, intersect); import Data.Function (on)

%o a184992 n = a184992_list !! (n-1)

%o a184992_list = 1 : f 1 [2..] where

%o f u vs = v : f v (delete v vs)

%o where v : _ = filter (not . null . (intersect `on` show) u) vs

%o -- _Reinhard Zumkeller_, Jul 01 2013

%o (Python)

%o from itertools import count, islice

%o def agen(): # generator of terms

%o an, aset, mink = 1, {1}, 1

%o while True:

%o yield an

%o digset = set(str(an))

%o an = next(k for k in count(mink) if k not in aset and set(str(k))&digset)

%o aset.add(an)

%o while mink in aset: mink += 1

%o print(list(islice(agen(), 74))) # _Michael S. Branicky_, Oct 03 2024

%Y Cf. A162501, A076654, A130571.

%Y a(n) = A107353(n) for n>=3. - _Alois P. Heinz_, Dec 22 2011

%Y Cf. A227118 (inverse); A067581.

%K nonn,base

%O 1,2

%A _Eric Angelini_, Dec 22 2011