71 lines
1.5 KiB
Text
71 lines
1.5 KiB
Text
load compiler
|
|
|
|
function genRandomNumbers( amount )
|
|
rtn = []
|
|
for i in [ 0 : amount ]: rtn += random( 1, 9 )
|
|
return( rtn )
|
|
end
|
|
|
|
function getAnswer( exp )
|
|
ic = ICompiler()
|
|
ic.compileAll(exp)
|
|
|
|
return( ic.result )
|
|
end
|
|
|
|
function validInput( str )
|
|
for i in [ 0 : str.len() ]
|
|
if str[i] notin ' ()[]0123456789-+/*'
|
|
> 'INVALID Character = ', str[i]
|
|
return( false )
|
|
end
|
|
end
|
|
|
|
return( true )
|
|
end
|
|
|
|
printl('
|
|
The 24 Game
|
|
|
|
Given any four digits in the range 1 to 9, which may have repetitions,
|
|
Using just the +, -, *, and / operators; and the possible use of
|
|
brackets, (), show how to make an answer of 24.
|
|
|
|
An answer of "q" will quit the game.
|
|
An answer of "!" will generate a new set of four digits.
|
|
Otherwise you are repeatedly asked for an expression until it evaluates to 24
|
|
|
|
Note: you cannot form multiple digit numbers from the supplied digits,
|
|
so an answer of 12+12 when given 1, 2, 2, and 1 would not be allowed.
|
|
')
|
|
|
|
num = genRandomNumbers( 4 )
|
|
|
|
while( true )
|
|
|
|
>> "Here are the numbers to choose from: "
|
|
map({ a => print(a, " ") }, num)
|
|
>
|
|
|
|
exp = input()
|
|
|
|
switch exp
|
|
case "q", "Q"
|
|
exit()
|
|
|
|
case "!"
|
|
> 'Generating new numbers list'
|
|
num = genRandomNumbers( 4 )
|
|
|
|
default
|
|
if not validInput( exp ): continue
|
|
|
|
answer = getAnswer( exp )
|
|
|
|
if answer == 24
|
|
> "By George you GOT IT! Your expression equals 24"
|
|
else
|
|
> "Ahh Sorry, So Sorry your answer of ", answer, " does not equal 24."
|
|
end
|
|
end
|
|
end
|