## Saturday, October 20, 2012

### Krypto - make the target number

# This program uses the new functions and subroutines from version 0.9.9.1

cls
clg
dim n(4)
dim op\$(4)
target = int (rand*60)
n[0]=int (rand*10)+1
n[1]=int (rand*10)+1
n[2]=int (rand*10)+1
n[3]=int (rand*10)+1
graphsize 600,200
font "arial",40,100
text 0,20, "Target number is : "+ target
text 0,100, "Use only: "+ n[0]+", "+n[1]+", "+n[2]+", "+n[3]
counter=0
op\$[0]="+"
op\$[1]="-"
op\$[2]="*"
op\$[3]="/"
for turn = 1 to 2
For t1 = 0 to 3
For t2 = 0 to 3
For t3 = 0 to 3
For t4 = 0 to 3
For t5 = 0 to 3
For t6 = 0 to 3
For t7 = 0 to 3
if t1<>t3 and t3<>t5 and t5<>t7 and t1<>t5 and t3<>t7 and t1<>t7 then
a=eval(op\$[t2],n[t1],n[t3])
c=eval(op\$[t6],n[t5],n[t7])
ac=eval(op\$[t4],a,c)
if ac = target and turn =2 then Print "("+ n[t1]+op\$[t2]+n[t3]+")"+op\$[t4]+"("+ n[t5]+op\$[t6]+n[t7]+")="+ac
if ac = target and turn =1 then counter = counter +1
b=eval(op\$[t4],n[t3],n[t5])
ba=eval(op\$[t2],n[t1],b)
bac=eval(op\$[t6],ba,n[t7])
if bac= target and turn =2 then Print "(("+ n[t1]+op\$[t2]+"("+n[t3]+op\$[t4]+n[t5]+"))"+op\$[t6]+n[t7]+"="+bac
if bac = target and turn =1 then counter = counter +1
bc=eval(op\$[t6],b,n[t7])
bca=eval(op\$[t2],n[t1],bc)
if bca= target and turn =2 then Print n[t1]+op\$[t2]+"(("+n[t3]+op\$[t4]+n[t5]+")"+op\$[t6]+n[t7]+")="+bca
if bca = target and turn =1 then counter = counter +1
ab=eval(op\$[t4],a,n[t5])
abc=eval(op\$[t6],ab,n[t7])
if abc= target and turn =2 then Print "(("+ n[t1]+op\$[t2]+n[t3]+")"+op\$[t4]+n[t5]+")"+op\$[t6]+n[t7]+"="+abc
if abc = target and turn =1 then counter = counter +1
cb=eval(op\$[t4],n[t3],c)
cba=eval(op\$[t2],n[t1],cb)
if cba = target and turn =2 then Print n[t1]+op\$[t2]+"("+n[t3]+op\$[t4]+"("+n[t5]+op\$[t6]+n[t7]+"))="+cba
if cba = target and turn =1 then counter = counter +1
end if
next t7
next t6
next t5
next t4
next t3
next t2
next t1
print "Number of solutions "+counter
input "press any key to get solutions",a
next turn
function eval(e\$,x,y)
if e\$="*" then eval = x*y
if e\$="/" and y<>0 then eval = x/y
if e\$="/" and y=0 then eval = 10000000
if e\$="-" then eval = x-y
if e\$="+" then eval = x+y
end function