package Ġcom . android . gre im ul . exam maker . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . android . gre im ul . exam maker . R Ċ import Ġcom . android . gre im ul . exam maker . algorithms . random List Ċ import Ġcom . android . gre im ul . exam maker . db . Problems Ċ import Ġcom . android . gre im ul . exam maker . file io . import Set Ċ import Ġcom . android . gre im ul . exam maker . prob view . Prob ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ dot est .* Ċ import Ġkotlinx . android . synt hetic . main . dialog _ score .* Ċ import Ġkotlinx . android . synt hetic . main . dialog _ score . view .* Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠDo Test Activity : ĠAppCompatActivity (){ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( item != null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , ĠIntent (). putExtra (" Act Val ", Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ dot est ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . dialog _ ready , null ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġintent . getString Extra (" File ") ĊĠĠĠĠĠĠĠ Ġval Ġprob List Ġ= Ġimport Set ( File ( file ), this ) ĊĠĠĠĠĠĠĠ Ġval Ġprob num Ġ= Ġintent . getInt Extra (" Prob Num ", - 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġis Rand Ġ= Ġintent . getBoolean Extra (" is Rand ", false ) ĊĠĠĠĠĠĠĠ Ġval Ġorder List Ġ= Ġrandom List ( prob num , is Rand , prob List . size ) ĊĠĠĠĠĠĠĠ Ġval Ġans List Ġ= ĠArray ( prob num , {" false Ġfalse Ġfalse Ġfalse Ġfalse "}) ĊĠĠĠĠĠĠĠ Ġvar Ġp iv Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcorrect Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġall Cnt . text Ġ= Ġprob num . toString () ĊĠĠĠĠĠĠĠ Ġcur Cnt . text Ġ= Ġ 1 . toString () ĊĠĠĠĠĠĠĠ Ġdialog . setView ( dialog View ). set Positive Button (" Start ! "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog , i -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Prob ( prob List [ order List [ piv ]], ans List , piv ) ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠ Ġnext Bt . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Cnt . text Ġ= Ġ( piv + 1 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġans List [ piv ] Ġ= Ġ"${ choice 1 . isChecked } Ġ${ choice 2 . isChecked } Ġ${ choice 3 . isChecked } Ġ${ choice 4 . isChecked } Ġ${ choice 5 . isChecked }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp iv ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( piv == prob num ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġprob num ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ans List [ i ] Ġ== Ġ( prob List [ order List [ i ]]. answer )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog 2 Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog View 2 Ġ= Ġlayout Inflater . inflate ( R . layout . dialog _ score , null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View 2 . score View . text Ġ= Ġ"${ correct } Ġ/ Ġ${ prob num }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog 2 . setView ( dialog View 2 ). set Positive Button (" Finish "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog , i -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Cnt . text Ġ= Ġ( piv Ġ+ Ġ 1 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Prob ( prob List [ order List [ piv ]], ans List , piv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpre Bt . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġans List [ piv ] Ġ= Ġ"${ choice 1 . isChecked } Ġ${ choice 2 . isChecked } Ġ${ choice 3 . isChecked } Ġ${ choice 4 . isChecked } Ġ${ choice 5 . isChecked }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( piv > 0 ) Ġp iv -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Cnt . text Ġ= Ġ( piv + 1 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Prob ( prob List [ order List [ piv ]], ans List , piv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset Prob ( problem : Problems , ans List : Array < String >, cur : Int ){ ĊĠĠĠĠĠĠĠ Ġtitle Edit . text Ġ= Ġproblem . title ĊĠĠĠĠĠĠĠ Ġdescription . text Ġ= Ġproblem . description . replace (" Ġ"," \ n ") ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġans List [ cur ]. split (" Ġ") ĊĠĠĠĠĠĠĠ Ġchoice 1 . isChecked Ġ= Ġtoken [ 0 ]. to Boolean () ĊĠĠĠĠĠĠĠ Ġchoice 2 . isChecked Ġ= Ġtoken [ 1 ]. to Boolean () ĊĠĠĠĠĠĠĠ Ġchoice 3 . isChecked Ġ= Ġtoken [ 2 ]. to Boolean () ĊĠĠĠĠĠĠĠ Ġchoice 4 . isChecked Ġ= Ġtoken [ 3 ]. to Boolean () ĊĠĠĠĠĠĠĠ Ġchoice 5 . isChecked Ġ= Ġtoken [ 4 ]. to Boolean () ĊĊĠĠĠĠĠĠĠ Ġchoice 1 . text Ġ= Ġproblem . choice 1 ĊĠĠĠĠĠĠĠ Ġchoice 2 . text Ġ= Ġproblem . choice 2 ĊĠĠĠĠĠĠĠ Ġchoice 3 . text Ġ= Ġproblem . choice 3 ĊĠĠĠĠĠĠĠ Ġchoice 4 . text Ġ= Ġproblem . choice 4 ĊĠĠĠĠĠĠĠ Ġchoice 5 . text Ġ= Ġproblem . choice 5 ĊĠĠĠ Ġ} Ċ }