|
|
A358497
|
|
Replace each new digit in n with index 1, 2, ..., 9, 0 in order in which that digit appears in n, from left to right.
|
|
2
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
0,11
|
|
LINKS
|
|
|
EXAMPLE
|
n = 10 has 2 different digits; replace first encountered digit 1 -> 1, replace second digit 0 -> 2, therefore a(10) = 12.
n = 141 has 3 digits, but only 2 different ones; replace first encountered digit 1 -> 1, replace second encountered digit 4 -> 2, therefore a(141) = 121.
|
|
PROG
|
(Python)
d, s, k = dict(), str(n), 1
for i in range(len(s)):
if d.get(s[i], 0) == 0:
d[s[i]] = str(k)
k = (k + 1)%10
s_t = list(s)
for i in range(len(s)):s_t[i] = d[s[i]]
return int(''.join(s_t))
print([A358497(i) for i in range(100)])
(Python)
def A358497(n): return int((s:=str(n)).translate(dict((ord(i), s.index(i)+49) for i in '0123456789' if i in s))) # Chai Wah Wu, Nov 23 2022
(PARI) a(n) = {if(n == 0, return(1)); my(d = digits(n), m = Map(), t = 0); for(i = 1, #d, if(mapisdefined(m, d[i]), d[i] = mapget(m, d[i]) , t++; if(t == 10, t = 0); mapput(m, d[i], t); d[i] = t ) ); fromdigits(d) } \\ David A. Corneth, Nov 23 2022
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn,base,easy
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|