// ĠÑĦÑĥÐ½Ðº ÑĨÐ¸Ñı ĠÑģÐ» Ð¾Ð¶ ÐµÐ½Ð¸Ñı ĠÐ´Ð² Ñĥ Ñħ ĠÐ´Ð² Ð¾ Ð¸Ñĩ Ð½ÑĭÑħ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ð¾Ð² ĠÑģ ĠÐ¿ÑĢ Ð¸Ð² ÐµÐ´ ÐµÐ½Ð¸ ÐµÐ¼ Ċ // ĠÐº ĠÐ¾Ð´ Ð¸Ð½ Ð°Ðº Ð¾Ð² Ð¾Ð¹ ĠÐ´ Ð»Ð¸ Ð½Ðµ Ċ fun ĠList < Int >. sum With ( b : ĠList < Int >): ĠList < Int > Ġ{ ĊĠĠĠ Ġval Ġt Ġ= Ġto ArrayList () ĊĠĠĠ Ġwhile Ġ( t . size Ġ< Ġb . size ) Ġt . add ( 0 ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġb . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġt [ i ] Ġ= Ġ( t [ i ] Ġ+ Ġb [ i ]) Ġ% Ġ 2 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġt Ċ } Ċ Ċ // ĠÑĦÑĥÐ½Ðº ÑĨÐ¸Ñı ĠÐ¿ÑĢ ÐµÐ² ÑĢÐ°Ñī ÐµÐ½Ð¸Ñı ĠÐ± Ð¸ÑĤ Ð¾Ð² Ð¾Ð³Ð¾ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ð° ĠÐº Ð¾ Ñį ÑĦ ÑĦ Ð¸ ÑĨÐ¸ ÐµÐ½ÑĤ Ð¾Ð² Ċ // ĠÐ² ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĠÐ² ĠÐ¿Ð¾Ð» Ð¸Ð½ Ð¾Ð¼ Ð¸ Ð°Ð»ÑĮ Ð½Ð¾Ð¼ ĠÐ²Ð¸Ð´ Ðµ Ċ fun ĠList < Int >. to Poly (): ĠString Ġ{ ĊĠĠĠ Ġval Ġfst Ġ= Ġif Ġ( first () Ġ== Ġ 1 ) Ġ" 1 " Ġelse Ġ"" ĊĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( size ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. size - 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( this [ i ] Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("+ x ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ> Ġ 1 ) Ġsb . append ("^ {$ i }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ"$ fst $ sb ". drop While Ġ{ Ġit Ġ== Ġ'+' Ġ} Ċ } Ċ Ċ // ĠÐ¾Ð±ÑĬÐµÐºÑĤ Ġ" ÑģÑĤÑĢ Ð¾Ðº Ð¸ " ĠÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ Ċ data Ġclass ĠBM Step ( ĊĠĠĠĠĠĠĠ Ġval Ġr : ĠInt , Ġval Ġx : ĠInt , Ġval Ġdelta : ĠInt , ĊĠĠĠĠĠĠĠ Ġval ĠB : ĠList < Int >, Ġval Ġloc : ĠList < Int >, Ġval ĠL : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġ// ĠÐ¿ÑĢ ÐµÐ² ÑĢÐ°Ñī ÐµÐ½Ð¸Ðµ ĠÐ¾Ð±ÑĬÐµÐºÑĤ Ð° ĠÐ² ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĠÐ´Ð»Ñı ĠÑĢÐ°Ð· Ð¼ ÐµÑĤ ÐºÐ¸ ĠLaTeX ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ r Ġ& Ġ$ x Ġ& Ġ$ delta Ġ& Ġ\$ ${ B . to Poly () }\ $ Ġ& Ġ\$ ${ loc . to Poly () }\ $ Ġ& Ġ$ L Ġ\ \\\" ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠÐĲ Ð» Ð³ Ð¾ÑĢ Ð¸ÑĤ Ð¼ ĠÐĳ ÐµÑĢ Ð» ÐµÐº Ñį Ð¼ Ð¿ Ð° - Ðľ ÐµÑģ Ñģ Ð¸ Ċ fun Ġbm Algo ( S : ĠList < Int >): ĠList < BM Step > Ġ{ ĊĠĠĠ Ġval Ġtex Table Ġ= Ġarray ListOf < BM Step >() ĊĊĠĠĠ Ġvar ĠL Ġ= Ġ 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÑĤÐµÐº ÑĥÑī Ð°Ñı ĠÐ´ Ð»Ð¸ Ð½Ð° ĠÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ĊĠĠĠ Ġvar Ġloc Ġ= ĠlistOf ( 1 ) ĠĠĠĠ Ġ// ĠÐ¼ Ð½Ð¾Ð³Ð¾ Ñĩ Ð»ÐµÐ½ ĠÐ» Ð¾Ðº Ð°ÑĤÐ¾ÑĢ Ð¾Ð² ĊĠĠĠ Ġvar ĠB Ġ= Ġarray ListOf ( 1 ) Ġ Ġ// ĠÐ¼ Ð½Ð¾Ð³Ð¾ Ñĩ Ð»ÐµÐ½ ĠÐºÐ¾Ð¼Ð¿ ÐµÐ½ Ñģ Ð°ÑĨÐ¸Ð¸ ĠÐ½ ÐµÐ² ÑıÐ· ÐºÐ¸ ĊĊĠĠĠ Ġfor Ġ( r Ġin Ġ 1 .. S . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġloc . zip ( S . take ( r ). reversed ()). map Ġ{ Ġit . first Ġ* Ġit . second Ġ}. sum () Ġ% Ġ 2 ĊĠĠĠĠĠĠĠ ĠB . add ( 0 , Ġ 0 ) Ġ Ġ// ĠÑģ Ð´ Ð² Ð¸Ð³ ĠÐ½Ð° Ġx ĠÐ² Ð¿ÑĢÐ°Ð² Ð¾ ĊĠĠĠĠĠĠĠ Ġif Ġ( delta Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐ Ľ Ðł Ðŀ Ð¡ ĠÐ¼Ð¾Ð´ Ð¸ÑĦ Ð¸ ÑĨÐ¸ ÑĢÑĥ ÐµÑĤÑģÑı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠT Ġ= Ġloc . sum With ( B ) Ġ Ġ// ĠÐ² ÑģÐ¿ Ð¾Ð¼ Ð¾Ð³ Ð°ÑĤÐµÐ»ÑĮ Ð½ÑĭÐ¹ ĠÐ¼ Ð½Ð¾Ð³Ð¾ Ñĩ Ð»ÐµÐ½ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( 2 Ġ* ĠL Ġ<= Ġr Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐ´ Ð»Ð¸ Ð½Ð° ĠÑĥ Ð² ÐµÐ»Ð¸ Ñĩ Ð¸Ð² Ð°ÐµÑĤÑģÑı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġ= Ġarray ListOf (* loc . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL Ġ= Ġr Ġ- ĠL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloc Ġ= ĠlistOf (* T . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtex Table . add ( BM Step ( r , ĠS [ r Ġ- Ġ 1 ], Ġdelta , ĠlistOf (* B . to Typed Array ()), ĠlistOf (* loc . to Typed Array ()), ĠL )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtex Table Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// Ġval ĠS 0 Ġ= ĠlistOf ( 1 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 1 ) ĊĠĠĠ Ġval ĠS 1 Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 1 ) ĊĠĠĠ Ġval ĠS 2 Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġval ĠS 3 Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 1 ) ĊĠĠĠ Ġval ĠS 4 Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 0 , Ġ 1 ) ĊĊĊĠĠĠ Ġval Ġtable Ġ= Ġbm Algo ( S 2 ) ĊĠĠĠ Ġprintln (" ĠĠ 0 Ġ& Ġ- Ġ& Ġ 0 Ġ& Ġ 1 Ġ& Ġ 1 Ġ& Ġ 0 Ġ\ \\\ ") ĊĠĠĠ Ġprintln (" Ġ Ġ" Ġ+ Ġtable . drop ( 1 2 ). map Ġ{ Ġit . toString () Ġ}. join ToString ( separator Ġ= Ġ"\ n Ġ Ġ")) Ċ }