do clear screen n$="" for i=1 to 4 n$=n$+str$(int(ran(9)+1)) next i print at(35,0) "24 GAME\n" print "Combine numbers and operators for obtain 24." print "Allowed characters: "; i$=n$+"+-*/()" for i=1 to 10 print mid$(i$,i,1)," "; next i print "[nothing to end program]\n" label accept p$="" i$=n$+"+-*/()" print at(0,4);:input "Enter the formula: " f$ if f$="" end for i=1 to len(f$) c$=mid$(f$,i,1) switch c$ case " ": f$=left$(f$,i-1)+right$(f$,len(f$)-i): break case "+":case "-":case "*":case "/": p$=p$+"o": break case "(":case ")": p$=p$+c$: break case mid$(i$,1,1): p$=p$+"n": mid$(i$,1,1)=" ": break case mid$(i$,2,1): p$=p$+"n": mid$(i$,2,1)=" ": break case mid$(i$,3,1): p$=p$+"n": mid$(i$,3,1)=" ": break case mid$(i$,4,1): p$=p$+"n": mid$(i$,4,1)=" ": break default: message(" = Invalid argument! "): break end switch if f$="" goto accept next i restore for i=1 to 11 read t$ if t$=p$ break next i if t$<>p$ then message(" = Bad construction! ") goto accept end if let r=eval(f$) print "\n",f$," = ",r," "; if r<>24 then message(" = Wrong! ") goto accept else message(" = Correct! ") pause 5 end if loop DATA "nononon" DATA "(non)onon" DATA "nono(non)" DATA "no(no(non))" DATA "((non)on)on" DATA "no(non)on" DATA "(non)o(non)" DATA "no((non)on)" DATA "(nonon)on" DATA "(no(non))on" DATA "no(nonon)" sub message(m$) print at(0,7) f$,m$ beep: beep: beep pause 1 print at(19,4) " " f$="" end sub sub eval(c$) static linea linea=linea+1 c$="sub s"+str$(linea+1000000,"#######")+"():return "+c$+":end sub" compile c$ return execute(mid$(c$,5,8)) end sub