package Ġhome work . home work 1 Ċ Ċ import Ġlibraries . per formed Command Storage . AddTo Beginning Ċ import Ġlibraries . per formed Command Storage . AddTo End Ċ import Ġlibraries . per formed Command Storage . Move Ċ import Ġlibraries . per formed Command Storage . Move In Empty Storage Exception Ċ import Ġlibraries . per formed Command Storage . Move With Illegal Arguments Exception Ċ import Ġlibraries . per formed Command Storage . Performed Command Storage Ċ import Ġlibraries . per formed Command Storage . Undo In Empty Storage Exception Ċ Ċ fun ĠPer formed Command Storage . addTo End ( added Number : ĠInt ) Ġ{ ĊĠĠĠ Ġexecute ( AddTo End ( added Number )) Ċ } Ċ Ċ fun ĠPer formed Command Storage . addTo Beginning ( added Number : ĠInt ) Ġ{ ĊĠĠĠ Ġexecute ( AddTo Beginning ( added Number )) Ċ } Ċ Ċ fun ĠPer formed Command Storage . move ( origin : ĠInt , Ġdestination : ĠInt ) Ġ{ ĊĠĠĠ Ġexecute ( Move ( origin , Ġdestination )) Ċ } Ċ Ċ fun ĠnumberOf Arguments Is Correct ( numberOf Arguments : ĠInt , Ġcommand : ĠPossible Commands Info ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( numberOf Arguments Ġ< Ġcommand . numberOf Arguments ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Arguments Ġneeded : Ġ${ command . numberOf Arguments }") ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ fun ĠPer formed Command Storage . process Command ( command : ĠPossible Commands Info ?, Ġinput Split ted : ĠList < String >) Ġ{ ĊĠĠĠ Ġval ĠnumberOf Arguments Ġ= Ġinput Split ted . size Ġ- Ġ 1 ĊĊĠĠĠ Ġif Ġ( command Ġ!= Ġnull Ġ&& Ġ! numberOf Arguments Is Correct ( numberOf Arguments , Ġcommand )) ĊĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠ Ġwhen Ġ( command ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . EMPTY Ġ-> Ġprintln (" Null Ġinput . ĠTry Ġagain :") ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . ABORT Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . UN DO Ġ-> Ġthis . undo () ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . PRINT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist For Print Ġ= Ġthis . processed List . join ToString (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("\ n The Ġprocessed ĠInt Ġlist :\ n $ list For Print ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . ADD _ TO _ END Ġ-> Ġthis . addTo End ( input Split ted [ 1 ]. toInt ()) ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . ADD _ TO _ BEGIN NING Ġ-> Ġthis . addTo Beginning ( input Split ted [ 1 ]. toInt ()) ĊĠĠĠĠĠĠĠ ĠPossible Commands Info . MOVE Ġ-> Ġthis . move ( input Split ted [ 1 ]. toInt (), Ġinput Split ted [ 2 ]. toInt ()) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġprintln (" Unknown Ġcommand .") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġcommand Storage Ġ= ĠPer formed Command Storage () ĊĠĠĠ Ġvar Ġcurrent Command : ĠPossible Commands Info ? Ġ= ĠPossible Commands Info . EMPTY ĊĊĠĠĠ ĠPossible Commands Info . values (). forEach Ġ{ Ġprintln ( it . help ) Ġ} ĊĠĠĠ Ġwhile Ġ( current Command Ġ!= ĠPossible Commands Info . ABORT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Enter Ġyour Ġcommand :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput : ĠString ? Ġ= Ġread Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Null Ġinput . ĠPlease , Ġtry Ġagain :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Split ted Ġ= Ġinput . split (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPossible Commands Info . values (). find Ġ{ Ġit . string Command Ġ== Ġinput Split ted [ 0 ] Ġ}. also Ġ{ Ġcurrent Command Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Storage . process Command ( current Command , Ġinput Split ted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception Format : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( exception Format . message Ġ+ Ġ" ĠCommand 's Ġarguments Ġmust Ġbe Ġintegers .") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception Undo : ĠUndo In Empty Storage Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( exception Undo . message Ġ+ Ġ" ĠExecute Ġsome Ġcommands Ġat Ġfirst .") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception Empty Move : ĠMove In Empty Storage Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( exception Empty Move . message Ġ+ Ġ" ĠAdd Ġsome Ġelements Ġat Ġfirst .") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception Illegal Position Move : ĠMove With Illegal Arguments Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( exception Illegal Position Move . message Ġ+ Ġ" ĠPlease , Ġmove Ġwithin Ġbounds .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ