package Ġcom . cri st ian ove c chi . mik ro kan on Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . Clip Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . En semble Part Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . AIM US IC . Ins ie me Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . locale . getR ib att uto Symbols Ċ import Ġcom . cri st ian ove c chi . mik ro kan on . locale . row Forms Map Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . Global Scope . coroutine Context Ċ import Ġjava . lang . StringBuilder Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . ExecutorService Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjava . util . stream . Stream Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . coroutines . Coroutine Context Ċ import Ġkotlin . math . absolute Value Ċ Ċ fun Ġtr it one Substitution ( abs Pitch : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( abs Pitch ) Ġ{ ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ 7 ĊĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ 9 ĊĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ 1 1 ĊĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠ 9 Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠ 1 1 Ġ-> Ġ 5 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġabs Pitch ĊĠĠĠ Ġ} Ċ } Ċ fun Ġtr it one Substitution On Interval Set ( interval Set : ĠList < Int >): ĠList < Int > Ġ{ ĊĊĠĠĠ Ġinterval Set . to Mutable List (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( contains All ( listOf ( 1 , Ġ 1 1 , Ġ 5 , Ġ 7 ))) Ġreturn Ġinterval Set ĊĊĠĠĠĠĠĠĠ Ġif Ġ( contains All ( listOf ( 1 , Ġ 1 1 ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All ( listOf ( 1 , Ġ 1 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġalso Ġ{ Ġadd All ( listOf ( 5 , Ġ 7 )) Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( contains All ( listOf ( 5 , Ġ 7 ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All ( listOf ( 5 , Ġ 7 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġalso Ġ{ Ġadd All ( listOf ( 1 , Ġ 1 1 )) Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġinterval Set Ċ } ĊĊĊ Ċ fun Ġconvert Gl iss ando Flags ( gl iss ando Flags : ĠInt ): ĠList < Int >{ ĊĠĠĠ Ġval Ġintervals Ġ= ĠlistOf ( Ġ 1 , Ġ- 1 , Ġ 2 , Ġ- 2 , Ġ 3 , Ġ- 3 , Ġ 4 ,- 4 , Ġ 5 ,- 5 , 6 ,- 6 , 7 ,- 7 , 8 ,- 8 , 9 ,- 9 , 1 0 ,- 1 0 , 1 1 ,- 1 1 , 1 2 ,- 1 2 ) ĊĠĠĠ Ġreturn Ġconvert Flags To Ints ( gl iss ando Flags ). map Ġ{ Ġintervals [ it - 1 ] Ġ} Ċ } Ċ fun Ġconvert Ints To Flags ( ints : ĠSet < Int >): ĠInt { ĊĠĠĠ Ġvar Ġflags Ġ= Ġ 0 ĊĠĠĠ Ġints . forEach { Ġflags Ġ= Ġ 1 Ġshl Ġit Ġor Ġflags Ġ} ĊĠĠĠ Ġreturn Ġflags Ċ } Ċ fun Ġconvert Flags To Ints ( flags : ĠInt ): ĠSet < Int >{ ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable Set Of < Int >() ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( 1 Ġshl Ġi Ġand Ġflags Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult . toSet () Ċ } Ċ fun ĠArrayList < Clip >. toString All ( notes Names : ĠList < String >, Ġz odi ac Sign s : ĠBoolean , Ġemoji : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( z odi ac Sign s ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . map Ġ{ Ġclip Ġ-> Ġclip . find Z odi ac Sign ( emoji ) Ġ}. reduce Ġ{ Ġacc , Ġstring Ġ-> Ġ"$ acc Ġ$ string " Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . map Ġ{ Ġclip Ġ-> Ġclip . find Text ( notes Names Ġ= Ġnotes Names ) Ġ}. reduce Ġ{ Ġacc , Ġstring Ġ-> Ġ"$ acc Ġ$ string " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ" empty ĠSequence " ĊĠĠĠ Ġ} Ċ } Ċ fun ĠArrayList < Clip >. to Abs P itches (): ĠList < Int > Ġ{ ĊĠĠĠ Ġreturn Ġthis . map Ġ{ Ġit . abstract Note Ġ} Ċ } Ċ fun ĠList < Int >. to Sequence (): ĠArrayList < Clip >{ ĊĠĠĠ Ġreturn ĠArrayList < Clip >( Ġthis . map Indexed { index , Ġpitch Ġ-> ĠClip ( index , pitch )} Ġ) Ġ// Ġnot Ġcomplete Ċ } Ċ fun Ġ< E > ĠList < E >. repeat ( n Times : ĠInt ): ĠList < E > Ġ{ ĊĠĠĠ Ġif Ġ( n Times Ġ< Ġ 2 ) Ġreturn Ġthis ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < E >() ĊĠĠĠ Ġ( 0 Ġuntil Ġn Times ). forEach Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġresult . addAll ( this ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult . toList () Ċ } Ċ fun ĠMutable List < Int >. getInt OrEmpty Value ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġif ( index Ġ< Ġthis . size ) Ġthis [ index ] Ġelse Ġ- 1 Ċ } Ċ Ċ operator Ġfun ĠInt Range . range To ( next Range : ĠInt Range ) Ġ= ĠInt Range ( this . first , Ġnext Range . last ) Ċ Ċ fun ĠInt Range . extract From Middle ( half Range : ĠInt ): ĠInt Range Ġ{ ĊĠĠĠ Ġval Ġmiddle Ġ Ġ= Ġ( this . first Ġ+ Ġthis . last ) Ġ/ Ġ 2 ĊĠĠĠ Ġreturn ĠInt Range ( middle Ġ- Ġhalf Range , Ġmiddle Ġ+ Ġhalf Range ) Ċ } ĊĊĠĠĠ Ġfun Ġcreate Interval Set From Flags ( flags : ĠInt ): ĠList < Int >{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 1 Ġ> Ġ 0 ) Ġresult . addAll ( listOf ( 1 , 1 1 )) ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 0 b 1 0 Ġ> Ġ 0 ) Ġresult . addAll ( listOf ( 2 , 1 0 )) ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 0 b 1 0 0 Ġ> Ġ 0 ) Ġresult . addAll ( listOf ( 3 , 9 )) ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 0 b 1 0 0 0 Ġ> Ġ 0 ) Ġresult . addAll ( listOf ( 4 , 8 )) ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 0 b 1 0 0 0 0 Ġ> Ġ 0 ) Ġresult . addAll ( listOf ( 5 , 7 )) ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 0 b 1 0 0 0 0 0 Ġ> Ġ 0 ) Ġresult . add ( 6 ) ĊĠĠĠĠĠĠĠ Ġif ( flags Ġand Ġ 0 b 1 0 0 0 0 0 0 Ġ> Ġ 0 ) Ġresult . add ( 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Flags From Interval Set ( interval Set : ĠList < Int >): ĠInt { ĊĠĠĠĠĠĠĠ Ġvar Ġflags Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġinterval Set . apply { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains All ( listOf ( 1 , 1 1 ))) Ġflags Ġ= Ġflags Ġor Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains All ( listOf ( 2 , 1 0 ))) Ġflags Ġ= Ġflags Ġor Ġ 0 b 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains All ( listOf ( 3 , 9 ))) Ġflags Ġ= Ġflags Ġor Ġ 0 b 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains All ( listOf ( 4 , 8 ))) Ġflags Ġ= Ġflags Ġor Ġ 0 b 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains All ( listOf ( 5 , 7 ))) Ġflags Ġ= Ġflags Ġor Ġ 0 b 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains ( 6 )) flags Ġ= Ġflags Ġor Ġ 0 b 1 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . contains ( 0 )) Ġflags Ġ= Ġflags Ġor Ġ 0 b 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġflags ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġimplement Ġin ĠCounter point Interpreter ĊĠĠĠ Ġsuspend Ġfun Ġ< A , ĠB > ĠIterable < A >. p map ( f : Ġsuspend Ġ( A ) Ġ-> ĠB ): ĠList < B > Ġ= Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Ġ{ Ġasync () Ġ{ Ġf ( it ) Ġ} Ġ}. await All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" IMP LICIT _ CAST _ TO _ ANY ", Ġ" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< A , ĠB > ĠIterable < A >. map If ( condition : ĠBoolean , Ġf : Ġ( A ) Ġ-> ĠB ): ĠList < B > Ġ= ĊĠĠĠĠĠĠĠ Ġmap Ġ{ Ġ( if ( condition ) Ġf ( it ) Ġelse Ġit ) Ġas ĠB Ġ} ĊĊĠĠĠ Ġ@ Suppress (" IMP LICIT _ CAST _ TO _ ANY ", Ġ" UN CHECK ED _ CAST ") ĊĠĠĠ Ġsuspend Ġfun Ġ< A , ĠB > ĠIterable < A >. p map If ( condition : ĠBoolean , Ġf : Ġsuspend Ġ( A ) Ġ-> ĠB ): ĠList < B > Ġ= Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Ġ{ Ġasync {( if Ġ( condition ) Ġf ( it ) Ġelse Ġit ) Ġas ĠB } Ġ}. await All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T , ĠR > ĠIterable < T >. t map ( ĊĠĠĠĠĠĠĠ Ġnum Threads : ĠInt Ġ= ĠRuntime . get Runtime (). available Processors () Ġ- Ġ 2 , ĊĠĠĠĠĠĠĠ Ġexec : ĠExecutor Service Ġ= ĠExec utors . new Fixed ThreadPool ( num Threads ), ĊĠĠĠĠĠĠĠ Ġtransform : Ġ( T ) Ġ-> ĠR ): ĠList < R > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġdefault Ġsize Ġis Ġjust Ġan Ġin lined Ġversion Ġof Ġkotlin . collections . collection Size OrDefault ĊĠĠĠĠĠĠĠ Ġval Ġdefault Size Ġ= Ġif Ġ( this Ġis ĠCollection <* >) Ġthis . size Ġelse Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġval Ġdestination Ġ= ĠCollections . synchronized List ( ArrayList < R >( default Size )) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexec . submit Ġ{ Ġdestination . add ( transform ( item )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġexec . shutdown () ĊĠĠĠĠĠĠĠ Ġexec . await Termination ( 1 , ĠTimeUnit . DAYS ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠArrayList < R >( destination ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInt . to Dp (): ĠInt Ġ= Ġ( this Ġ/ ĠResources . getSystem (). display Metrics . density ). toInt () ĊĠĠĠ Ġfun ĠInt . to Px (): ĠInt Ġ= Ġ( this Ġ* ĠResources . getSystem (). display Metrics . density ). toInt () ĊĊĠĠĠ Ġfun ĠFloat . project To ( goal : ĠFloat , Ġstep : ĠFloat ): ĠList < Float >{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( this ). project To ( goal , Ġstep ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun ĠList < Float >. project To ( goal : ĠFloat , Ġstep : ĠFloat , Ġdelt as : ĠMutable List < Long >? Ġ= Ġnull , Ġsection Duration : ĠLong Ġ= Ġ 0 L ): ĠList < Float >{ ĊĠĠĠĠĠĠĠ Ġval Ġabsolute Goal Ġ= Ġgoal . absolute Value ĊĠĠĠĠĠĠĠ Ġif ( this . isEmpty ()) Ġreturn ĠlistOf ( absolute Goal ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġthis . to Mutable List () ĊĠĠĠĠĠĠĠ Ġvar ĠnewValue Ġ= Ġthis . last () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ== Ġabsolute Goal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġ( delt as . isNotEmpty () Ġ&& Ġdelt as . last () Ġ== Ġ- 1 L ) Ġdelt as . remove At ( delt as . size - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelt as . add ( section Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( absolute Goal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( goal Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ result . size - 1 ] Ġ= Ġabsolute Goal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// delt as ?. add (- 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif ( newValue Ġ> Ġabsolute Goal ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewValue Ġ-= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( newValue Ġ> Ġabsolute Goal ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( newValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewValue Ġ-= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( absolute Goal ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewValue Ġ+= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( newValue Ġ< Ġabsolute Goal ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( newValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewValue Ġ+= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( absolute Goal ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdelt as ?. addAll ( section Duration . divide Distribut ing Rest ( count )) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . toList () ĊĠĠĠ Ġ} Ċ fun Ġalter ate B pm ( bpm Values : ĠList < Float >, Ġstep : Float ): ĠList < Float >{ ĊĠĠĠ Ġreturn Ġb pm Values . fold ( listOf ()) Ġ{ acc , Ġnext B pm Ġ-> Ġacc . project To ( next B pm , Ġstep )} Ċ } Ċ fun Ġalter ate B pm With Distribution ( bpm Values : ĠList < Float >, Ġstep : Float , Ġtotal Duration : ĠLong ): ĠPair < List < Float >, ĠList < Long >> { ĊĠĠĠ Ġ// println (" values : Ġ$ bpm Values ") ĊĠĠĠ Ġif ( bpm Values . size Ġ== Ġ 1 ){ ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( listOf ( bpm Values [ 0 ], 0 f ), ĠlistOf ( total Duration )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsection Duration Ġ= Ġtotal Duration Ġ/ Ġ( bpm Values . count { it Ġ>= Ġ 0 } Ġ- Ġ 1 ) ĊĠĠĠ Ġ// println (" total : Ġ$ total Duration Ġ| Ġsection : Ġ$ section Duration ") ĊĠĠĠ Ġval Ġdelt as : ĠMutable List < Long > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġval Ġbp ms : ĠList < Float > Ġ= Ġb pm Values . fold ( listOf ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc , Ġnext B pm Ġ-> Ġacc . project To ( next B pm , Ġstep , Ġdelt as , Ġsection Duration )} ĊĠĠĠ Ġdelt as . add ( 0 ) Ġ// Ġto Ġset Ġthe Ġsame Ġl enght Ġ- Ġlast Ġvalue Ġis Ġunused ĊĠĠĠ Ġreturn ĠPair ( bp ms , Ġdelt as . toList () Ġ) Ċ } ĊĊĊ Ċ fun ĠString . extract Ints From Csv (): ĠList < Int >{ ĊĠĠĠ Ġ// if ( this . isEmpty () Ġ) Ġreturn ĠlistOf ( 0 ) ĊĠĠĠ Ġreturn Ġthis . split (',' ). map NotNull Ġ{ Ġit . toInt ()} Ċ } Ċ fun ĠString . extract Int Pairs From Csv (): ĠList < Pair < Int , Int >> { ĊĠĠĠ Ġval Ġpairs Ġ= Ġthis . split (',') ĊĠĠĠ Ġreturn Ġpairs . map { Ġval Ġsplit Ġ= Ġit . split ('| '); ĠPair ( split [ 0 ]. toInt (), Ġsplit [ 1 ]. toInt ()) } Ċ } Ċ fun Ġ ĠMutable List < Pair < Int , Int >> . toInt Pairs String (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis . join ToString (",") Ġ{ Ġ"${ it . first }| ${ it . second }" Ġ} Ċ } Ċ fun ĠPair < Int , ĠInt >. describe Single B pm ( row Forms Map : ĠMap < Int , ĠString >): ĠString Ġ{ ĊĠĠĠ Ġval Ġopen Bracket Ġ= Ġ( if ( this . first Ġ< Ġ 0 ) Ġ"(" Ġelse Ġ"" Ġ) ĊĠĠĠ Ġval Ġcounter point Number Ġ= Ġ( if Ġ( this . first . absolute Value Ġ== Ġ 1 ) Ġ"" Ġelse Ġ"${ this . first . absolute Value - 1 }") ĊĠĠĠ Ġval Ġrow Form Ġ= Ġrow Forms Map [ this . second . absolute Value ] ĊĠĠĠ Ġval Ġclose Bracket Ġ= Ġ( if ( this . first Ġ< Ġ 0 ) Ġ")" Ġelse Ġ"") ĊĠĠĠ Ġval Ġseparator Ġ= Ġ( if ( this . second Ġ< Ġ 0 )" Ġ| " Ġelse Ġ"") ĊĠĠĠ Ġreturn Ġopen Bracket Ġ+ Ġcounter point Number Ġ+ Ġrow Form Ġ+ close Bracket Ġ+ Ġseparator Ċ } Ċ fun ĠString . extract Float s From Csv (): ĠList < Float >{ ĊĠĠĠ Ġreturn Ġthis . split (',' ). map NotNull Ġ{ Ġit . toFloat () Ġ} Ċ } Ċ fun ĠString . describe (): ĠString Ġ{ ĊĠĠĠ Ġval Ġints Ġ= Ġthis . extract Ints From Csv () ĊĠĠĠ Ġreturn Ġints . fold Indexed ("") Ġ{ Ġindex , Ġacc , Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ== Ġ 0 Ġ-> Ġacc Ġ+ Ġi . absolute Value . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ< Ġ 0 Ġ-> Ġ"$ acc Ġ| Ġ${ i . absolute Value }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ index Ġ- Ġ 1 ]. absolute Value Ġ> Ġi . absolute Value Ġ-> Ġ"$ acc Ġâ ŀĺ Ġ$ i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ index Ġ- Ġ 1 ]. absolute Value Ġ< Ġi . absolute Value Ġ-> Ġ"$ acc Ġâŀ ļ Ġ$ i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ index Ġ- Ġ 1 ]. absolute Value Ġ== Ġi . absolute Value Ġ-> Ġ"$ acc Ġ- Ġ$ i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġacc Ġ+ Ġi . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ fun ĠString . describe For Art ic ulation ( leg ato Map : ĠMap < Int , ĠString >): ĠString Ġ{ ĊĠĠĠ Ġval Ġ( ints , Ġri bs ) Ġ= Ġthis . extract Int Pairs From Csv (). unzip () ĊĠĠĠ Ġval Ġ rib Symbols Ġ= Ġget R ib att uto Symbols () ĊĠĠĠ Ġreturn Ġints . fold Indexed ("") Ġ{ Ġindex , Ġacc , Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġleg ato Map [ i . absolute Value Ġ- 1 ] !! ĊĠĠĠĠĠĠĠ Ġval Ġ rib att uto Ġ= Ġ rib Symbols [ ri bs [ index ]] ĊĠĠĠĠĠĠĠ Ġ// val Ġprevious R ib att uto Ġ= Ġif ( index Ġ== Ġ 0 ) Ġ rib att uto Ġelse Ġ rib Symbols [ ri bs [ index - 1 ]] ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ== Ġ 0 Ġ-> Ġacc Ġ+ Ġname Ġ+ Ġ rib att uto ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ< Ġ 0 Ġ-> Ġ"$ acc Ġ| Ġ$ name $ rib att uto " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ index Ġ- Ġ 1 ]. absolute Value Ġ> Ġi . absolute Value Ġ-> Ġ"$ acc Ġâ ŀĺ Ġ$ name $ rib att uto " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ index Ġ- Ġ 1 ]. absolute Value Ġ< Ġi . absolute Value Ġ-> Ġ"$ acc Ġâŀ ļ Ġ$ name $ rib att uto " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ index Ġ- Ġ 1 ]. absolute Value Ġ== Ġi . absolute Value Ġ-> Ġ"$ acc Ġ- Ġ$ name $ rib att uto " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġacc Ġ+ Ġi . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ fun ĠString . describe For Dynamic ( map : ĠMap < Float , ĠString >, Ġascending Symbol : ĠString , Ġdescending Symbol : ĠString ) Ġ: ĠString Ġ{ ĊĠĠĠ Ġval Ġfloats Ġ= Ġthis . extract Float s From Csv () ĊĠĠĠ Ġreturn Ġfloats . fold Indexed ("") Ġ{ Ġindex , Ġacc , Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ== Ġ 0 Ġ-> Ġacc Ġ+ Ġmap [ i . absolute Value ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ< Ġ 0 Ġ-> Ġ"$ acc Ġ| Ġ${ map [ i . absolute Value ] !! }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloats [ index Ġ- Ġ 1 ]. absolute Value Ġ> Ġi . absolute Value Ġ-> Ġ"$ acc Ġ$ desc ending Symbol Ġ${ map [ i ] !! }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloats [ index Ġ- Ġ 1 ]. absolute Value Ġ< Ġi . absolute Value Ġ-> Ġ"$ acc Ġ$ ascending Symbol Ġ${ map [ i ] !! }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloats [ index Ġ- Ġ 1 ]. absolute Value Ġ== Ġi . absolute Value Ġ-> Ġ"$ acc Ġ- Ġ${ map [ i ] !! }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġacc Ġ+ Ġi . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ fun ĠString . describe For Transpose ( intervals : ĠList < String >): ĠString Ġ{ ĊĠĠĠ Ġval Ġints Ġ= Ġthis . extract Ints From Csv () ĊĠĠĠ Ġreturn Ġints . map { Ġintervals [ it ] Ġ}. join ToString (", Ġ") Ċ } Ċ fun Ġcorrect Bp ms ( bp ms : ĠString ): ĠString { ĊĠĠĠ Ġval Ġresult Ġ= Ġbp ms . extract Ints From Csv (). to Mutable List () ĊĠĠĠ Ġif Ġ( result . all { Ġit . absolute Value Ġ== Ġresult [ 0 ]. absolute Value }) Ġreturn Ġresult [ 0 ]. absolute Value . toString () ĊĠĠĠ Ġrepeat ( 2 ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( result [ 0 ] Ġ< Ġ 0 ) Ġresult [ 0 ] Ġ= Ġresult [ 0 ]. absolute Value ĊĠĠĠĠĠĠĠ Ġif Ġ( result . size Ġ> Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ 1 ] Ġ< Ġ 0 ) Ġ Ġresult . add ( 1 , Ġresult [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 Ġuntil Ġresult . size ). forEach { Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ index - 1 ]. absolute Value Ġ== Ġresult [ index ]. absolute Value ) Ġresult [ index ] Ġ= Ġresult [ index ]. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 Ġuntil Ġresult . size Ġ- Ġ 1 ). forEach { Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ index ] Ġ< Ġ 0 Ġ&& Ġresult [ index + 1 ] Ġ< Ġ 0 Ġ) Ġresult . add ( index + 1 , Ġresult [ index ]. absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . last () Ġ< Ġ 0 ) Ġresult . add ( result . last (). absolute Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult . join ToString (",") Ċ } Ċ fun Ġcorrect Dynamics ( dynamics : ĠString ): ĠString { ĊĠĠĠ Ġval Ġresult Ġ= Ġdynamics . extract Float s From Csv (). to Mutable List () ĊĠĠĠ Ġif Ġ( result . all { Ġit . absolute Value Ġ== Ġresult [ 0 ]. absolute Value }) Ġreturn Ġresult [ 0 ]. absolute Value . toString () ĊĠĠĠ Ġrepeat ( 2 ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( result [ 0 ] Ġ< Ġ 0 f ) Ġresult [ 0 ] Ġ= Ġresult [ 0 ]. absolute Value ĊĠĠĠĠĠĠĠ Ġif Ġ( result . size Ġ> Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ 1 ] Ġ< Ġ 0 f ) Ġ Ġresult . add ( 1 , Ġresult [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 Ġuntil Ġresult . size ). forEach { Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ index - 1 ]. absolute Value Ġ== Ġresult [ index ]. absolute Value ) Ġresult [ index ] Ġ= Ġresult [ index ]. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 Ġuntil Ġresult . size Ġ- Ġ 1 ). forEach { Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ index ] Ġ< Ġ 0 f Ġ&& Ġresult [ index + 1 ] Ġ< Ġ 0 f Ġ) Ġresult . add ( index + 1 , Ġresult [ index ]. absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . last () Ġ< Ġ 0 f ) Ġresult . add ( result . last (). absolute Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult . join ToString (",") Ċ } Ċ fun Ġcorrect Leg atos ( leg atos : ĠString ): ĠString { ĊĠĠĠ Ġ// println (" leg atos : Ġ$ leg atos ") ĊĠĠĠ Ġval Ġ( leg , Ġ rib ) Ġ= Ġleg atos . extract Int Pairs From Csv (). unzip () ĊĠĠĠ Ġval Ġresult Ġ= Ġleg . to Mutable List () ĊĠĠĠ Ġval Ġresult 2 Ġ= Ġ rib . to Mutable List () ĊĠĠĠ Ġif Ġ( result . all { Ġit . absolute Value Ġ== Ġresult [ 0 ]. absolute Value } Ġ&& Ġresult 2 . all { Ġit . absolute Value Ġ== Ġresult 2 [ 0 ]. absolute Value }) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ result [ 0 ]. absolute Value }| ${ result 2 [ 0 ]. absolute Value }" ĊĠĠĠ Ġrepeat ( 2 ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( result [ 0 ] Ġ< Ġ 0 f ) Ġresult [ 0 ] Ġ= Ġresult [ 0 ]. absolute Value ĊĠĠĠĠĠĠĠ Ġif Ġ( result . size Ġ> Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ 1 ] Ġ< Ġ 0 f ) Ġ Ġresult . add ( 1 , Ġresult [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 Ġuntil Ġresult . size ). forEach { Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ index - 1 ]. absolute Value Ġ== Ġresult [ index ]. absolute Value ) Ġresult [ index ] Ġ= Ġresult [ index ]. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 Ġuntil Ġresult . size Ġ- Ġ 1 ). forEach { Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result [ index ] Ġ< Ġ 0 f Ġ&& Ġresult [ index + 1 ] Ġ< Ġ 0 f Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( index + 1 , Ġresult [ index ]. absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 2 . add ( index + 1 , Ġresult 2 [ index ]. absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . last () Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( result . last (). absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 2 . add ( result 2 . last (). absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult . zip ( result 2 ){ a , Ġb Ġ-> Ġ"$ a |$ b " Ġ}. join ToString (",") // . also { println (" res : Ġ$ it ")} Ċ } Ċ fun ĠString . value From Csv ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġthis . extract Ints From Csv ()[ index ] Ċ } Ċ fun ĠColor . to HexString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"# ${ this . red . to Color HexString ()} ${ this . green . to Color HexString ()} ${ this . blue . to Color HexString () }" Ċ } Ċ Ċ fun ĠFloat . to Color HexString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ( 2 5 5 Ġ* Ġthis ). toInt (). toString ( 1 6 ). pad Start ( 2 ,' 0 ') Ċ } Ċ Ċ // Ġbytes Ġ= Ġfirst Ġthe Ġlow Ġ 7 Ġbits , Ġsecond Ġthe Ġhigh Ġ 7 Ġbits Ġ- Ġvolume Ġis Ġfrom Ġ 0 x 0 0 0 0 Ġto Ġ 0 x 3 FFF Ċ fun ĠFloat . convert Dynamic ToBytes (): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠ Ġval Ġfl Ġ= Ġthis . coerce In ( 0 f , 1 f ) ĊĠĠĠ Ġval Ġvolume Int Ġ= Ġ( 0 x 3 FFF Ġ* Ġfl ). toInt () ĊĠĠĠ Ġval Ġfirst B ite Ġ= Ġvolume Int Ġand Ġ 0 b 1 1 1 1 1 1 1 ĊĠĠĠ Ġval Ġsecond Byte Ġ= Ġ( volume Int Ġshr ( 7 )) Ġand Ġ 0 b 1 1 1 1 1 1 1 ĊĠĠĠ Ġreturn ĠPair ( first B ite , Ġsecond Byte ) Ċ } Ċ Ċ fun ĠLong . divide Distribut ing Rest ( div isor : ĠInt ): ĠMutable List < Long >{ ĊĠĠĠ Ġif ( this Ġ== Ġ 0 L Ġ|| Ġdivisor Ġ== Ġ 0 ) Ġreturn Ġmutable ListOf ( this ) ĊĠĠĠ Ġval Ġresult Ġ= Ġthis Ġ/ Ġdivisor ĊĠĠĠ Ġval Ġrest Ġ= Ġthis Ġ- Ġ( result Ġ* Ġdivisor ) Ġ// Ġmodule Ġoperation Ġwithout Ġdecimals ĊĠĠĠ Ġval Ġhalf Div isor Ġ= Ġdivisor Ġ/ Ġ 2 Ġ+ Ġ( div isor Ġand Ġ 1 ) ĊĠĠĠ Ġval Ġrest Div Ġ= Ġrest Ġ/ Ġhalf Div isor ĊĠĠĠ Ġval Ġrest Of Rest Ġ= Ġrest Ġ- Ġ( rest Div Ġ* Ġhalf Div isor Ġ) ĊĠĠĠ Ġval Ġadd One Ġ= Ġrest Ġ% Ġhalf Div isor Ġ!= Ġ 0 L ĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Long >() ĊĠĠĠ Ġval Ġresult Plus Rest Div Ġ= Ġresult Ġ+ Ġrest Div ĊĠĠĠ Ġ// println (" result =$ result Ġrest =$ rest Ġrest Div =$ rest Div Ġrest Of Rest =$ rest Of Rest ") ĊĠĠĠ Ġ( 0 Ġuntil Ġdivisor ). forEach { Ġi Ġ-> Ġif ( i Ġand Ġ 1 Ġ== Ġ 1 ) Ġlist . add ( result ) Ġelse Ġlist . add ( result Plus Rest Div ) Ġ} ĊĠĠĠ Ġ( 0 Ġuntil Ġrest Of Rest . toInt ()). forEach { Ġi Ġ-> Ġlist [ i * 2 + 1 ] Ġ= Ġlist [ i * 2 + 1 ]+ 1 } ĊĠĠĠ Ġ// if ( add One ) Ġlist [ 0 ] Ġ= Ġlist [ 0 ] Ġ+ Ġ 1 ĊĠĠĠ Ġreturn Ġlist Ċ } Ċ Ċ fun Ġ ĠList < En semble Part >. display () Ġ{ ĊĠĠĠ Ġthis . forEach Ġ{ Ġ Ġprintln ( it ) Ġ} ĊĠĠĠ Ġprintln () Ċ } Ċ Ċ fun Ġconvert RY B to RGB ( red : ĠFloat , Ġyellow : ĠFloat , Ġblue : ĠFloat ): ĠTrip le < Float , ĠFloat , ĠFloat >{ ĊĠĠĠ Ġval ĠR Ġ= Ġred * red *( 3 f - red - red ) ĊĠĠĠ Ġval ĠY Ġ= Ġyellow * yellow *( 3 f - yellow - yellow ) ĊĠĠĠ Ġval ĠB Ġ= Ġblue * blue *( 3 f - blue - blue ) ĊĠĠĠ Ġreturn ĠTrip le ( ĊĠĠĠĠĠĠĠĠ 1 . 0 f Ġ+ ĠB Ġ* Ġ( ĠR Ġ* Ġ( 0 . 3 3 7 f Ġ+ ĠY Ġ* Ġ- 0 . 1 3 7 f ) Ġ+ Ġ(- 0 . 8 3 7 f Ġ+ ĠY Ġ* Ġ- 0 . 1 6 3 f ) Ġ), ĊĠĠĠĠĠĠĠĠ 1 . 0 f Ġ+ ĠB Ġ* Ġ( Ġ- 0 . 6 2 7 f Ġ+ ĠY Ġ* Ġ 0 . 2 8 7 f ) Ġ+ ĠR Ġ* Ġ(- 1 . 0 f Ġ+ ĠY Ġ* Ġ( 0 . 5 f Ġ+ ĠB Ġ* Ġ- 0 . 6 9 3 f ) Ġ- ĠB Ġ* Ġ(- 0 . 6 2 7 f ) Ġ), ĊĠĠĠĠĠĠĠĠ 1 . 0 f Ġ+ ĠB Ġ* Ġ(- 0 . 4 f Ġ+ ĠY Ġ* Ġ 0 . 6 f ) Ġ- ĠY Ġ+ ĠR Ġ* Ġ( Ġ- 1 . 0 f Ġ+ ĠB Ġ* Ġ( 0 . 9 f Ġ+ ĠY Ġ* Ġ- 1 . 1 f ) Ġ+ ĠY Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġfind Me lo dy With Structure ( octave : ĠInt , Ġabs P itches : ĠInt Array Ġ, Ċ lower Limits : ĠInt Array , Ġupper Limits : ĠInt Array , Ġ Ġme lo dy Types : ĠInt Array ): ĠInt Array Ġ{ ĊĊĠĠĠ Ġval Ġmel Types Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġval Ġlow Limits Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġval Ġup Limits Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġval Ġd urs Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġval Ġmel Ticks Ġ= Ġabs P itches . size . to Long (). divide Distribut ing Rest ( me lo dy Types . size ). sums () // . also { Ġprintln (" mel Ticks : Ġ$ it ")} ĊĠĠĠ Ġval Ġrange Ticks Ġ= Ġabs P itches . size . to Long (). divide Distribut ing Rest ( lower Limits . size ). sums () // . also { Ġprintln (" range Ticks : Ġ$ it ")} ĊĠĠĠ Ġval Ġall Ticks Ġ= Ġ( mel Ticks Ġ+ Ġrange Ticks ). toSet (). sorted () ĊĠĠĠ Ġvar Ġlast Tick Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġmel Index Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġlow Index Ġ= Ġ 0 ĊĠĠĠ Ġall Ticks . forEach { ĊĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmel Ticks . contains ( it ) Ġ&& Ġrange Ticks . contains ( it ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmel Types . add ( me lo dy Types [ mel Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Limits . add ( lower Limits [ low Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup Limits . add ( upper Limits [ low Index ]) Ġ// Ġlow ers Ġand Ġup pers Ġshare Ġthe Ġsame Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd urs . add ( it . toInt () Ġ- Ġlast Tick ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Tick Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmel Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmel Ticks . contains ( it ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmel Types . add ( me lo dy Types [ mel Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Limits . add ( lower Limits [ low Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup Limits . add ( upper Limits [ low Index ]) Ġ// Ġlow ers Ġand Ġup pers Ġshare Ġthe Ġsame Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd urs . add ( it . toInt () Ġ- Ġlast Tick ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Tick Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmel Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange Ticks . contains ( it ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmel Types . add ( me lo dy Types [ mel Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Limits . add ( lower Limits [ low Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup Limits . add ( upper Limits [ low Index ]) Ġ// Ġlow ers Ġand Ġup pers Ġshare Ġthe Ġsame Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd urs . add ( it . toInt () Ġ- Ġlast Tick ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Tick Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ // ĠĠĠ Ġprintln (" mel Types Ġ${ mel Types . size }: Ġ$ mel Types ") Ċ // ĠĠĠ Ġprintln (" low Limits Ġ${ low Limits . size }: Ġ$ low Limits ") Ċ // ĠĠĠ Ġprintln (" up Limits Ġ${ up Limits . size }: Ġ$ up Limits ") Ċ // ĠĠĠ Ġprintln (" d urs Ġ${ d urs . size }: Ġ$ d urs ") ĊĊĠĠĠ Ġvar Ġlast Oct ave Ġ= Ġoct ave ĊĠĠĠ Ġvar Ġlast Tick 2 Ġ= Ġ 0 ĊĊĠĠĠ Ġval Ġsequences Ġ= Ġd urs . map Indexed { Ġindex , Ġdur Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġsub Sequence Ġ= Ġabs P itches . copyOf Range ( last Tick 2 , Ġlast Tick 2 Ġ+ Ġdur )// . also { println (" sub Sequence Ġ$ index : Ġ${ it . content ToString () }") } ĊĠĠĠĠĠĠĠ Ġval Ġsequence Ġ= ĠIns ie me . find Me lo dy ( last Oct ave , Ġsub Sequence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow Limits [ index ], Ġup Limits [ index ], Ġmel Types [ index ]) ĊĠĠĠĠĠĠĠ Ġlast Oct ave Ġ= Ġsequence . last OrNull Ġ{ Ġit Ġ!= Ġ- 1 Ġ} ?. let { Ġlast Ġ-> Ġlast Ġ/ Ġ 1 2 Ġ- 1 } Ġ?: Ġlast Oct ave Ġ// Ġsequence Ġcould Ġbe Ġempty ĊĠĠĠĠĠĠĠ Ġlast Tick 2 Ġ+= Ġdur ĊĠĠĠĠĠĠĠ Ġsequence ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// sequences . forEach { println (" sub Sequence : Ġ${ it . content ToString () }") } ĊĠĠĠ Ġreturn Ġsequences . reduce { Ġacc , Ġarr Ġ-> Ġacc Ġ+ Ġarr }// . also { println (" Result Ġsequence : Ġ${ it . content ToString () }") } Ċ } Ċ Ċ fun ĠList < Long >. sums ( start : ĠLong Ġ= Ġ 0 ): ĠList < Long >{ ĊĠĠĠ Ġvar Ġlast Ġ= Ġstart ĊĠĠĠ Ġreturn Ġthis . map { Ġlast Ġ+= Ġit ; Ġlast Ġ} Ċ } ĊĊĊ Ċ fun Ġmain ( args Ġ: ĠArray < String > ){ ĊĠĠĠ Ġval Ġcolors RY B Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠTrip le ( 1 f , 0 . 3 3 3 f , 0 . 3 3 3 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 8 3 3 f , Ġ 0 . 5 f , 0 . 1 6 6 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 6 6 6 f , 0 . 6 6 6 f , 0 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 5 f , 0 . 8 3 3 f , 0 . 1 6 6 f ), ĊĊĠĠĠĠĠĠ Ġ// ĠTrip le ( 0 . 3 3 3 f , 1 f , 0 . 3 3 3 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 f , 1 f , 0 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 1 6 6 f , 0 . 8 3 3 f , 0 . 5 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 f , 0 . 6 6 6 f , 0 . 6 6 6 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 1 6 6 f , 0 . 5 f , 0 . 8 3 3 f ), ĊĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 3 3 3 f , 0 . 3 3 3 f , 1 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 5 f , 0 . 1 6 6 f , 0 . 8 3 3 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 6 6 6 f , 0 f , 0 . 6 6 6 f ), ĊĠĠĠĠĠĠĠ ĠTrip le ( 0 . 8 3 3 f , 0 . 1 6 6 f , 0 . 5 f ), ĊĠĠĠ Ġ) ĊĠĠĠ Ġcolors RY B . map { Ġconvert RY B to RGB ( it . first , Ġit . second , Ġit . third )} ĊĠĠĠĠĠĠĠ Ġ. map { ĠColor ( it . first , Ġit . second , Ġit . third )} ĊĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġ Ġprintln (" color : Ġ${ it . to HexString ()} ĠR :${ it . red } ĠG :${ it . green } ĠB :${ it . blue }") } ĊĠĠĠ Ġ// ĠĠĠ Ġval Ġstring Ġ= Ġ" 4 | 0 , 4 | 0 " Ċ // ĠĠĠ Ġ// string . extract Int Pairs From Csv (). also { println ( it )} Ċ // ĠĠĠ Ġcorrect Leg atos ( string ). also { println (" RESULT : Ġ$ it ")} Ċ // ĠĠĠ Ġval Ġpairs Ġ= ĠlistOf ( Ċ // ĠĠĠĠĠĠĠ ĠPair ( 8 3 6 L , 1 2 7 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 5 0 0 L , 7 8 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 3 4 3 L , 4 5 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 1 9 4 7 L , 3 7 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 1 2 L , 1 2 7 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 6 8 9 L , 7 8 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 1 0 0 L , 4 5 ), Ċ // ĠĠĠĠĠĠĠ ĠPair ( 4 L , 3 ), Ċ // ĠĠĠ Ġ) Ċ // ĠĠĠ Ġpairs . forEach Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln ("${ it . first } Ġ/ Ġ${ it . second } Ġ-> Ġ${ it . first . divide Distribut ing Rest ( it . second )} ") Ċ // ĠĠĠĠĠĠĠ Ġprintln (" check Ġsum : Ġ${ it . first . divide Distribut ing Rest ( it . second ). sum () }") Ċ // ĠĠĠĠĠĠĠ Ġprintln () Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġvar Ġsuccess Ġ= Ġtrue Ċ // ĠĠĠ Ġfor ( i Ġin Ġ 0 .. 1 0 0 ){ Ċ // ĠĠĠĠĠĠĠ Ġval Ġpair Ġ= ĠPair ( Random (). nextInt ( 1 0 0 0 0 ). to Long (), ĠRandom (). nextInt ( 1 0 0 0 0 )). also { println ( it )} Ċ // ĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġpair . first . divide Distribut ing Rest ( pair . second ) Ċ // ĠĠĠĠĠĠĠ Ġprintln ( list ) Ċ // ĠĠĠĠĠĠĠ Ġprintln () Ċ // ĠĠĠĠĠĠĠ Ġif ( list . sum () Ġ!= Ġpair . first ){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" TEST ĠFAILED Ġwith : Ġ$ pair ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġif ( success ){ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" SUCCESS !! !") Ċ // ĠĠĠ Ġ} Ċ } ĊĊĊĊ ĊĊĊĊĊ