login
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.
0

%I #38 Jun 08 2024 15:44:07

%S 2,4,8,17,39,92,275,922,2894,10843,35944

%N 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.

%C 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.

%e 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.

%o (Python)

%o from fractions import Fraction

%o def genAllTrees(l):

%o if len(l) == 0:

%o return

%o elif len(l) == 1:

%o yield l[0], str(l[0])

%o else:

%o for middle in range(len(l)):

%o for lval, leqn in genAllTrees(l[:middle]):

%o for rval, reqn in genAllTrees(l[middle:]):

%o yield lval+rval, ("(" + leqn + " + " + reqn + ")")

%o yield lval-rval, ("(" + leqn + " - " + reqn + ")")

%o yield lval*rval, ("(" + leqn + " * " + reqn + ")")

%o if rval != Fraction(0):

%o yield lval/rval, ("(" + leqn + " / " + reqn + ")")

%o def findSmallestIntNotPresent(n):

%o vals = {}

%o for val, eqn in genAllTrees([Fraction(i) for i in range(n, 0, -1)]):

%o if val.denominator == 1:

%o val = val.numerator

%o if val not in vals:

%o vals[val] = eqn

%o i = 1

%o while i in vals:

%o i += 1

%o return i

%o for i in range(1, 11):

%o print(i, findSmallestIntNotPresent(i))

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

%K nonn,hard,more

%O 1,1

%A _Peter Boothe_ and Abraham Asfaw, Feb 08 2012

%E a(10)-a(11) from _Hiroaki Yamanouchi_, Oct 04 2014