Re: four digits must total 24
- From: Mensanator <mensanator@xxxxxxx>
- Date: Wed, 10 Dec 2008 23:19:43 -0800 (PST)
On Dec 10, 11:18�pm, Mensanator <mensana...@xxxxxxx> wrote:
On Dec 10, 10:08 pm, azure <k...@xxxxxx> wrote:
Given four digits, use each only once, use +, -, *, /, to make the
total of 24.
Some newspapers print such a puzzle, some are easy (relatively) some
more obscure, but how would a computer program solve such a puzzle?
2,7,8,9 = 2(7+9)-8
3,5,5,7 = (3*5 -7) *3
1,2,7,7 = (7*7 - 1 )*2
There are hundreds of possible numbers that can be used 1,1,1,8 is
the lowest (1+1+1)*8
No, it isn't. You used 1 more than once.
the highest (in ascending order of course) is
around 6,6,6,6 or a bit higher.
I think one would have to build a database of all solutions, and then
compare the given digits to the db?
You could just do Permutations Without Replacement
of 10 items taken 4 at a time to generate all the
digit patterns.
And a second set of items can be the Permutations
With Replacement of 4 operators taken 3 at a time.
I don't think a program could be
written to solve it.
It's a doddle.
Here's a quick Python solution. I made some
shortcuts to keep it reasonable. First, I made
the operators unique. Also, I'm using simple
integer arithmetic, so 8/9 evaluates to 0.
And no provision for parentheses. Basically,
this is to give you an idea about how to solve
something like this.
As you can see, the program is quite simple
(provided you have a decent language like
Python).
# Python 2.6
import itertools as it
n = '0123456789'
o = '+-*/'
# this is actually Permutations
# WITHOUT Replacement
nnnn = [i for i in it.permutations(n,4)]
# the simple case where operators arn't
# repeated either
ooo = [i for i in it.permutations(o,3)]
# but it.product is actually the Cartesian Product
# aka Permutations WITH Replacement
nnnnooo = [i for i in it.product(nnnn,ooo)]
def j(n,m):
if m:
return ''.join([n,m])
else:
return n
for i in nnnnooo:
# changes ('0123','+-*') to '0+1-2*3'
s = ''.join(map(j,i[0],i[1]))
# we'll try to evaluate every expression
# using whatever the standard operator
# precedence is
try:
v = eval(s)
# when errors happen (divide by 0),
# just ignore
except:
pass
# otherwise, see if it's a solution
# and print if so
else:
if v == 24: print s,
## 0/1+3*8 0/1+4*6 0/1+6*4 0/1+8*3 0/2+3*8
## 0/2+4*6 0/2+6*4 0/2+8*3 0+3/1*8 0/3+4*6
## 0/3+6*4 0+3*8/1 0+4/1*6 0/4+3*8 0+4*6/1
## 0/4+8*3 0/5+3*8 0/5+4*6 0/5+6*4 0/5+8*3
## 0+6/1*4 0+6/2*8 0/6+3*8 0+6*4/1 0+6*8/2
## 0/6+8*3 0+7/2*8 0/7+3*8 0/7+4*6 0/7+6*4
## 0/7+8*3 0+8/1*3 0+8/2*6 0+8*3/1 0/8+4*6
## 0+8*6/2 0/8+6*4 0+8*9/3 0+9/2*6 0+9/3*8
## 0/9+3*8 0/9+4*6 0/9+6*4 0+9*8/3 0/9+8*3
## 1/2+3*8 1/2+4*6 1/2+6*4 1/2+8*3 1/3+4*6
## 1/3+6*4 1+3*9-4 1/4+3*8 1-4+3*9 1+4*7-5
## 1/4+8*3 1+4*8-9 1-4+9*3 1/5+3*8 1/5+4*6
## 1-5+4*7 1/5+6*4 1+5*6-7 1-5+7*4 1/5+8*3
## 1/6+3*8 1+6*5-7 1/6+8*3 1/7+3*8 1+7*4-5
## 1/7+4*6 1-7+5*6 1/7+6*4 1-7+6*5 1/7+8*3
## 1/8+4*6 1+8*4-9 1/8+6*4 1+9*3-4 1/9+3*8
## 1/9+4*6 1-9+4*8 1/9+6*4 1/9+8*3 1-9+8*4
## 2/1*9+6 2/3+4*6 2/3+6*4 2+3*9-5 2/4+3*8
## 2+4*7-6 2/4+8*3 2/5+3*8 2-5+3*9 2/5+4*6
## 2/5+6*4 2+5*6-8 2/5+8*3 2-5+9*3 2/6+3*8
## 2-6+4*7 2+6*5-8 2-6+7*4 2/6+8*3 2/7+3*8
## 2+7*4-6 2/7+4*6 2/7+6*4 2/7+8*3 2*8-1+9
## 2/8+4*6 2-8+5*6 2/8+6*4 2-8+6*5 2*8+9-1
## 2*9-0+6 2*9/1+6 2*9-1+7 2+9*3-5 2/9+3*8
## 2/9+4*6 2*9+6-0 2*9+6/1 2/9+6*4 2*9+7-1
## 2/9+8*3 3/1*5+9 3/1*8+0 3/1*8-0 3*5-0+9
## 3*5/1+9 3/5+4*6 3/5+6*4 3+5*6-9 3*5+9-0
## 3*5+9/1 3*6-1+7 3+6/2*7 3*6-2+8 3+6*5-9
## 3*6+7-1 3+6*7/2 3*6+8-2 3*7-1+4 3*7-2+5
## 3*7+4-1 3/7+4*6 3*7+5-2 3*7-5+8 3+7*6/2
## 3*7+6/2 3/7+6*4 3*7-6+9 3*7+8-5 3*7+9-6
## 3*8+0/1 3*8-0/1 3*8+0/2 3*8-0/2 3*8+0/4
## 3*8-0/4 3*8+0/5 3*8-0/5 3*8+0/6 3*8-0/6
## 3*8+0/7 3*8-0/7 3*8+0/9 3*8-0/9 3*8/1+0
## 3*8/1-0 3*8+1/2 3*8-1/2 3*8+1/4 3*8-1/4
## 3*8+1/5 3*8-1/5 3*8+1/6 3*8-1/6 3*8+1/7
## 3*8-1/7 3*8+1/9 3*8-1/9 3*8+2/4 3*8-2/4
## 3*8+2/5 3*8-2/5 3*8+2/6 3*8-2/6 3*8+2/7
## 3*8-2/7 3*8+2/9 3*8-2/9 3*8+4/5 3*8-4/5
## 3*8+4/6 3*8-4/6 3/8+4*6 3*8+4/7 3*8-4/7
## 3*8+4/9 3*8-4/9 3*8+5/6 3*8-5/6 3*8+5/7
## 3*8-5/7 3*8+5/9 3*8-5/9 3/8+6*4 3*8+6/7
## 3*8-6/7 3*8+6/9 3*8-6/9 3*8+7/9 3*8-7/9
## 3*9+1-4 3*9+2-5 3*9-4+1 3/9+4*6 3*9+4-7
## 3*9-5+2 3-9+5*6 3*9+5-8 3*9-6/2 3/9+6*4
## 3-9+6*5 3*9-7/2 3*9-7+4 3*9-8+5 4-1+3*7
## 4/1*6+0 4/1*6-0 4-1+7*3 4/2*9+6 4+3*7-1
## 4+3*9-7 4*5-2+6 4*5-3+7 4/5+3*8 4*5+6-2
## 4*5+7-3 4+5*8/2 4*5+8/2 4/5+8*3 4*5+9/2
## 4*6+0/1 4*6-0/1 4*6+0/2 4*6-0/2 4*6+0/3
## 4*6-0/3 4*6+0/5 4*6-0/5 4*6+0/7 4*6-0/7
## 4*6+0/8 4*6-0/8 4*6+0/9 4*6-0/9 4*6/1+0
## 4*6/1-0 4*6+1/2 4*6-1/2 4*6+1/3 4*6-1/3
## 4*6+1/5 4*6-1/5 4*6+1/7 4*6-1/7 4*6+1/8
## 4*6-1/8 4*6+1/9 4*6-1/9 4*6+2/3 4*6-2/3
## 4*6+2/5 4*6-2/5 4*6+2/7 4*6-2/7 4*6+2/8
## 4*6-2/8 4*6+2/9 4*6-2/9 4*6+3/5 4*6-3/5
## 4*6+3/7 4*6-3/7 4*6+3/8 4*6-3/8 4/6+3*8
## 4*6+3/9 4*6-3/9 4*6+5/7 4*6-5/7 4*6+5/8
## 4*6-5/8 4*6+5/9 4*6-5/9 4*6+7/8 4*6-7/8
## 4*6+7/9 4*6-7/9 4/6+8*3 4*6+8/9 4*6-8/9
## 4*7+1-5 4*7+2-6 4+7*3-1 4/7+3*8 4-7+3*9
## 4*7-5+1 4*7+5-9 4*7-6+2 4*7-8/2 4/7+8*3
## 4*7-9/2 4-7+9*3 4*7-9+5 4*8+1-9 4+8/2*5
## 4+8*5/2 4*8-9+1 4+9/2*5 4*9/2+6 4+9*3-7
## 4/9+3*8 4/9+8*3 5/1*3+9 5-2+3*7 5-2+7*3
## 5/2*9+6 5*3-0+9 5*3/1+9 5+3*7-2 5*3+9-0
## 5*3+9/1 5+3*9-8 5*4-2+6 5*4-3+7 5*4+6-2
## 5*4+7-3 5+4*7-9 5*4+8/2 5*4+9/2 5*6+1-7
## 5*6+2-8 5*6/2+9 5/6+3*8 5*6+3-9 5*6-7+1
## 5*6-8+2 5/6+8*3 5*6-9+3 5+7*3-2 5/7+3*8
## 5/7+4*6 5+7*4-9 5/7+6*4 5/7+8*3 5*8/2+4
## 5-8+3*9 5/8+4*6 5/8+6*4 5-8+9*3 5+9*3-8
## 5/9+3*8 5/9+4*6 5-9+4*7 5/9+6*4 5-9+7*4
## 5/9+8*3 6-0+2*9 6-0+9*2 6/1+2*9 6/1*4+0
## 6/1*4-0 6/1+9*2 6+2/1*9 6/2+3*7 6-2+4*5
## 6-2+5*4 6/2*5+9 6/2+7*3 6/2*7+3 6/2*8+0
## 6/2*8-0 6+2*9-0 6+2*9/1 6/2*9-3 6*3-1+7
## 6*3-2+8 6*3+7-1 6*3+8-2 6*4+0/1 6*4-0/1
## 6*4+0/2 6*4-0/2 6*4+0/3 6*4-0/3 6*4+0/5
## 6*4-0/5 6*4+0/7 6*4-0/7 6*4+0/8 6*4-0/8
## 6*4+0/9 6*4-0/9 6*4/1+0 6*4/1-0 6*4+1/2
## 6*4-1/2 6*4+1/3 6*4-1/3 6*4+1/5 6*4-1/5
## 6*4+1/7 6*4-1/7 6*4+1/8 6*4-1/8 6*4+1/9
## 6*4-1/9 6*4+2/3 6*4-2/3 6*4+2/5 6*4-2/5
## 6*4+2/7 6*4-2/7 6*4+2/8 6*4-2/8 6+4/2*9
## 6*4+2/9 6*4-2/9 6*4+3/5 6*4-3/5 6*4+3/7
## 6*4-3/7 6*4+3/8 6*4-3/8 6*4+3/9 6*4-3/9
## 6+4*5-2 6*4+5/7 6*4-5/7 6*4+5/8 6*4-5/8
## 6*4+5/9 6*4-5/9 6*4+7/8 6*4-7/8 6*4+7/9
## 6*4-7/9 6*4+8/9 6*4-8/9 6+4*9/2 6*5+1-7
## 6*5+2-8 6+5/2*9 6*5/2+9 6*5+3-9 6+5*4-2
## 6*5-7+1 6*5-8+2 6*5-9+3 6*7/2+3 6/7+3*8
## 6+7/3*9 6+7*8/3 6/7+8*3 6*8/2+0 6*8/2-0
## 6+8/3*9 6+8/4*9 6+8*7/3 6+8*9/4 6+9/1*2
## 6+9*2-0 6+9*2/1 6*9/2-3 6/9+3*8 6+9*4/2
## 6/9+8*3 6+9*8/4 7-1+2*9 7-1+3*6 7-1+6*3
## 7-1+9*2 7/2*5+9 7/2*8+0 7/2*8-0 7+2*9-1
## 7/2*9-3 7*3-1+4 7*3-2+5 7*3+4-1 7-3+4*5
## 7*3+5-2 7-3+5*4 7*3-5+8 7+3*6-1 7*3+6/2
## 7*3-6+9 7*3+8-5 7*3+9-6 7/3*9+6 7*4+1-5
## 7*4+2-6 7*4-5+1 7+4*5-3 7*4+5-9 7*4-6+2
## 7*4-8/2 7*4-9/2 7*4-9+5 7+5*4-3 7*6/2+3
## 7+6*3-1 7*8/2-4 7*8/3+6 7/8+4*6 7/8+6*4
## 7+9*2-1 7/9+3*8 7/9+4*6 7/9+6*4 7/9+8*3
## 8/1*3+0 8/1*3-0 8*2-1+9 8-2+3*6 8/2+4*5
## 8/2+5*4 8/2*5+4 8/2*6+0 8/2*6-0 8-2+6*3
## 8/2*7-4 8*2+9-1 8*3+0/1 8*3-0/1 8*3+0/2
## 8*3-0/2 8*3+0/4 8*3-0/4 8*3+0/5 8*3-0/5
## 8*3+0/6 8*3-0/6 8*3+0/7 8*3-0/7 8*3+0/9
## 8*3-0/9 8*3/1+0 8*3/1-0 8*3+1/2 8*3-1/2
## 8*3+1/4 8*3-1/4 8*3+1/5 8*3-1/5 8*3+1/6
## 8*3-1/6 8*3+1/7 8*3-1/7 8*3+1/9 8*3-1/9
## 8*3+2/4 8*3-2/4 8*3+2/5 8*3-2/5 8*3+2/6
## 8*3-2/6 8*3+2/7 8*3-2/7 8*3+2/9 8*3-2/9
## 8*3+4/5 8*3-4/5 8*3+4/6 8*3-4/6 8*3+4/7
## 8*3-4/7 8*3+4/9 8*3-4/9 8*3+5/6 8*3-5/6
## 8*3+5/7 8*3-5/7 8*3+5/9 8*3-5/9 8+3*6-2
## 8*3+6/7 8*3-6/7 8*3+6/9 8*3-6/9 8+3*7-5
## 8*3+7/9 8*3-7/9 8/3*9+6 8*4+1-9 8*4-9+1
## 8/4*9+6 8*5/2+4 8-5+3*7 8-5+7*3 8*6/2+0
## 8*6/2-0 8+6*3-2 8*7/2-4 8+7*3-5 8*7/3+6
## 8+9/2*4 8*9/3+0 8*9/3-0 8*9/4+6 8/9+4*6
## 8/9+6*4 9-0+3*5 9-0+5*3 9/1*2+6 9-1+2*8
## 9/1+3*5 9/1+5*3 9-1+8*2 9*2-0+6 9*2/1+6
## 9*2-1+7 9/2+4*5 9/2*4+8 9/2+5*4 9/2*5+4
## 9*2+6-0 9/2*6+0 9/2*6-0 9*2+6/1 9*2+7-1
## 9/2*7-4 9+2*8-1 9*3+1-4 9+3/1*5 9*3+2-5
## 9*3-4+1 9*3+4-7 9+3*5-0 9+3*5/1 9*3-5+2
## 9*3+5-8 9*3-6/2 9*3-7/2 9*3-7+4 9+3*7-6
## 9/3*8+0 9/3*8-0 9*3-8+5 9*4/2+6 9+5/1*3
## 9+5*3-0 9+5*3/1 9+5*6/2 9*6/2-3 9+6/2*5
## 9-6+3*7 9+6*5/2 9-6+7*3 9+7/2*5 9+7*3-6
## 9+8*2-1 9*8/3+0 9*8/3-0 9*8/4+6
You could easily do it in a database
also, a trivial excercise in SQL.
My bio-organic CPU (aka brain) looks for the factors of 24,
1,2,3,4,6,8,12 and tries to get one or more of these.
Any other suggestions?- Hide quoted text -
- Show quoted text -
.
- References:
- four digits must total 24
- From: azure
- Re: four digits must total 24
- From: Mensanator
- four digits must total 24
- Prev by Date: Re: four digits must total 24
- Next by Date: RIght on the tip of my tongue....
- Previous by thread: Re: four digits must total 24
- Next by thread: Re: four digits must total 24
- Index(es):
Relevant Pages
|