package Ġclasses Ċ Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠDis charge Center ( num Dis charge Port : ĠInt , Ġw are House : ĠW arehouse ) Ġ{ ĊĠĠĠ Ġvar Ġdis charge Ports Ġ= Ġmutable ListOf < Dis charge Port >() Ġ// ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¿ Ð¾ÑĢ ÑĤ Ð¾Ð² ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÐ¸ ĊĠĠĠ Ġvar Ġwait Tr uck Ġ= Ġmutable ListOf < Tr uck >() Ġ// ĠÐ¾ Ñĩ ÐµÑĢ ÐµÐ´ ÑĮ ĠÐ³ ÑĢÑĥÐ· Ð¾Ð² Ð¸Ðº Ð¾Ð² ĠÐº ĠÐ¿ Ð¾ÑĢ ÑĤ Ð°Ð¼ ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÐ¸ ĊĠĠĠ Ġval Ġmy Num Dis charge Port Ġ= Ġnum Dis charge Port Ġ// Ðº Ð¾Ð» Ð¸Ñĩ ÐµÑģÑĤÐ²Ð¾ ĠÐ¿ Ð¾ÑĢ ÑĤ Ð¾Ð² ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÐ¸ ĊĠĠĠ Ġvar Ġend Generated Tr uck Ġ= Ġfalse Ġ// ÑĦ Ð» Ð°Ð³ ĠÐ¾ ĠÑĤ Ð¾Ð¼ , ĠÑĩÑĤÐ¾ ĠÐ± Ð¾Ð»ÑĮ ÑĪÐµ ĠÐ½Ð¾Ð² ÑĭÐµ ĠÐ³ ÑĢÑĥÐ· Ð¾Ð² Ð¸ ÐºÐ¸ ĠÐ½Ðµ ĠÐ¿Ð¾ Ñı Ð² ÑıÑĤ ÑģÑı ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠÐ¸ Ð½Ð¸ ÑĨÐ¸ Ð°Ð»Ð¸Ð· Ð°ÑĨÐ¸Ñı ĠÐ¿ Ð¾ÑĢ ÑĤ Ð¾Ð² ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÐ¸ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. my Num Dis charge Port ) Ġdis charge Ports . add ( Dis charge Port ( ware House )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ÑĦ ÑĥÐ½Ðº ÑĨÐ¸Ñı ĠÐ·Ð°Ð¿ Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÐ¿ Ð¾ÑĢ ÑĤ Ð¾Ð² ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÐ¸ ĊĠĠĠ Ġsuspend Ġfun Ġload Tr uck To Dis charge Port () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(( end Generated Tr uck Ġ== Ġfalse ) Ġ|| Ġ( wait Tr uck . size Ġ!= Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// println (" work Ġwhile Ġload Tr uck To Dis charge Port Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Port Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wait Tr uck . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. my Num Dis charge Port Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dis charge Ports [ i ]. isEmpty ) Ġnum Port Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ÐµÑģ Ð»Ð¸ ĠÐµ ÑģÑĤÑĮ ĠÑģÐ² Ð¾Ð± Ð¾Ð´ Ð½ÑĭÐ¹ ĠÐ¿ Ð¾ÑĢ ÑĤ , ĠÑĤÐ¾ ĠÐ¾ÑĤ Ð¿ÑĢÐ°Ð² Ð»Ñı ÐµÐ¼ Ġtr uck ĠÐ½Ð° ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÑĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Port Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtr Ġ= Ġwait Tr uck . remove At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ Ġdis charge Ports [ num Port ]. dis charge Tr uck ( tr ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) Ġ// ĠÑĥ ÑģÑĤÐ°Ð½ Ð°Ð² Ð»Ð¸ Ð² Ð°ÐµÐ¼ ĠÐ·Ð°Ð´ ÐµÑĢÐ¶ ÐºÑĥ ĠÐ² Ġ 1 ĠÐ¼ Ð¸Ð½ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Wait Tr uck ( tr : ĠTr uck ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwait Tr uck . add ( tr ) ĊĠĠĠĠĠĠĠ Ġprintln (" Ðĵ ÑĢÑĥÐ· Ð¾Ð² Ð¸Ðº ĠÑģ ĠÐ½ Ð¾Ð¼ ÐµÑĢ Ð¾Ð¼ Ġ${ tr . number Track } ĠÐ¿ Ð¾ÑģÑĤÐ°Ð² Ð»ÐµÐ½ ĠÐ² ĠÐ¾ Ñĩ ÐµÑĢ ÐµÐ´ ÑĮ ĠÐ½Ð° ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÑĥ ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠDis charge Port ( ware House : ĠW arehouse ) Ġ{ ĊĠĠĠ Ġvar ĠisEmpty Ġ= Ġtrue ĊĠĠĠ Ġvar Ġw H Ġ= Ġw are House ĊĠĠĠ Ġsuspend Ġfun Ġdis charge Tr uck ( tr : ĠTr uck ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpr : ĠProduct ĊĠĠĠĠĠĠĠ Ġvar Ġdis charge Weight Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprintln (" Ðĵ ÑĢÑĥÐ· Ð¾Ð² Ð¸Ðº ĠÑģ ĠÐ½ Ð¾Ð¼ ÐµÑĢ Ð¾Ð¼ Ġ${ tr . number Track } ĠÐ¿ Ð¾ÑģÑĤÐ°Ð² Ð»ÐµÐ½ ĠÐ² ĠÐ¿ Ð¾ÑĢ ÑĤ ĠÑĢÐ°Ð· Ð³ ÑĢÑĥÐ· ÐºÐ¸ ") ĊĠĠĠĠĠĠĠ ĠisEmpty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! tr . products . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpr Ġ= Ġtr . products . pop () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis charge Weight Ġ+= Ġpr . weight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay (( pr . time To Move Ġ* Ġ 1 0 0 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw H . add Product ( pr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Ðł Ð°Ð· Ð³ ÑĢÑĥ Ð¶ ÐµÐ½Ð° ĠÐ¼ Ð° ÑĪÐ¸ Ð½Ð° ĠÑģ ĠÐ½ Ð¾Ð¼ ÐµÑĢ Ð¾Ð¼ Ġ${ tr . number Track } ĠÐ¸ ĠÐ² ÐµÑģ Ð¾Ð¼ Ġ$ dis charge Weight ") ĊĠĠĠĠĠĠĠ ĠisEmpty Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ }