package Ġcom . ar ithmetic . ar ithmetic game Ċ Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . support . v 7 . widget . AppCompat TextView Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġcom . ar ithmetic . ar ithmetic game . utils . Value Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠGame Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġequation One : ĠAppCompat TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġequation One Solution : ĠAppCompat TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġequation Two : ĠAppCompat TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġequation Two Solution : ĠAppCompat TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcorrect Message : ĠAppCompat TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwrong Message : ĠAppCompat TextView ĊĊĠĠĠ Ġprivate Ġvar Ġcount Correct s Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcount Wr ongs Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtime Counter : ĠAppCompat TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgreater Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġequals Button : ĠButton ĊĠĠĠ Ġprivate Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġless Button : ĠButton ĊĠĠĠ Ġprivate Ġvar Ġoperators Ġ= Ġset Of ("+ ", Ġ"-", Ġ"*", Ġ"/") ĊĊĠĠĠ Ġvar Ġtimer : ĠTimer ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Call Ġthis Ġmethod Ġto Ġstart Ġtimer Ġon Ġactivity Ġstart ĊĠĠĠ Ġprivate Ġfun Ġstart Timer () Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer ( 5 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġtimer ?. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Call Ġthis Ġmethod Ġto Ġupdate Ġthe Ġtimer ĊĠĠĠ Ġprivate Ġfun Ġupdate Timer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( timer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 5 Ġ 1 0 Ġ 1 5 Ġ.. ĠAnd ĠDifferent Ġof Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Correct s Ġ% Ġ 5 Ġ== Ġ 0 Ġ&& Ġcount Correct s Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm ili is Ġ= Ġtimer ?. millis Until Finished ?. plus ( TimeUnit . SECONDS . to Millis ( 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Here Ġyou Ġneed Ġto Ġmaintain Ġsingle Ġinstance Ġfor Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Ġ= Ġm ili is ?. let Ġ{ ĠTimer ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm ili is Ġ= Ġtimer ?. millis Until Finished ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Here Ġyou Ġneed Ġto Ġmaintain Ġsingle Ġinstance Ġfor Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Ġ= Ġm ili is ?. let Ġ{ ĠTimer ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Timer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠTimer ( m ili is : ĠLong ) Ġ: ĠCount Down Timer ( m ili is , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmillis Until Finished : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Counter . text Ġ= Ġ" Time ĠLeft Ġ: Ġ 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Dialog ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . millis Until Finished Ġ= Ġmillis Until Finished ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Counter . text Ġ= Ġ" Time ĠLeft Ġ: Ġ" Ġ+ Ġmillis Until Finished Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ game ) ĊĊĠĠĠĠĠĠĠ Ġequation One Ġ= ĠfindViewById ( R . id . equation _ one ) ĊĠĠĠĠĠĠĠ Ġequation One Solution Ġ= ĠfindViewById ( R . id . equation _ one _ solution ) ĊĠĠĠĠĠĠĠ Ġequation Two Ġ= ĠfindViewById ( R . id . equation _ two ) ĊĠĠĠĠĠĠĠ Ġequation Two Solution Ġ= ĠfindViewById ( R . id . equation _ two _ solution ) ĊĠĠĠĠĠĠĠ Ġgreater Button Ġ= ĠfindViewById ( R . id . greater _ button ) ĊĠĠĠĠĠĠĠ Ġequals Button Ġ= ĠfindViewById ( R . id . equals _ button ) ĊĠĠĠĠĠĠĠ Ġless Button Ġ= ĠfindViewById ( R . id . less _ button ) ĊĠĠĠĠĠĠĠ Ġtime Counter Ġ= ĠfindViewById ( R . id . time _ counter ) ĊĠĠĠĠĠĠĠ Ġcorrect Message Ġ= ĠfindViewById ( R . id . correct _ message ) ĊĠĠĠĠĠĠĠ Ġwrong Message Ġ= ĠfindViewById ( R . id . wrong _ message ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. hide () ĊĊĠĠĠĠĠĠĠ Ġgenerate Expressions () ĊĠĠĠĠĠĠĠ Ġstart Timer () ĊĊĠĠĠĠĠĠĠ Ġgreater Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġget Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" greater ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation One Solution . text . toString (). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation Two Solution . text . toString (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Dialog ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġequals Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġget Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" equals ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation One Solution . text . toString (). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation Two Solution . text . toString (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Dialog ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġless Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġget Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" less ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation One Solution . text . toString (). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation Two Solution . text . toString (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Dialog ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Expressions () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġequation 1 Ġ= Ġrandom Expression () ĊĠĠĠĠĠĠĠ Ġvar Ġresult 1 Ġ= ĠValue ( equation 1 ). resolve () ĊĊĠĠĠĠĠĠĠ Ġvar Ġequation 2 Ġ= Ġrandom Expression () ĊĠĠĠĠĠĠĠ Ġvar Ġresult 2 Ġ= ĠValue ( equation 2 ). resolve () ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( result 1 Ġ> Ġ 1 0 0 Ġ|| Ġresult 2 Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequation 1 Ġ= Ġrandom Expression () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 Ġ= ĠValue ( equation 1 ). resolve () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġequation 2 Ġ= Ġrandom Expression () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult 2 Ġ= ĠValue ( equation 2 ). resolve () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġequation One . text Ġ= Ġequation 1 ĊĠĠĠĠĠĠĠ Ġequation One Solution . text Ġ= Ġresult 1 . toString () ĊĠĠĠĠĠĠĠ Ġequation Two . text Ġ= Ġequation 2 ĊĠĠĠĠĠĠĠ Ġequation Two Solution . text Ġ= Ġresult 2 . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Whole ( value : ĠDouble ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue Ġ- Ġvalue . toInt () Ġ== Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Result ( ĊĠĠĠĠĠĠĠ Ġbutton Type : ĠString , ĊĠĠĠĠĠĠĠ Ġequation One Answer : ĠFloat , ĊĠĠĠĠĠĠĠ Ġequation Two Answer : ĠFloat ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( button Type Ġ== Ġ" greater " Ġ&& Ġequation One Answer Ġ> Ġequation Two Answer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CORRECT !" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( button Type Ġ== Ġ" equals " Ġ&& Ġequation One Answer Ġ== Ġequation Two Answer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CORRECT !" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( button Type Ġ== Ġ" less " Ġ&& Ġequation One Answer Ġ< Ġequation Two Answer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CORRECT !" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" WRONG !" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Dialog ( result : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStop ĠThe ĠTimer ĊĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow ĠThe ĠDialog ĊĠĠĠĠĠĠĠ Ġvar Ġresult Message Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġ" CORRECT !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Message Ġ= Ġ" CORRECT !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Message . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Correct s ++ ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Ġ== Ġ" WRONG !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Wr ongs ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrong Message . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Message Ġ= Ġ" WRONG !" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Message Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No ĠMore ĠTime !\ n Correct ĠAn swers : Ġ${ count Correct s }\ n Wrong ĠAn swers : Ġ$ count Wr ongs " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog : ĠAlertDialog ? Ġ= Ġthis . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" ok ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . OnClickListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġ" CORRECT !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Message . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Timer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Expressions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Ġ== Ġ" WRONG !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Expressions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrong Message . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Timer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGo Ġto Ġthe ĠGame ĠOver ĠActivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Counter . text Ġ= Ġ" GAME ĠOVER !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreater Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġless Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequals Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage ( result Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠAlertDialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert Dialog !!. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrandom Number (): ĠInt Ġ= Ġ( 1 .. 2 0 ). random () ĊĊĠĠĠ Ġfun Ġrandom Expression (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġterm Count Ġ= Ġ( 1 .. 4 ). random () ĊĠĠĠĠĠĠĠ Ġvar Ġequation Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġterm 1 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġterm 2 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġterm 3 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġterm 4 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġoperation 1 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġoperation 2 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġoperation 3 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġoperation 4 Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġterm Count Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġif Ġ( term Count Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequation Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( term Count Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRem inder Ġof Ġequation Ġmust Ġbe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 1 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 2 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequation Ġ= Ġ"$ term 1 ${ operators . random ()} $ term 2 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! is Whole ( Value ( equation ). resolve (). toDouble ()) Ġ|| ĠValue ( equation ). resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () Ġ> Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 1 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 2 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequation Ġ= Ġ"$ term 1 ${ operators . random ()} $ term 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( term Count Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 1 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 2 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 3 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 1 Ġ= Ġ"$ term 1 ${ operators . random ()} $ term 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 2 Ġ= Ġ" ($ operation 1 ) ${ operators . random ()} $ term 3 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! is Whole ( Value ( operation 1 ). resolve (). toDouble ()) Ġ|| ĠValue ( operation 1 ). resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () Ġ> Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 1 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 2 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 1 Ġ= Ġ"$ term 1 ${ operators . random ()} $ term 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! is Whole ( Value ( operation 2 ). resolve (). toDouble ()) Ġ|| ĠValue ( operation 2 ). resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () Ġ> Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 3 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 2 Ġ= Ġ" ($ operation 1 ) ${ operators . random ()} $ term 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġequation Ġ= Ġoperation 2 ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( term Count Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 1 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 2 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 3 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm 4 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 1 Ġ= Ġ"$ term 1 ${ operators . random ()} $ term 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 2 Ġ= Ġ" ($ operation 1 ) ${ operators . random ()} $ term 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 3 Ġ= Ġ" ($ operation 2 ) ${ operators . random ()} $ term 4 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! is Whole ( Value ( operation 1 ). resolve (). toDouble ()) Ġ|| ĠValue ( operation 1 ). resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () Ġ> Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 1 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 2 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 1 Ġ= Ġ"$ term 1 ${ operators . random ()} $ term 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! is Whole ( Value ( operation 2 ). resolve (). toDouble ()) Ġ|| ĠValue ( operation 2 ). resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () Ġ> Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 3 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 2 Ġ= Ġ" ($ operation 1 ) ${ operators . random ()} $ term 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! is Whole ( Value ( operation 3 ). resolve (). toDouble ()) Ġ|| ĠValue ( operation 3 ). resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () Ġ> Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterm 4 Ġ= Ġrandom Number (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation 3 Ġ= Ġ" ($ operation 2 ) ${ operators . random ()} $ term 4 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġequation Ġ= Ġoperation 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove ĠBl ank ĠSp aces ĊĠĠĠĠĠĠĠ Ġequation Ġ= Ġequation . replace (" Ġ", Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġequation ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ