These formulas looked intriguing, so I decided to try to compute some of them myself with Maple, using the approximation
$$\pi \approx \frac{355}{113} \approx 3.1415929.$$
The algorithm uses dynamic programming where the nodes are the subsets of $\{1,2,3,\ldots,8,9\}$ and the corresponding value is a table of all integer values less than some maximum that can be expressed by a legal formula as specified in the problem definition using the digits in the subset. The recursive step splits the argument into two sets and combines the values obtained for them using the five operators that are given. In the present case I used $360$ as the maximum value because $355<360.$ Finally in order to express a fraction we iterate over all 2-partitions of the nine digits, looking to find a pair where the first subset can express the numerator and the second one the denominator. The approximations are not limited to $\pi$, one may try for any fraction with small numerator and denominator.
Here are some of the formulas that I obtained:
$$\frac{1 \times \left(2 \times 6 + {7}^{3}\right)}{5 + 9 \times \left(4 + 8\right)}$$
$$\frac{1 + 5 + 6 + {7}^{3}}{{9}^{2} + 4 \times 8}$$
$$\frac{5 \times \left(8 + 9 \times \left(1 + 6\right)\right)}{{7}^{2} + {4}^{3}}$$
$$\frac{5 \times \left(\left(8 \times 9\right) - 1\right)}{7 - \left(\frac{4 - \left({6}^{3}\right)}{2}\right)}$$
$$\frac{4 + 8 + {7}^{3}}{1 - \left(9 - \left({\left(5 + 6\right)}^{2}\right)\right)}$$
$$\frac{\left(2 + 3\right) \times \left(\left(8 \times 9\right) - 1\right)}{\left(4 \times \left(5 \times 6\right)\right) - 7}$$
$$\frac{5 \times \left(\left(6 \times \left(3 + 9\right)\right) - 1\right)}{\left({\left(4 + 7\right)}^{2}\right) - 8}$$
$$\frac{\left(6 - 1\right) \times \left(8 + 7 \times 9\right)}{{2}^{5} + {3}^{4}}$$
Here are some examples obtained by enabling concatenation:
$$ \frac{5 \times 71}{2 - \left(3 - \left(6 + 9 \times \left(4 + 8\right)\right)\right)}$$
$$ \frac{71 \times \left(2 + 3\right)}{4 + 5 + 6 + 98}$$
$$ \frac{5 \times \left(73 - 2\right)}{6 - \left(1 - \left(9 \times \left(4 + 8\right)\right)\right)}$$
$$ \frac{5 \times \left(9 + 62\right)}{1 + 8 \times \left(3 + 4 + 7\right)}$$
$$ \frac{5 \times \left(7 + {8}^{2}\right)}{1 + 3 \times 6 + 94}$$
$$ \frac{\left(7 \times 52\right) - 9}{1 - \left(8 \times \left(4 - \left(3 \times 6\right)\right)\right)}$$
$$ \frac{5 \times \left(7 + 64\right)}{1 - \left(9 - \left({\left(3 + 8\right)}^{2}\right)\right)}$$
$$ \frac{\left(51 \times \left(3 + 4\right)\right) - 2}{8 + 7 \times \left(6 + 9\right)}$$
$$ \frac{31 + 9 \times \left({6}^{2}\right)}{4 \times 7 + 85}$$
$$ \frac{\left(9 - 4\right) \times \left(72 - 1\right)}{83 + 5 \times 6}$$
$$ \frac{5 \times \left(8 + 64 - 1\right)}{92 + 3 \times 7}$$
$$ \frac{\left(9 \times 41\right) - \left(6 + 8\right)}{7 + 2 \times 53}$$
$$ \frac{4 + 8 + {7}^{\left(\frac{9}{3}\right)}}{51 + 62} $$
$$ \frac{5 + 7 \times \left(\left(6 \times 9\right) - 4\right)}{31 + 82}$$
The following examples have special property which is left to the reader to discover.
$$ \frac{71 \times \left(2 + 8\right)}{4 + 3 \times \left(9 + 65\right)}$$
$$ \frac{71 \times \left(4 + 6\right)}{2 \times \left(3 \times 5 + 98\right)}$$
$$ \frac{5 \times \left(61 + {3}^{4}\right)}{{2}^{7} + 98}$$
$$ \frac{\left(9 \times \left(84 - 5\right)\right) - 1}{\left(3 \times 76\right) - 2}$$
$$ \frac{6 - \left(8 \times \left(4 - 92\right)\right)}{1 + 3 \times 75}$$
$$ \frac{\left(4 + 6\right) \times \left(8 + 7 \times 9\right)}{1 + {\left(3 \times 5\right)}^{2}}$$
Last but not least, we have
$$\frac{3 \times \left(5 \times 71\right)}{9 + \left(8 \times 42\right) - 6}$$
$$\frac{71 \times \left(6 + 9\right)}{2 + 5 + 4 \times 83}$$
$$\frac{41 + 8 \times \left({2}^{7}\right)}{{3}^{5} + 96}$$
$$\frac{\left(6 + 9\right) \times \left(72 - 1\right)}{\left(8 \times 43\right) - 5}$$
$$\frac{3 \times \left(5 \times \left(\left(8 \times 9\right) - 1\right)\right)}{\left({7}^{\left(\frac{6}{2}\right)}\right) - 4}$$
$$\frac{1 + \left(5 + 9\right) \times \left(82 - 6\right)}{\left({7}^{3}\right) - 4}.$$
It would be interesting to know whether the next best approximation, which according to Wikipedia is
$$\frac{52163}{16604} \approx 3.141592387$$
can be represented this way, whether there is another fraction with a smaller denominator that produces more correct places and whether one has to add concatenation to the set of operators for this to occur.
This is the code of the Maple program. Enjoy!
with(combinat,powerset);
maxval := 360;
repr :=
proc(s)
local d, f, dstr, fstr, dtstr, ftstr, res, aprob, bprob, x, y,
leftset, rightset, check, typeset;
option remember;
res := table();
if nops(s) = 1 then
d := op(1,s);
res[d] := [d, sprintf("%d", d), sprintf("%d", d)];
return op(res);
fi;
check :=
proc(val)
if type(res[val], list) then return false; fi;
if type(val, integer) and abs(val)<maxval then return true fi;
return false;
end proc;
typeset :=
proc(dtstr, what, ftstr)
local pard, parf;
if length(dtstr)=1 then
pard := dtstr;
else
pard := sprintf("\\left(%s\\right)", dtstr);
fi;
if length(ftstr)=1 then
parf := ftstr;
else
parf := sprintf("\\left(%s\\right)", ftstr);
fi;
if evalb(what = "+") then
return sprintf("%s + %s", dtstr, ftstr);
elif evalb(what = "-") then
return sprintf("%s - %s", pard, parf);
elif evalb(what = "*") then
return sprintf("%s \\times %s", pard, parf);
elif evalb(what = "/") then
return
sprintf("\\frac{%s}{%s}", dtstr, ftstr);
fi;
return sprintf("{%s}^{%s}", pard, parf);
end proc;
for leftset in powerset(s) do
rightset := s minus leftset;
if nops(leftset)=0 or nops(rightset)=0 then next fi;
aprob := repr(leftset);
bprob := repr(rightset);
if nops(op(op(res))) = 2*maxval-1 then next fi;
for x in op(aprob) do for y in op(bprob) do
d := x[1]; dstr:= x[2]; dtstr := x[3];
f := y[1]; fstr:= y[2]; ftstr := y[3];
if check(d+f) then
res[d+f] := [d+f, sprintf("(%s) + (%s)", dstr, fstr),
typeset(dtstr, "+", ftstr)];
fi;
if check(d-f) then
res[d-f] := [d-f, sprintf("(%s) - (%s)", dstr, fstr),
typeset(dtstr, "-", ftstr)];
fi;
if check(d*f) then
res[d*f] := [d*f, sprintf("(%s) * (%s)", dstr, fstr),
typeset(dtstr, "*", ftstr)];
fi;
if f <> 0 and check(d/f) then
res[d/f] := [d/f, sprintf("(%s) / (%s)", dstr, fstr),
typeset(dtstr, "/", ftstr)];
fi;
if not(d=0 or f=0) and evalf(abs(f*log(d))<10)
and check(d^f) then
res[d^f] := [d^f, sprintf("(%s) ^ (%s)", dstr, fstr),
typeset(dtstr, "^", ftstr)];
fi;
od od;
od;
return op(res);
end;
approx_frac :=
proc(what)
local allset, numerset, denomset, x, y,
xt, yt, xpair, ypair;
allset := {seq(k, k=1..9)};
for numerset in powerset(allset) do
denomset := allset minus numerset;
if nops(numerset)>=1 and nops(denomset)>=1 then
xt := repr(numerset);
yt := repr(denomset);
xpair := xt[numer(what)];
ypair := yt[denom(what)];
if type(xpair, list) and type(ypair, list) then
printf("(%s) / (%s) %a %a\n\\frac{%s}{%s}\n\n",
xpair[2], ypair[2],
xpair[1]/ypair[1], evalf(xpair[1]/ypair[1]),
xpair[3], ypair[3]);
fi;
fi;
od;
end;