cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A306384 Start with n and repeatedly double it and apply the "delete any run of identical digits" operation described in A321801; a(n) is the number of steps needed to reach one of 0, 1, or 5, or -1 if none of these three numbers is ever reached.

Original entry on oeis.org

0, 0, 19, 12, 18, 0, 11, 23, 17, 4, 19, 1, 10, 29, 22, 32, 16, 5, 3, 47, 18, 15, 1, 20, 9, 2, 28, 26, 21, 13, 31, 24, 15, 1, 4, 23, 2, 18, 46, 21, 17, 51, 14, 15, 1, 24, 19, 2, 8, 10, 1, 33, 27, 24, 25, 1, 20, 19, 12, 18, 30, 1, 23, 7, 14, 29, 6, 20, 3
Offset: 0

Views

Author

Chai Wah Wu, Feb 12 2019

Keywords

Comments

Similar to A323832, but is different in that at each step, the "delete any run of identical digits" operation (A321801) is apply only once here, whereas in A323832, at each step after doubling the number, the operation A321801 is applied repeatedly until the number does not change any longer. The first term which differs from A323832 is a(66).
Conjecture: every number will eventually reach one of 0, 1, or 5.
Conjecture is true for n < 10^10.
2404877 takes 123 steps to reach 5 and is the largest value for a(n) for n < 10^7.
79620527 takes 131 steps to reach 5 and is the largest value for a(n) for n < 10^8.
769237841 takes 138 steps to reach 5 and is the largest value for a(n) for n < 10^9.
The numbers 4807736476 and 4807736509 both take 142 steps to reach 5 and this is the largest value for a(n) for n < 10^10.

Examples

			a(66) = 6: 66->132->264->528->1056->22->0. Contrast this with A323832(66) = 5: 66->132->264->528->1056->0.
		

Crossrefs

Programs

  • Python
    from re import split
    def A306384(n):
        mset, m, c = set(), n, 0
        while True:
            if m == 1 or m == 0 or m == 5:
                return c
            m = int('0'+''.join(d for d in split('(0+)|(1+)|(2+)|(3+)|(4+)|(5+)|(6+)|(7+)|(8+)|(9+)', str(2*m)) if d != '' and d != None and len(d) == 1))
            if m in mset:
                return -1
            mset.add(m)
            c += 1