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.

A185352 The "smallest countdown" numbers are the smallest positive integer that cannot be made using the numbers n through 1, in order, using the operations +, -, *, /, and parentheses.

Original entry on oeis.org

2, 4, 8, 17, 39, 92, 275, 922, 2894, 10843, 35944
Offset: 1

Views

Author

Peter Boothe and Abraham Asfaw, Feb 08 2012

Keywords

Comments

Inspired by a now-lost blog post in which someone discussed a "new year's countdown" equation for 2012, e.g., 10 * (9 + ((8 * (((7 + (6 / (5 * 4))) * 3) + 2)) + 1)) = 2012. This sequence has been "verified" by two independently created programs.

Examples

			for n = 3, a(3) = 8, because 3*2+1=7, and 3*(2+1)=9, but there is no equation with 3,2,and 1 in order that equals 8. Note that if we allow the order to change, we can make 8, because 2*(3+1)=8, but reordering is not allowed.
		

Crossrefs

Related to A060315, which is the smallest number that cannot be made with the numbers 1 to n, in any order.

Programs

  • Python
    from fractions import Fraction
    def genAllTrees(l):
        if len(l) == 0:
            return
        elif len(l) == 1:
            yield l[0], str(l[0])
        else:
            for middle in range(len(l)):
                for lval, leqn in genAllTrees(l[:middle]):
                    for rval, reqn in genAllTrees(l[middle:]):
                        yield lval+rval, ("(" + leqn + " + " + reqn + ")")
                        yield lval-rval, ("(" + leqn + " - " + reqn + ")")
                        yield lval*rval, ("(" + leqn + " * " + reqn + ")")
                        if rval != Fraction(0):
                            yield lval/rval, ("(" + leqn + " / " + reqn + ")")
    def findSmallestIntNotPresent(n):
        vals = {}
        for val, eqn in genAllTrees([Fraction(i) for i in range(n, 0, -1)]):
            if val.denominator == 1:
                val = val.numerator
                if val not in vals:
                    vals[val] = eqn
        i = 1
        while i in vals:
            i += 1
        return i
    for i in range(1, 11):
        print(i, findSmallestIntNotPresent(i))

Extensions

a(10)-a(11) from Hiroaki Yamanouchi, Oct 04 2014