import re 

def solve(x, n):
    fmt = lambda e: e if e.isdigit() else f"({e})"
    d = {}
    d[1] = {x: str(x)}
    values = set([x])
    k = 2
    while 1:
        d[k] = {}
        for i in range(1, k + 1):
            j = k - i
            if k - i in d:
                for e in d[i]:
                    for f in d[j]:
                        se, sf = d[i][e], d[j][f]                        
                        if not e + f in values:
                            d[k][e + f] = f"{se}+{sf}"
                            values.add(e + f)
                        if not e * f in values:
                            d[k][e * f] = f"{fmt(se)}*{fmt(sf)}"
                            values.add(e * f)
                        if e > f and not e - f in values:
                            d[k][e - f] = f"{se}-{fmt(sf)}"
                            values.add(e - f)
                        elif e < f and not f - e in values:
                            d[k][f - e] = f"{sf}-{fmt(se)}"
                            values.add(f - e)
                        if e % f == 0 and not e // f in values:
                            d[k][e // f] =  f"{fmt(se)}/{fmt(sf)}"
                            values.add(e // f)
                        if f % e == 0 and not f // e in values:
                            d[k][f // e] = f"{fmt(sf)}/{fmt(se)}"
                            values.add(f // e)
                        
        if n in d[k]:
            st =  d[k][n]
            print(st)
            return len(re.findall(str(x), st))  
        k += 1
      
print(solve(3, 69))
                
                

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: