/** Ċ Ġ* ĠÐŁ Ð°ÑĢ Ñģ Ð¸ÑĤ ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĠÐ¸Ð· ĠÐ± Ñĥ Ð» ÐµÐ² ÑĭÑħ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ð¾Ð² Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ð¾Ð² ), ĠÐ·Ð°Ð¿Ð¸Ñģ Ð°Ð½ Ð½ÑĭÑħ ĠÐ² ĠÑĢÐ°Ð· Ð½ÑĭÑħ ĠÑĦ Ð¾ÑĢÐ¼ Ð°ÑĤ Ð°Ñħ , ĠÐ½Ð¾ ĠÑĢÐ°Ð· Ð´ÐµÐ» ÐµÐ½ Ð½ÑĭÑħ ĠÐ·Ð°Ð¿ ÑıÑĤ Ñĭ Ð¼Ð¸ . Ċ Ġ* Ċ Ġ* Ġ@ param Ġinput ĠÑģÑĤÑĢÐ¾Ðº Ð° , ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð° Ñī Ð°Ñı ĠÐ± Ñĥ Ð» ÐµÐ² ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ñĭ ) ĠÐ² ĠÐ»Ñİ Ð± Ð¾Ð¼ ĠÑĥ Ð´ Ð¾Ð± Ð½Ð¾Ð¼ ĠÑĦ Ð¾ÑĢÐ¼ Ð°ÑĤ Ðµ , ĠÐ½Ð¾ ĠÑĢÐ°Ð· Ð´ÐµÐ» ÐµÐ½ Ð½ÑĭÐµ ĠÐ·Ð°Ð¿ ÑıÑĤ Ñĭ Ð¼Ð¸ . Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ñĭ : Ċ Ġ* Ġ( 1 0 0 1 ), Ġ( 1 0 0 0 ), Ġ( 0 1 1 0 ) Ċ Ġ* Ġ{ 1 0 0 1 , Ġ 1 0 0 0 , Ġ 0 1 1 0 } Ċ Ġ* ĠA Ġ= Ġ{( 1 0 0 1 ), Ġ( 1 0 0 0 ), Ġ( 0 1 1 0 )}; Ċ Ġ* Ġ@ return Ġ[ ArrayList ] ĠÐ¸Ð· ĠÐ± Ñĥ Ð» ÐµÐ² ÑĭÑħ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ð¾Ð² Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ð¾Ð² ). Ċ Ġ*/ Ċ fun Ġparse ( input : ĠString ): ĠArrayList < String > Ġ{ ĊĠĠĠ Ġval Ġregex Ġ= ĠRegex ("[ ^ 0 - 1 , ]") ĊĠĠĠ Ġreturn Ġregex . replace ( input , Ġ""). split (',') Ġas ĠArrayList < String > Ċ } Ċ Ċ /** Ċ Ġ* ĠÐĿ Ð° ÑħÐ¾Ð´ Ð¸ÑĤ ĠÑģ Ð¾Ñģ ÐµÐ´ Ð½Ð¸ Ðµ ĠÐ± Ñĥ Ð» ÐµÐ² Ñĭ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ñĭ ) ĠÐ¸ ĠÐ²Ñĭ Ð²Ð¾Ð´ Ð¸ÑĤ ĠÐ¸ Ñħ . ĠÐ¡ Ð¾Ñģ ÐµÐ´ Ð½ Ð¸Ð¼ Ð¸ ĠÐ½Ð°Ð· ÑĭÐ² Ð° ÑİÑĤÑģÑı ĠÑĤÐ°Ðº Ð¸Ðµ ĠÐ½ Ð°Ð± Ð¾ÑĢ Ñĭ , ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÐµ Ċ Ġ* ĠÐ¾ÑĤ Ð»Ð¸Ñĩ Ð° ÑİÑĤÑģÑı ĠÐ½Ð° ĠÐµ Ð´ Ð¸Ð½ Ð¸ ÑĨ Ñĥ . Ċ Ġ* Ġ@ param Ġtext ĠÑģÑĤÑĢÐ¾Ðº Ð° , ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð° Ñī Ð°Ñı ĠÐ± Ñĥ Ð» ÐµÐ² ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ñĭ ) ĠÐ² ĠÐ»Ñİ Ð± Ð¾Ð¼ ĠÑĥ Ð´ Ð¾Ð± Ð½Ð¾Ð¼ ĠÑĦ Ð¾ÑĢÐ¼ Ð°ÑĤ Ðµ , ĠÐ½Ð¾ ĠÑĢÐ°Ð· Ð´ÐµÐ» ÐµÐ½ Ð½ÑĭÐµ ĠÐ·Ð°Ð¿ ÑıÑĤ Ñĭ Ð¼Ð¸ . Ċ Ġ* ĠIn : Ġ( 1 0 0 1 ), Ġ( 1 0 0 0 ), Ġ( 0 1 1 0 ) Ġ// ĠÐ¸Ð»Ð¸ Ġ{ 1 0 0 1 , Ġ 1 0 0 0 , Ġ 0 1 1 0 } Ċ Ġ* ĠOut : Ċ Ġ* ĠÐ¡ Ð¾Ñģ ÐµÐ´ Ð½Ð¸ Ðµ ĠÐ½ Ð°Ð± Ð¾ÑĢ Ñĭ : Ċ Ġ* Ġ( 1 0 0 1 ), Ġ( 1 0 0 0 ) Ċ Ġ*/ Ċ fun Ġfind Ne ighbours Sub sets ( text : ĠString ) Ġ{ ĊĠĠĠ Ġprintln (" Ð¡ Ð¾Ñģ ÐµÐ´ Ð½Ð¸ Ðµ ĠÐ½ Ð°Ð± Ð¾ÑĢ Ñĭ :") ĊĠĠĠ Ġval Ġsub sets Ġ= Ġparse ( text ) ĊĠĠĠ Ġper mutations ( sub sets , Ġsub sets ). filter Ġ{ Ġit . first Ġ!= Ġit . second Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . first . length Ġ== Ġit . second . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdifferences Ġ= Ġit . first . fold Indexed ( 0 ) Ġ{ Ġindex , Ġacc , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġit . second [ index ]) Ġacc Ġ+ Ġ 1 Ġelse Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( differ ences Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠThrowable (" ÐĿ ÐµÐ»ÑĮ Ð· Ñı ĠÑģ ÑĢÐ°Ð² Ð½ Ð¸ÑĤÑĮ ĠÐ± Ñĥ Ð» ÐµÐ² Ñĭ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ ĠÑĢÐ°Ð· Ð½Ð¾Ð¹ ĠÐ´ Ð»Ð¸ Ð½Ñĭ . Ġ${ it . first }. length =${ it . first . length }, Ġ Ġ${ it . second }. length =${ it . second . length }. ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠÐĿ Ð° ÑħÐ¾Ð´ Ð¸ÑĤ ĠÐ¿ÑĢ Ð¾ÑĤ Ð¸Ð² Ð¾Ð¿ Ð¾Ð» Ð¾Ð¶ Ð½ÑĭÐµ ĠÐ± Ñĥ Ð» ÐµÐ² Ñĭ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ñĭ ) ĠÐ¸ ĠÐ²Ñĭ Ð²Ð¾Ð´ Ð¸ÑĤ ĠÐ¸ Ñħ . Ċ Ġ* Ċ Ġ* Ġ@ param Ġtext ĠÑģÑĤÑĢÐ¾Ðº Ð° , ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð° Ñī Ð°Ñı ĠÐ± Ñĥ Ð» ÐµÐ² ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ Ġ( Ð½ Ð°Ð± Ð¾ÑĢ Ñĭ ) ĠÐ² ĠÐ»Ñİ Ð± Ð¾Ð¼ ĠÑĥ Ð´ Ð¾Ð± Ð½Ð¾Ð¼ ĠÑĦ Ð¾ÑĢÐ¼ Ð°ÑĤ Ðµ , ĠÐ½Ð¾ ĠÑĢÐ°Ð· Ð´ÐµÐ» ÐµÐ½ Ð½ÑĭÐµ ĠÐ·Ð°Ð¿ ÑıÑĤ Ñĭ Ð¼Ð¸ . Ċ Ġ* ĠIn : Ġ( 1 0 0 1 ), Ġ( 1 0 0 0 ), Ġ( 0 1 1 0 ) Ġ// ĠÐ¸Ð»Ð¸ Ġ{ 1 0 0 1 , Ġ 1 0 0 0 , Ġ 0 1 1 0 } Ċ Ġ* ĠOut : Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑĤ Ð¸Ð² Ð¾Ð¿ Ð¾Ð» Ð¾Ð¶ Ð½ÑĭÐµ ĠÐ½ Ð°Ð± Ð¾ÑĢ Ñĭ : Ċ Ġ* Ġ( 1 0 0 1 ), Ġ( 0 1 1 0 ) Ċ Ġ*/ Ċ fun Ġfind Opp osite Sub sets ( text : ĠString ) Ġ{ ĊĠĠĠ Ġprintln (" ÐŁÑĢ Ð¾ÑĤ Ð¸Ð² Ð¾Ð¿ Ð¾Ð» Ð¾Ð¶ Ð½ÑĭÐµ ĠÐ½ Ð°Ð± Ð¾ÑĢ Ñĭ :") ĊĠĠĠ Ġval Ġsub sets Ġ= Ġparse ( text ) ĊĠĠĠ Ġper mutations ( sub sets , Ġsub sets ). filter Ġ{ Ġit . first Ġ!= Ġit . second Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . first . length Ġ== Ġit . second . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdifferences Ġ= Ġit . first . fold Indexed ( 0 ) Ġ{ Ġindex , Ġacc , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġit . second [ index ]) Ġacc Ġ+ Ġ 1 Ġelse Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( differ ences Ġ== Ġit . first . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠThrowable (" ÐĿ ÐµÐ»ÑĮ Ð· Ñı ĠÑģ ÑĢÐ°Ð² Ð½ Ð¸ÑĤÑĮ ĠÐ± Ñĥ Ð» ÐµÐ² Ñĭ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĭ ĠÑĢÐ°Ð· Ð½Ð¾Ð¹ ĠÐ´ Ð»Ð¸ Ð½Ñĭ . Ġ${ it . first }. length =${ it . first . length }, Ġ Ġ${ it . second }. length =${ it . second . length }. ") ĊĠĠĠ Ġ} Ċ }