

A167451


Smallest sequence which lists the position of digits "9" in the sequence.


1



2, 9, 10, 11, 12, 99, 990, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1020, 1021, 1022, 1900, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015, 2016
(list;
graph;
refs;
listen;
history;
text;
internal format)



OFFSET

1,1


COMMENTS

The lexicographically earliest sequence such that a(1),a(2),a(3),... is the (increasing) list of the positions of digits "9" in the string obtained by concatenating all these terms, written in base 10.


LINKS

Table of n, a(n) for n=1..45.


EXAMPLE

We cannot have a(1)=1 (since then there's no "9" in the first place), but a(1)=2 is possible.
This implies that a(2) must start with a digit "9", so a(2)=9 is the smallest possible choice.
This allows us to go on with a(3)=10, a(4)=11, a(5)=12, but then must be follow 4 digits "9" (the 9th through 12th digit of the sequence), so a(6)=99 and a(7)=990 are the smallest possible choices.
Then the reasoning continues in analogy with A167450A167457.


PROG

(PARI) concat([ [2, 9, 10, 11, 12, 99, 990], vector((99111)\4, i, 1000(i<=9)+i+(i>=19)), [1900], select(x>x%109 & x\10%109, vector((99099)\4, i, 20001+i)) ])
/* The following code checks a sequence for consistency (i.e., the given digit occurs exactly at positions given by the terms), but it does not check the monotonicity neither the minimality.
In case of a contradiction, it returns [n, pos, d] where n is the index of the term, pos is the position in the concatenation, and d is the digit for which the contradiction occurred.
If d is different from the given digit, the term a(n) said that there should be that digit at position pos, but we found d instead.
If d equals the given digit, we found d at position pos, but the term a(n) said that the next d should occur elsewhere. */
check_self(a, d=9)={ my(t=Vecsmall(concat(concat([""], a))), c=0); d+=48;
for( i=1, #a, a[i]>#t & break; t[a[i]]==d  return([i, a[i], t[a[i]]48]));
for( i=1, #t, t[i]==d & (a[c++ ]==i  return([c, i, d48]))) /* no contradiction => empty result */}


CROSSREFS

Cf. A098645, A167519, A167520, A167450  A167457.
Sequence in context: A065644 A043065 A077214 * A135782 A281899 A037457
Adjacent sequences: A167448 A167449 A167450 * A167452 A167453 A167454


KEYWORD

base,nonn


AUTHOR

M. F. Hasler, Nov 19 2009


STATUS

approved



