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.

A335972 The Locomotive Pushing the Wagons to the Right sequence (see Comments lines for definition).

Original entry on oeis.org

2, 13, 14, 15, 16, 17, 18, 91, 201, 202, 31, 203, 24, 25, 26, 27, 28, 92, 41, 204, 35, 36, 37, 38, 93, 42, 51, 205, 46, 47, 48, 94, 52, 61, 206, 57, 58, 95, 62, 71, 207, 68, 96, 72, 81, 208, 97, 82, 131, 301, 302, 132, 133, 141, 303, 142, 134, 53, 143, 144, 63, 145, 64, 73, 146, 74
Offset: 1

Views

Author

Eric Angelini and Carole Dubois, Jul 03 2020

Keywords

Comments

a(1) is the (pushing) locomotive; a(2), a(3), a(4),... a(n),... are the wagons. To hook a wagon to its successor (on the right) you must be able to insert the rightmost digit of a(n) between the first two digits of a(n+1). In mathematical terms, the value of the rightmost digit of a(n) must be between (not equal to) the first and the second digit of a(n+1). This is the lexicographically earliest sequence of distinct positive terms with this property.
a(n) cannot end in 0 or 9. - Michael S. Branicky, Dec 14 2020

Examples

			The sequence starts with 2, 13, 14, 15, 16, 17, 18, 91, 201, 202,...
a(1) = 2 as there is no earliest possible (pushing to the right) locomotive;
a(2) = 13 starts with 1 and 3: now 1 < 2 < 3 [2 being the rightmost digit of a(1)];
a(3) = 14 starts with 1 and 4: now 1 < 3 < 4 [3 being the rightmost digit of a(2)];
a(4) = 15 starts with 1 and 5: now 1 < 4 < 5 [4 being the rightmost digit of a(3)];
(...)
a(8) = 91 starts with 9 and 1: now 9 > 8 > 1 [8 being the rightmost digit of a(7)];
a(9) = 201 starts with 2 and 0: now 2 > 1 > 0 [1 being the rightmost digit of a(8)];
a(10) = 202 starts with 2 and 0: now 2 > 1 > 0 [1 being the rightmost digit of a(9)]; etc.
		

Crossrefs

Cf. A335971 (locomotive pulling to the left) and A335973 (two locomotives).

Programs

  • Python
    def dead_end(k): return k%10 in {0, 9}
    def aupto(n, seed=2):
      train, used = [seed], {seed}
      for n in range(2, n+1):
        caboose = train[-1]
        hook = caboose % 10
        low2, high2 = 10 + (hook + 1), 90 + (hook - 1)
        an, pow10b = low2, 1
        while an in used or dead_end(an): an += 1
        first2 = an//pow10b
        a2, b2 = divmod(first2, 10)
        while True:
          if a2 < hook < b2 or a2 > hook > b2:
            train.append(an)
            used.add(an)
            break
          if first2 > high2:
            pow10b *= 10
            an = low2*pow10b
          else:
            an += pow10b
            an -= an%pow10b
          while an in used or dead_end(an): an += 1
          first2 = an//pow10b
          a2, b2 = divmod(first2, 10)
      return train    # use train[n-1] for a(n)
    print(aupto(66))  # Michael S. Branicky, Dec 14 2020