[go: up one dir, main page]

login
A357891
a(1) = 1; a(n+1) is the smallest integer > 0 that cannot be obtained from the integers {a(1), ..., a(n)} using each number exactly once and the operators +, -, *, /.
1
1, 2, 4, 11, 34, 152, 1079, 6610, 93221
OFFSET
1,2
PROG
(Python)
from fractions import Fraction
def a(n, v):
R = dict() # index of each reachable subset is [card(s)-1][s]
for i in range(n): R[i] = dict()
for i in range(n): R[0][(v[i], )] = {v[i]}
#reach = set(v)
for j in range(1, n):
for i in range((j+1)//2):
for s1 in R[i]:
for s2 in R[j-1-i]:
if set(s1) & set(s2) == set():
s12 = tuple(sorted(set(s1) | set(s2)))
if s12 not in R[len(s12)-1]:
R[len(s12)-1][s12] = set()
for a in R[i][s1]:
for b in R[j-1-i][s2]:
allowed = [a+b, a*b, a-b, b-a]
if a!=0: allowed.append(Fraction(b, a))
if b!=0: allowed.append(Fraction(a, b))
R[len(s12)-1][s12].update(allowed)
k = 1
while k in R[n-1][tuple(v)]: k += 1
return k
alst = [1]
[alst.append(a(n, alst)) for n in range(1, 6)]
print(alst) # Michael S. Branicky, Nov 01 2022
CROSSREFS
KEYWORD
nonn,hard,more
AUTHOR
EXTENSIONS
a(9) from Michael S. Branicky, Nov 10 2022
STATUS
approved