package Ġorg . ste ven low es . tools . lm cem ulator Ċ Ċ import Ġjava . io . File Ċ import Ġkotlin . coroutines . experimental . build Sequence Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġmail boxes Ġ= ĠFile (" l mc . l mc ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Lines ()[ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. split ("% ")[ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop Last ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toInt () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to IntArray () ĊĊĠĠĠ Ġval Ġtest Iterator Ġ= ĠTest Iterator () ĊĊĠĠĠ Ġval Ġem ulators Ġ= Ġ( 1 .. Runtime . get Runtime (). available Processors ()). map Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ ĠEm ulator ( mail boxes , Ġtest Iterator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġthreads Ġ= Ġem ulators . map Ġ{ ĠThread ( it ) Ġ} ĊĊĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠ Ġthreads . forEach Ġ{ Ġit . start () Ġ} ĊĠĠĠĠĠĠĠ Ġthreads . forEach Ġ{ Ġit . join () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġ( tests , Ġticks ) Ġ= Ġem ulators . fold ( 0 L Ġto Ġ 0 L ) Ġ{ Ġ( tests , Ġticks ) Ġ, Ġemulator Ġ-> ĊĠĠĠĠĠĠĠ Ġ( tests Ġ+ Ġemulator . total Tests ) Ġto Ġ( ticks Ġ+ Ġemulator . total Ticks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprintln ("$ tests Ġtests Ġcompleted ") ĊĠĠĠ Ġprintln ("${ ticks / tests } Ġfetch Ġexecute Ġcycles Ġaverage ") ĊĠĠĠ Ġprintln ("${ time . toDouble ()/ 1 0 0 0 } Ġseconds Ġtotal Ġruntime ") Ċ }