/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠA ĠM ĠSat rio Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . ams 6 4 . calcul at orm ĊĊ Ċ import Ġkotlin . math . pow ĊĊ Ċ class ĠCalc Activity ( private Ġvar Ġinput String : ĠString ) Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġscan Activity Ġ= ĠScan Activity ( input String ) ĊĊĠĠĠ Ġfun Ġmain Calc Activity (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġscan Activity . scan String ( input String ) ĊĊĠĠĠĠĠĠĠ Ġwhile ( scan Activity . is Pow Ġ|| Ġscan Activity . is First Move ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput String Ġ= Ġif ( scan Activity . is First Move ){ first Move () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { input String } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" input String 1 Ġ$ input String ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput String Ġ= Ġif ( scan Activity . is Pow ){ to Pow ( input String )} else { input String } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" input String 2 Ġ$ input String ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġif ( input String . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbasic Operation ( input String ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġif ( scan Activity . getIs Integer ( input String )){ to Integer ( input String )} Ġelse { input String } ĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġif ( scan Activity . getIs Decimal ( input String )){ func Round ( input String )} Ġelse { input String } ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput String ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Pow ( input String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Ġ= Ġscan Activity . getInput List ( input String ) ĊĠĠĠĠĠĠĠ Ġval Ġtemp 2 Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġtemp ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 . add ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor (( i , j ) Ġin Ġtemp . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i - 1 >= 0 Ġ&& Ġi + 1 <= temp . size - 1 Ġ&& Ġj Ġ== Ġ"^ "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp [ i + 1 ] Ġ== Ġ"+ "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 . remove At ( i + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp [ i + 1 ] Ġ== Ġ"- "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 . remove At ( i + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 [ i - 1 ] Ġ= Ġ( 1 . 0 / temp 2 [ i - 1 ]. toDouble ()). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtemp Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġtemp 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp . add ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġtemp Result : ĠString ĊĠĠĠĠĠĠĠ Ġfor (( i , j ) Ġin Ġtemp . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i - 1 >= 0 Ġ&& Ġi + 1 <= temp . size - 1 Ġ&& Ġj Ġ== Ġ"^ "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp [ i + 1 ] Ġin ĠlistOf (" 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 0 ")){ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Result Ġ= Ġtemp [ i Ġ- Ġ 1 ]. toDouble (). pow ( temp [ i Ġ+ Ġ 1 ]. toDouble ()). toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 . remove At ( i + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 2 [ i - 1 ] Ġ= Ġtemp Result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtemp Result Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġtemp 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Result Ġ+= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemp Result Ġ= Ġscan Activity . scan String ( temp Result ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtemp Result ĊĠĠĠ Ġ} Ċ /* ĊĠĠĠ Ġprivate Ġfun Ġmath Pow ( double 1 : ĠString , Ġdouble 2 : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdouble Result Ġ= Ġmutable ListOf < Double >() ĊĠĠĠĠĠĠĠ Ġdouble Result . add ( double 1 . toDouble ()) ĊĠĠĠĠĠĠĠ ĠLog . d (" T eeee "," $ double 1 , Ġ$ double 2 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( double 2 Ġ== Ġ" 0 "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġdouble 2 . toInt ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Result [ i ] Ġ= Ġdouble Result [ i ]* double 1 . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" double Result [ 0 ]. toString () Ġ${ double Result [ 0 ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Result [ 0 ]. toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ */ ĊĠĠĠ Ġprivate Ġfun Ġto Integer ( input String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// remove Ġ. 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġinput String . remove Range ( input String . length - 2 , input String . length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfunc Round ( input String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdec Digit Ġ= Ġ 8 ĊĠĠĠĠĠĠĠ Ġvar Ġtes Double Result Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġvar Ġrule Round Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġvar Ġis Decimal Ġ= Ġfalse ĊĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , j ) Ġin Ġinput String . with Index ()){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i -( dec Digit + 1 ) Ġ>= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( input String [ i -( dec Digit + 1 )]. toString () Ġ== Ġ". "){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( j . toString (). toInt () Ġ> Ġ 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Round Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add (( input String [ i - 1 ]). toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtemp Ġ= Ġtes Double Result . join ToString ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ" 0 ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( dec Digit Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( n Ġin Ġ 0 Ġuntil Ġdec Digit ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġif ( n Ġ== Ġdec Digit - 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx = 1 . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( n Ġin Ġ 0 Ġuntil Ġdec Digit ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( n Ġ!= Ġdec Digit - 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġ( temp . toDouble () Ġ+ Ġx . toDouble ()). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( n Ġin Ġtemp ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add ( n . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( j . toString (). toInt () Ġ< Ġ 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Round Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add ( input String [ i - 1 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( j . toString (). toInt () Ġ== Ġ 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( input String [ i - 1 ]. toString (). toInt () Ġin ĠlistOf ( 1 , Ġ 3 , Ġ 5 , Ġ 7 , Ġ 9 )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Round Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add (( input String [ i - 1 ]+ 1 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Round Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add ( input String [ i - 1 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! rule Round Ġ&& Ġi - 1 Ġ>= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add ( input String [ i - 1 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i + 1 Ġ== Ġinput String . length ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtes Double Result . add ( j . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif ( j . toString () Ġ== Ġ". "){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Decimal Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput String ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfirst Move (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Str : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Loop Str : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġtemp Index 1 Ġ= Ġscan Activity . temp Index 1 ĊĠĠĠĠĠĠĠ Ġval Ġtemp Index 2 Ġ= Ġscan Activity . temp Index 2 ĊĊĠĠĠĠĠĠĠ Ġscan Activity . scan String ( input String ) ĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġif ( scan Activity . is Pow ){ to Pow ( input String )} else { input String } ĊĠĠĠĠĠĠĠ Ġval Ġinput List : ĠMutable List < String > Ġ= Ġscan Activity . getInput List ( input String ) ĊĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġinput List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput String Ġ+= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscan Activity . scan String ( input String ) ĊĠĠĠĠĠĠĠ Ġtemp Index 1 . sort Descending () ĊĊĊĠĠĠĠĠĠĠ Ġ// j ika Ġb ent uk nya Ġ( ?) ĊĠĠĠĠĠĠĠ Ġfor (( i , j ) Ġin Ġtemp Index 1 . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( j + 1 Ġ== Ġtemp Index 2 [ i ]- 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( m Ġin Ġj + 1 Ġuntil Ġtemp Index 2 [ i ]){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Loop Str Ġ= Ġbasic Operation ( input List [ m ]). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput List [ m ] Ġ= Ġtemp Loop Str ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput List . remove At ( m + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput List . remove At ( m - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġinput List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput String Ġ+= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscan Activity . scan String ( input String ) ĊĠĠĠĠĠĠĠ Ġtemp Index 1 . sort Descending () ĊĊĠĠĠĠĠĠĠ Ġif ( temp Index 1 . isNotEmpty () Ġ&& Ġtemp Index 2 . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Index 1 [ 0 ]+ 1 Ġ< Ġtemp Index 2 [ 0 ]- 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Str Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Index Delete Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( m Ġin Ġtemp Index 1 [ 0 ]+ 1 Ġuntil Ġtemp Index 2 [ 0 ]){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Str Ġ+= Ġinput List [ m ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Loop Str Ġ= Ġbasic Operation ( temp Str ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( temp Loop Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( temp Index 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput List [ temp Index 1 [ 0 ]] Ġ= Ġtemp Loop Str ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġtemp Index 1 [ 0 ]+ 1 .. temp Index 2 [ 0 ]){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Index Delete . add ( m ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Index Delete . sort Descending () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( m Ġin Ġtemp Index Delete ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput List . remove At ( m ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinput String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġinput List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput String Ġ+= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscan Activity . scan String ( input String ) ĊĠĠĠĠĠĠĠ Ġtemp Index 1 . sort Descending () ĊĊĊĠĠĠĠĠĠĠ Ġtemp Str Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġinput List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Str Ġ+= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtemp Str ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbasic Operation ( input String : ĠString ): ĠDouble ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// finding Ġ- ? x - ? Ġor Ġ? x - ? ĊĠĠĠĠĠĠĠ Ġ// initialize ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Scan Ġ= Ġscan Activity . getInput List ( input String ) ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Tot Ġ= Ġscan Activity . getInput List ( input String ) ĊĊĠĠĠĠĠĠĠ Ġfor (( i , j ) Ġin Ġtemp Scan . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i - 1 Ġ>= Ġ 0 Ġ&& Ġj Ġ== Ġ"- "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp Scan [ i - 1 ] Ġin ĠlistOf ("+ "," - "," / "," x ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// unt uk Ġminus Ġk et emu Ġk ali Ġdan Ġbag i ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp Scan [ i - 1 ] Ġ== Ġ" x " Ġ|| Ġtemp Scan [ i - 1 ] Ġ== Ġ"/ "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i - 3 Ġ>= 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp Scan [ i - 3 ] Ġ== Ġ"- "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i - 3 ] Ġ= Ġ" +" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// unt uk Ġminus Ġk et emu Ġplus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp Scan [ i - 1 ] Ġ== Ġ"+ "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . add ( i ," 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// unt uk Ġminus Ġk et emu Ġminus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp Scan [ i - 1 ] Ġ== Ġ"- "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i - 1 ] Ġ= Ġ" +" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i Ġ== Ġ 0 Ġ&& Ġj Ġin ĠlistOf ("+ "," - "," / "," x ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . add ( 0 ," 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtemp Scan Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġtemp Tot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemp Tot Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġtemp Scan ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// priority Ġtimes && divide ĠOperation ĊĠĠĠĠĠĠĠ Ġvar Ġfinal Result : ĠDouble ? ĊĠĠĠĠĠĠĠ Ġvar Ġrem Index Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġfor (( i , v ) Ġin Ġtemp Tot . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i - 1 Ġ>= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Tot [ i - 1 ] Ġ== Ġ" x ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Result Ġ= Ġtemp Tot [ i - 2 ]. toDouble () Ġ* Ġv . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i ] Ġ= Ġfinal Result . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan [ i ] Ġ= Ġfinal Result . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( temp Tot [ i - 1 ] Ġ== Ġ"/") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Result Ġ= Ġtemp Tot [ i - 2 ]. toDouble () Ġ/ Ġv . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i ] Ġ= Ġfinal Result . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan [ i ] Ġ= Ġfinal Result . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( rem Index . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . sort Descending () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġrem Index ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtemp Tot Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġtemp Scan ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Priority ĠPL US Ġ&& ĠMIN US ĊĠĠĠĠĠĠĠ Ġnull . also Ġ{ Ġfinal Result Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġrem Index Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġfor (( i , v ) Ġin Ġtemp Tot . with Index ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i - 1 Ġ>= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Tot [ i - 1 ] Ġ== Ġ"+ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Result Ġ= Ġtemp Tot [ i - 2 ]. toDouble () Ġ+ Ġv . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i ] Ġ= Ġfinal Result . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan [ i ] Ġ= Ġfinal Result . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( temp Tot [ i - 1 ] Ġ== Ġ"- ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temp Tot [ i - 2 ]. isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i - 2 ] Ġ= Ġ 0 . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Result Ġ= Ġtemp Tot [ i - 2 ]. toDouble () Ġ- Ġv . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot [ i ] Ġ= Ġfinal Result . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan [ i ] Ġ= Ġfinal Result . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . add ( i - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( rem Index . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrem Index . sort Descending () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġrem Index ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Scan . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemp Tot Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġtemp Scan ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Tot . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfinal Result Ġ= Ġtemp Tot [ 0 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġreturn Ġfinal Result ĊĠĠĠ Ġ} ĊĊ Ċ }