Really crap code, but here's my 5 minute solution:<p><pre><code> #!/usr/bin/python
from itertools import permutations
vs = [ 1, 3, 4, 6 ]
def run_tests( rtn, vs ):
if len(vs) == 1:
print rtn, ':', vs[0]
return
run_tests( rtn+' +', [ vs[0]+vs[1] ] + vs[2:] )
run_tests( rtn+' -', [ vs[0]-vs[1] ] + vs[2:] )
run_tests( rtn+' r', [-vs[0]+vs[1] ] + vs[2:] )
run_tests( rtn+' *', [ vs[0]*vs[1] ] + vs[2:] )
if vs[1] != 0:
run_tests( rtn+' /', [ float(vs[0])/vs[1] ] + vs[2:] )
if vs[0] != 0:
run_tests( rtn+' v', [ float(vs[1])/vs[0] ] + vs[2:] )
for p in permutations( vs ):
rtn = `p`
run_tests( rtn, list(p) )
</code></pre>
Run this looking for the desired answer:<p><pre><code> ./SolverHack.py | grep " 24"
</code></pre>
It produces:<p><pre><code> (3, 4, 1, 6) / r v : 24.0
(4, 3, 1, 6) v r v : 24.0
</code></pre>
As I say:<p>* crappy code,<p>* complete hack,<p>* done in 5 minutes,<p>* solves the problem.