@ file : Suppress (" UNUSED _ PARAMETER ") Ċ Ċ package Ġlesson 8 . task 2 Ċ Ċ import Ġlesson 8 . task 1 . delta Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . Array Deque Ċ import Ġkotlin . math .* Ċ Ċ /** Ċ Ġ* ĠÐļ Ð» ÐµÑĤ ÐºÐ° ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð¾Ð¹ ĠÐ´ Ð¾Ñģ ÐºÐ¸ . ĠÐ ¨ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ´ Ð¾Ñģ ÐºÐ° ĠÐº Ð² Ð°Ð´ ÑĢÐ°ÑĤ Ð½Ð°Ñı ĠÐ¸ ĠÐ¸Ð¼ Ðµ ÐµÑĤ Ġ 8 ĠÑħ Ġ 8 ĠÐº Ð» ÐµÑĤ Ð¾Ðº . Ċ Ġ* ĠÐŁ Ð¾ Ñį ÑĤ Ð¾Ð¼Ñĥ , ĠÐ¾Ð± Ðµ ĠÐº Ð¾ Ð¾ÑĢ Ð´ Ð¸Ð½ Ð°ÑĤ Ñĭ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ( Ð³ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»ÑĮ Ġrow , ĠÐ²ÐµÑĢ ÑĤÐ¸ Ðº Ð°Ð»ÑĮ Ġcolumn ) ĠÐ¼ Ð¾Ð³ ÑĥÑĤ ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ÑģÑı ĠÐ² ĠÐ¿ÑĢÐµÐ´ ÐµÐ» Ð°Ñħ ĠÐ¾ÑĤ Ġ 1 ĠÐ´Ð¾ Ġ 8 . Ċ Ġ* ĠÐ ĵ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»Ð¸ ĠÐ½ ÑĥÐ¼ ÐµÑĢ ÑĥÑİ ÑĤ ÑģÑı ĠÑģ Ð½Ð¸ Ð· Ñĥ ĠÐ² Ð²ÐµÑĢ Ñħ , ĠÐ²ÐµÑĢ ÑĤÐ¸ ÐºÐ° Ð»Ð¸ ĠÑģÐ» ÐµÐ² Ð° ĠÐ½Ð°Ð¿ ÑĢÐ°Ð² Ð¾ . Ċ Ġ*/ Ċ data Ġclass ĠSquare ( val Ġcolumn : ĠInt , Ġval Ġrow : ĠInt ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ Ġtrue , ĠÐµÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ° ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤ ÑģÑı ĠÐ² ĠÐ¿ÑĢÐµÐ´ ÐµÐ» Ð°Ñħ ĠÐ´ Ð¾Ñģ ÐºÐ¸ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinside (): ĠBoolean Ġ= Ġcolumn Ġin Ġ 1 .. 8 Ġ&& Ġrow Ġin Ġ 1 .. 8 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ġ( 2 ĠÐ± Ð°Ð» Ð»Ð° ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ ĠÑģÑĤÑĢÐ¾Ðº Ð¾Ð² ÑĥÑİ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸ Ñİ ĠÐ´Ð»Ñı ĠÐº Ð» ÐµÑĤ ÐºÐ¸ . ĊĠĠĠĠ Ġ* ĠÐĴ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ð¸ , ĠÐºÐ¾Ð» Ð¾Ð½ ÐºÐ¸ ĠÐ¾Ð± Ð¾Ð· Ð½Ð°Ñĩ Ð° ÑİÑĤÑģÑı ĠÐ» Ð°ÑĤ Ð¸Ð½ ÑģÐº Ð¸Ð¼ Ð¸ ĠÐ± Ñĥ Ðº Ð² Ð°Ð¼Ð¸ ĠÐ¾ÑĤ Ġa ĠÐ´Ð¾ Ġh , ĠÐ° ĠÑĢ Ñı Ð´ Ñĭ Ġ-- ĠÑĨ Ð¸ÑĦ ÑĢÐ°Ð¼ Ð¸ ĠÐ¾ÑĤ Ġ 1 ĠÐ´Ð¾ Ġ 8 . ĊĠĠĠĠ Ġ* ĠÐĶ Ð»Ñı ĠÐº Ð» ÐµÑĤ ÐºÐ¸ ĠÐ½Ðµ ĠÐ² ĠÐ¿ÑĢÐµÐ´ ÐµÐ» Ð°Ñħ ĠÐ´ Ð¾Ñģ ÐºÐ¸ ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ¿ ÑĥÑģÑĤ ÑĥÑİ ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnotation (): ĠString Ġ= Ġif Ġ( inside ()) Ġ"${ ' a ' Ġ+ Ġcolumn Ġ- Ġ 1 }$ row " Ġelse Ġ"" Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ġ( 2 ĠÐ± Ð°Ð» Ð»Ð° ) Ċ Ġ* Ċ Ġ* ĠÐ¡ Ð¾Ð· Ð´Ð° Ñĳ ÑĤ ĠÐº Ð» ÐµÑĤ ÐºÑĥ ĠÐ¿Ð¾ ĠÑģÑĤÑĢÐ¾Ðº Ð¾Ð² Ð¾Ð¹ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ð¸ . Ċ Ġ* ĠÐĴ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ð¸ , ĠÐºÐ¾Ð» Ð¾Ð½ ÐºÐ¸ ĠÐ¾Ð± Ð¾Ð· Ð½Ð°Ñĩ Ð° ÑİÑĤÑģÑı ĠÐ» Ð°ÑĤ Ð¸Ð½ ÑģÐº Ð¸Ð¼ Ð¸ ĠÐ± Ñĥ Ðº Ð² Ð°Ð¼Ð¸ ĠÐ¾ÑĤ Ġa ĠÐ´Ð¾ Ġh , ĠÐ° ĠÑĢ Ñı Ð´ Ñĭ Ġ-- ĠÑĨ Ð¸ÑĦ ÑĢÐ°Ð¼ Ð¸ ĠÐ¾ÑĤ Ġ 1 ĠÐ´Ð¾ Ġ 8 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ñı ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° , ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠIllegalArgumentException Ċ Ġ*/ Ċ fun Ġsquare ( notation : ĠString ): ĠSquare Ġ= Ġif Ġ( Regex (""" [ a - h ][ 1 - 8 ] "" "). matches ( notation )) ĠSquare ( ĊĠĠĠ Ġnotation [ 0 ] Ġ- Ġ' a ' Ġ+ Ġ 1 , ĊĠĠĠ Ġnotation [ 1 ] Ġ- Ġ' 0 ' Ċ ) Ġelse Ġthrow ĠIllegalArgumentException () Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ġ( 2 ĠÐ± Ð°Ð» Ð»Ð° ) Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ» Ð°Ð´ ÑĮ Ñı ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐ ¨ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ» Ð°Ð´ ÑĮ Ñı ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ·Ð° ĠÐ¾Ð´ Ð¸Ð½ Ġ ÑħÐ¾Ð´ ĠÐ¿ÐµÑĢ ÐµÐ¼ ÐµÑģÑĤ Ð¸ÑĤÑĮ ÑģÑı ĠÐ½Ð° ĠÐ»Ñİ Ð± ÑĥÑİ ĠÐ´ÑĢÑĥÐ³ ÑĥÑİ ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ċ Ġ* ĠÐ¿Ð¾ ĠÐ²ÐµÑĢ ÑĤÐ¸ ÐºÐ° Ð»Ð¸ ĠÐ¸Ð»Ð¸ ĠÐ³ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»Ð¸ . Ċ Ġ* ĠÐĿ Ð¸ Ð¶Ðµ ĠÑĤ Ð¾Ñĩ Ðº Ð°Ð¼Ð¸ ĠÐ²Ñĭ Ð´ÐµÐ» ÐµÐ½ Ñĭ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ Ġ ÑħÐ¾Ð´ Ñĭ ĠÐ» Ð°Ð´ ÑĮ Ð¸ , ĠÐ° ĠÐº ÑĢ ÐµÑģÑĤ Ð¸Ðº Ð°Ð¼Ð¸ Ġ-- ĠÐ½ ÐµÐ² Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ : Ċ Ġ* Ċ Ġ* Ġxx . xx Ñħ Ñħ Ñħ Ċ Ġ* Ġx Ñħ . Ñħ x Ñħ Ñħ Ñħ Ċ Ġ* Ġ.. ÐĽ ..... Ċ Ġ* Ġx Ñħ . Ñħ x Ñħ Ñħ Ñħ Ċ Ġ* Ġxx . xx Ñħ Ñħ Ñħ Ċ Ġ* Ġxx . xx Ñħ Ñħ Ñħ Ċ Ġ* Ġxx . xx Ñħ Ñħ Ñħ Ċ Ġ* Ġxx . xx Ñħ Ñħ Ñħ Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ¸ Ġend ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð° ÑİÑĤ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ġ 0 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ»Ñİ Ð± Ð°Ñı ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° , ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠIllegalArgumentException (). Ċ Ġ* Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ : Ġro ok Move Number ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= Ġ 2 Ċ Ġ* ĠÐ Ľ Ð°Ð´ ÑĮ Ñı ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ¿ÑĢ Ð¾Ð¹ ÑĤÐ¸ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġ( 3 , Ġ 3 ) ĠÐ¸Ð»Ð¸ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġ( 6 , Ġ 1 ) ĠÐº ĠÐº Ð» ÐµÑĤ ÐºÐµ Ġ( 6 , Ġ 3 ). Ċ Ġ*/ Ċ fun Ġro ok Move Number ( start : ĠSquare , Ġend : ĠSquare ): ĠInt Ġ= Ġif Ġ( start . inside () Ġ&& Ġend . inside ()) Ġ{ ĊĠĠĠĠ 2 Ġ- Ġto One ( start . column Ġ== Ġend . column ) Ġ- Ġto One ( start . row Ġ== Ġend . row ) Ċ } Ġelse Ġthrow ĠIllegalArgumentException () Ċ Ċ fun Ġto One ( boolean : ĠBoolean ): ĠInt Ġ= Ġif Ġ( boolean ) Ġ 1 Ġelse Ġ 0 Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ġ( 3 ĠÐ± Ð°Ð» Ð»Ð° ) Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ» Ð°Ð´ ÑĮ Ñı ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐŀ Ð¿Ð¸Ñģ Ð°Ð½Ð¸Ðµ Ġ ÑħÐ¾Ð´ Ð¾Ð² ĠÐ» Ð°Ð´ ÑĮ Ð¸ ĠÑģÐ¼ . ĠÐ¿ÑĢÐµÐ´ Ñĭ Ð´ ÑĥÑī ÑĥÑİ ĠÐ·Ð°Ð´ Ð°Ñĩ Ñĥ . Ċ Ġ* ĠÐ¡ Ð¿Ð¸Ñģ Ð¾Ðº ĠÐ²Ñģ ÐµÐ³ Ð´Ð° ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤ ĠÐ² ĠÑģ ÐµÐ± Ñı ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġstart . ĠÐļ Ð» ÐµÑĤ ÐºÐ° Ġend ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤÑģÑı , ĠÐµÑģÐ»Ð¸ ĠÐ¾ Ð½Ð° ĠÐ½Ðµ ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð°ÐµÑĤ ĠÑģÐ¾ Ġstart . Ċ Ġ* ĠÐľ ÐµÐ¶ Ð´Ñĥ ĠÐ½ Ð¸Ð¼ Ð¸ ĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ÑģÑı ĠÐ¿ÑĢ Ð¾Ð¼ ÐµÐ¶ Ñĥ ÑĤÐ¾ Ñĩ Ð½ÑĭÐµ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ , ĠÐ¿Ð¾ ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÑĥ ĠÐ¾ÑĤ Ġstart ĠÐ´Ð¾ Ġend . Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ñĭ : Ġro ok Trajectory ( Square ( 3 , Ġ 3 ), ĠSquare ( 3 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 3 )) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ( Ð· Ð´ ÐµÑģ ÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ ÐµÐ½ ĠÐµ Ñī Ñĳ ĠÐ¾Ð´ Ð¸Ð½ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġro ok Trajectory ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 1 ), ĠSquare ( 3 , Ġ 3 ), ĠSquare ( 6 , Ġ 3 )) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ( Ð· Ð´ ÐµÑģ ÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ ÐµÐ½ ĠÐµ Ð´ Ð¸Ð½ ÑģÑĤÐ² ÐµÐ½ Ð½ÑĭÐ¹ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġro ok Trajectory ( Square ( 3 , Ġ 5 ), ĠSquare ( 8 , Ġ 5 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 5 ), ĠSquare ( 8 , Ġ 5 )) Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ð¾ ĠÐ½ ÐµÑģ Ðº Ð¾Ð»ÑĮÐºÐ¾ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ð¾Ð² ĠÑģ Ð°Ð¼ Ð¾Ð¹ ĠÐ±Ñĭ ÑģÑĤÑĢ Ð¾Ð¹ ĠÑĤ ÑĢÐ° ÐµÐºÑĤ Ð¾ÑĢ Ð¸Ð¸ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ»Ñİ Ð± Ð¾Ð¹ ĠÐ¸Ð· ĠÐ½ Ð¸Ñħ . Ċ Ġ*/ Ċ fun Ġro ok Trajectory ( start : ĠSquare , Ġend : ĠSquare ): ĠList < Square > Ġ= Ġwhen Ġ( ro ok Move Number ( start , Ġend )) Ġ{ ĊĠĠĠĠ 1 Ġ-> ĠlistOf ( start , Ġend ) ĊĠĠĠĠ 2 Ġ-> ĠlistOf ( start , ĠSquare ( start . column , Ġend . row ), Ġend ) ĊĠĠĠ Ġelse Ġ-> ĠlistOf ( start ) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ġ( 2 ĠÐ± Ð°Ð» Ð»Ð° ) Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÑģÐ» Ð¾Ð½ ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐ ¨ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÑģÐ» Ð¾Ð½ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ·Ð° ĠÐ¾Ð´ Ð¸Ð½ Ġ ÑħÐ¾Ð´ ĠÐ¿ÐµÑĢ ÐµÐ¼ ÐµÑģÑĤ Ð¸ÑĤÑĮ ÑģÑı ĠÐ½Ð° ĠÐ»Ñİ Ð± ÑĥÑİ ĠÐ´ÑĢÑĥÐ³ ÑĥÑİ ĠÐº Ð» ÐµÑĤ ÐºÑĥ ĠÐ¿Ð¾ ĠÐ´ Ð¸ Ð°Ð³ Ð¾Ð½ Ð°Ð»Ð¸ . Ċ Ġ* ĠÐĿ Ð¸ Ð¶Ðµ ĠÑĤ Ð¾Ñĩ Ðº Ð°Ð¼Ð¸ ĠÐ²Ñĭ Ð´ÐµÐ» ÐµÐ½ Ñĭ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ Ġ ÑħÐ¾Ð´ Ñĭ ĠÑģÐ» Ð¾Ð½ Ð° , ĠÐ° ĠÐº ÑĢ ÐµÑģÑĤ Ð¸Ðº Ð°Ð¼Ð¸ Ġ-- ĠÐ½ ÐµÐ² Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ : Ċ Ġ* Ċ Ġ* Ġ. xxx . Ñħ Ñħ Ñħ Ċ Ġ* Ġx . x . x Ñħ Ñħ Ñħ Ċ Ġ* Ġxx Ð¡ xxxx x Ċ Ġ* Ġx . x . x Ñħ Ñħ Ñħ Ċ Ġ* Ġ. xxx . Ñħ Ñħ Ñħ Ċ Ġ* Ġx xxxx . Ñħ Ñħ Ċ Ġ* Ġx xxxx Ñħ . Ñħ Ċ Ġ* Ġx xxxx Ñħ Ñħ . Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ¸ Ġend ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð° ÑİÑĤ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ġ 0 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ° Ġend ĠÐ½ ÐµÐ´ Ð¾ÑģÑĤ Ð¸ Ð¶ Ð¸Ð¼ Ð° ĠÐ´Ð»Ñı ĠÑģÐ» Ð¾Ð½ Ð° , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ġ- 1 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ»Ñİ Ð± Ð°Ñı ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° , ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠIllegalArgumentException (). Ċ Ġ* Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ñĭ : Ġb ish op Move Number ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= Ġ- 1 ; Ġb ish op Move Number ( Square ( 3 , Ġ 1 ), ĠSquare ( 3 , Ġ 7 )) Ġ= Ġ 2 . Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð½ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ¿ÑĢ Ð¾Ð¹ ÑĤÐ¸ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġ( 6 , Ġ 4 ) ĠÐº ĠÐº Ð» ÐµÑĤ ÐºÐµ Ġ( 3 , Ġ 7 ). Ċ Ġ*/ Ċ fun Ġb ish op Move Number ( start : ĠSquare , Ġend : ĠSquare ): ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġ!( start . inside () Ġ&& Ġend . inside ()) Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠ Ġstart Ġ== Ġend Ġ-> Ġ 0 ĊĠĠĠ Ġabs ( start . row Ġ- Ġend . row ) Ġ% Ġ 2 Ġ!= Ġabs ( start . column Ġ- Ġend . column ) Ġ% Ġ 2 Ġ-> Ġ- 1 ĊĠĠĠ Ġelse Ġ-> Ġif Ġ( abs ( start . row Ġ- Ġend . row ) Ġ== Ġabs ( start . column Ġ- Ġend . column )) Ġ 1 Ġelse Ġ 2 Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ġ( 5 ĠÐ± Ð°Ð» Ð» Ð¾Ð² ) Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÑģÐ» Ð¾Ð½ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐŀ Ð¿Ð¸Ñģ Ð°Ð½Ð¸Ðµ Ġ ÑħÐ¾Ð´ Ð¾Ð² ĠÑģÐ» Ð¾Ð½ Ð° ĠÑģÐ¼ . ĠÐ¿ÑĢÐµÐ´ Ñĭ Ð´ ÑĥÑī ÑĥÑİ ĠÐ·Ð°Ð´ Ð°Ñĩ Ñĥ . Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ° Ġend ĠÐ½ ÐµÐ´ Ð¾ÑģÑĤ Ð¸ Ð¶ Ð¸Ð¼ Ð° ĠÐ´Ð»Ñı ĠÑģÐ» Ð¾Ð½ Ð° , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ¿ ÑĥÑģÑĤ Ð¾Ð¹ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº . Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ° ĠÐ´Ð¾ÑģÑĤ Ð¸ Ð¶ Ð¸Ð¼ Ð° : Ċ Ġ* Ġ- ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ²Ñģ ÐµÐ³ Ð´Ð° ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤ ĠÐ² ĠÑģ ÐµÐ± Ñı ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġstart Ċ Ġ* Ġ- ĠÐº Ð» ÐµÑĤ ÐºÐ° Ġend ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤÑģÑı , ĠÐµÑģÐ»Ð¸ ĠÐ¾ Ð½Ð° ĠÐ½Ðµ ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð°ÐµÑĤ ĠÑģÐ¾ Ġstart . Ċ Ġ* Ġ- ĠÐ¼ ÐµÐ¶ Ð´Ñĥ ĠÐ½ Ð¸Ð¼ Ð¸ ĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ÑģÑı ĠÐ¿ÑĢ Ð¾Ð¼ ÐµÐ¶ Ñĥ ÑĤÐ¾ Ñĩ Ð½ÑĭÐµ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ , ĠÐ¿Ð¾ ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÑĥ ĠÐ¾ÑĤ Ġstart ĠÐ´Ð¾ Ġend . Ċ Ġ* Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ñĭ : Ġb ish op Trajectory ( Square ( 3 , Ġ 3 ), ĠSquare ( 3 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 3 )) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġb ish op Trajectory ( Square ( 3 , Ġ 1 ), ĠSquare ( 3 , Ġ 7 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 4 ), ĠSquare ( 3 , Ġ 7 )) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġb ish op Trajectory ( Square ( 1 , Ġ 3 ), ĠSquare ( 6 , Ġ 8 )) Ġ= ĠlistOf ( Square ( 1 , Ġ 3 ), ĠSquare ( 6 , Ġ 8 )) Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ð¾ ĠÐ½ ÐµÑģ Ðº Ð¾Ð»ÑĮÐºÐ¾ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ð¾Ð² ĠÑģ Ð°Ð¼ Ð¾Ð¹ ĠÐ±Ñĭ ÑģÑĤÑĢ Ð¾Ð¹ ĠÑĤ ÑĢÐ° ÐµÐºÑĤ Ð¾ÑĢ Ð¸Ð¸ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ»Ñİ Ð± Ð¾Ð¹ ĠÐ¸Ð· ĠÐ½ Ð¸Ñħ . Ċ Ġ*/ Ċ fun Ġb ish op Trajectory ( start : ĠSquare , Ġend : ĠSquare ): ĠList < Square > Ġ= Ġwhen Ġ( b ish op Move Number ( start , Ġend )) Ġ{ ĊĠĠĠ Ġ- 1 Ġ-> ĠlistOf () ĊĠĠĠĠ 1 Ġ-> ĠlistOf ( start , Ġend ) ĊĠĠĠĠ 2 Ġ-> ĠlistOf ( start , Ġget Middle ( start , Ġend ), Ġend ) ĊĠĠĠ Ġelse Ġ-> ĠlistOf ( start ) Ċ } Ċ Ċ fun Ġget Middle ( start : ĠSquare , Ġend : ĠSquare ): ĠSquare Ġ{ Ġ// ÑģÑĤ ÑĢÐ¾ Ð¸Ð¼ Ġ 4 ĠÐ¿ÑĢ Ñı Ð¼ ÑĭÐµ ĠÐ¸ ĠÐ¸ Ñī ÐµÐ¼ Ġ 2 ĠÑĤ Ð¾Ñĩ ÐºÐ¸ ĠÐ¿ÐµÑĢ ÐµÑģ ÐµÑĩ ÐµÐ½Ð¸Ñı ĊĠĠĠ Ġval Ġb 1 Ġ= Ġ( start . column Ġ- Ġstart . row Ġ+ Ġ 1 ) ĊĠĠĠ Ġval Ġb 2 Ġ= Ġ( start . column Ġ+ Ġstart . row Ġ- Ġ 1 ) ĊĠĠĠ Ġval Ġb 3 Ġ= Ġ( end . column Ġ- Ġend . row Ġ+ Ġ 1 ) ĊĠĠĠ Ġval Ġb 4 Ġ= Ġ( end . column Ġ+ Ġend . row Ġ- Ġ 1 ) ĊĠĠĠ Ġval Ġy P 1 Ġ= Ġ( b 1 Ġ+ Ġb 4 ) Ġ/ Ġ 2 ĊĠĠĠ Ġval Ġy P 2 Ġ= Ġ( b 2 Ġ+ Ġb 3 ) Ġ/ Ġ 2 ĊĠĠĠ Ġval Ġsquare 1 Ġ= ĠSquare ( y P 1 , Ġy P 1 Ġ- Ġb 1 Ġ+ Ġ 1 ) ĊĠĠĠ Ġreturn Ġif Ġ( square 1 . inside ()) Ġsquare 1 Ġelse ĠSquare ( y P 2 , Ġy P 2 Ġ- Ġb 3 Ġ+ Ġ 1 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ġ( 3 ĠÐ± Ð°Ð» Ð»Ð° ) Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐº Ð¾ÑĢ Ð¾Ð»ÑĮ ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐ ¨ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐº Ð¾ÑĢ Ð¾Ð»ÑĮ ĠÐ¾Ð´ Ð½ Ð¸Ð¼ Ġ ÑħÐ¾Ð´ Ð¾Ð¼ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ¿ÐµÑĢ ÐµÐ¼ ÐµÑģÑĤ Ð¸ÑĤÑĮ ÑģÑı ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ , ĠÐ² ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð¹ ĠÑģ ÑĤÐ¾ Ð¸ÑĤ , Ċ Ġ* ĠÐ½Ð° ĠÐ»Ñİ Ð± ÑĥÑİ ĠÑģ Ð¾Ñģ ÐµÐ´ Ð½ Ñİ Ñİ ĠÐ¿Ð¾ ĠÐ²ÐµÑĢ ÑĤÐ¸ ÐºÐ° Ð»Ð¸ , ĠÐ³ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»Ð¸ ĠÐ¸Ð»Ð¸ ĠÐ´ Ð¸ Ð°Ð³ Ð¾Ð½ Ð°Ð»Ð¸ . Ċ Ġ* ĠÐĿ Ð¸ Ð¶Ðµ ĠÑĤ Ð¾Ñĩ Ðº Ð°Ð¼Ð¸ ĠÐ²Ñĭ Ð´ÐµÐ» ÐµÐ½ Ñĭ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ Ġ ÑħÐ¾Ð´ Ñĭ ĠÐº Ð¾ÑĢ Ð¾Ð» Ñı , ĠÐ° ĠÐº ÑĢ ÐµÑģÑĤ Ð¸Ðº Ð°Ð¼Ð¸ Ġ-- ĠÐ½ ÐµÐ² Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ : Ċ Ġ* Ċ Ġ* Ġx xxxx Ċ Ġ* Ġx ... x Ċ Ġ* Ġx . K . x Ċ Ġ* Ġx ... x Ċ Ġ* Ġx xxxx Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ¸ Ġend ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð° ÑİÑĤ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ġ 0 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ»Ñİ Ð± Ð°Ñı ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° , ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠIllegalArgumentException (). Ċ Ġ* Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ : Ġking Move Number ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= Ġ 3 . Ċ Ġ* ĠÐļ Ð¾ÑĢ Ð¾Ð»ÑĮ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ¿Ð¾ÑģÐ» ÐµÐ´ Ð¾Ð² Ð°ÑĤÐµÐ»ÑĮ Ð½Ð¾ ĠÐ¿ÑĢ Ð¾Ð¹ ÑĤÐ¸ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ( 4 , Ġ 2 ) ĠÐ¸ Ġ( 5 , Ġ 2 ) ĠÐº ĠÐº Ð» ÐµÑĤ ÐºÐµ Ġ( 6 , Ġ 3 ). Ċ Ġ*/ Ċ fun Ġking Move Number ( start : ĠSquare , Ġend : ĠSquare ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ(! start . inside () Ġ|| Ġ! end . inside ()) Ġthrow ĠIllegalArgumentException () ĊĠĠĠ Ġval Ġdelta R Ġ= Ġabs ( start . row Ġ- Ġend . row ) ĊĠĠĠ Ġval Ġdelta C Ġ= Ġabs ( start . column Ġ- Ġend . column ) ĊĠĠĠ Ġreturn Ġdelta R Ġ+ Ġdelta C Ġ- Ġmin ( delta R , Ġdelta C ) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ġ( 5 ĠÐ± Ð°Ð» Ð» Ð¾Ð² ) Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐº Ð¾ÑĢ Ð¾Ð»ÑĮ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐŀ Ð¿Ð¸Ñģ Ð°Ð½Ð¸Ðµ Ġ ÑħÐ¾Ð´ Ð¾Ð² ĠÐº Ð¾ÑĢ Ð¾Ð» Ñı ĠÑģÐ¼ . ĠÐ¿ÑĢÐµÐ´ Ñĭ Ð´ ÑĥÑī ÑĥÑİ ĠÐ·Ð°Ð´ Ð°Ñĩ Ñĥ . Ċ Ġ* ĠÐ¡ Ð¿Ð¸Ñģ Ð¾Ðº ĠÐ²Ñģ ÐµÐ³ Ð´Ð° ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤ ĠÐ² ĠÑģ ÐµÐ± Ñı ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġstart . ĠÐļ Ð» ÐµÑĤ ÐºÐ° Ġend ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤÑģÑı , ĠÐµÑģÐ»Ð¸ ĠÐ¾ Ð½Ð° ĠÐ½Ðµ ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð°ÐµÑĤ ĠÑģÐ¾ Ġstart . Ċ Ġ* ĠÐľ ÐµÐ¶ Ð´Ñĥ ĠÐ½ Ð¸Ð¼ Ð¸ ĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ÑģÑı ĠÐ¿ÑĢ Ð¾Ð¼ ÐµÐ¶ Ñĥ ÑĤÐ¾ Ñĩ Ð½ÑĭÐµ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ , ĠÐ¿Ð¾ ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÑĥ ĠÐ¾ÑĤ Ġstart ĠÐ´Ð¾ Ġend . Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ñĭ : Ġking Trajectory ( Square ( 3 , Ġ 3 ), ĠSquare ( 3 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 3 )) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ( Ð· Ð´ ÐµÑģ ÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ñĭ ĠÐ´ÑĢÑĥÐ³ Ð¸Ðµ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ñĭ ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġking Trajectory ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 1 ), ĠSquare ( 4 , Ġ 2 ), ĠSquare ( 5 , Ġ 2 ), ĠSquare ( 6 , Ġ 3 )) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ( Ð· Ð´ ÐµÑģ ÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ ÐµÐ½ ĠÐµ Ð´ Ð¸Ð½ ÑģÑĤÐ² ÐµÐ½ Ð½ÑĭÐ¹ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġking Trajectory ( Square ( 3 , Ġ 5 ), ĠSquare ( 6 , Ġ 2 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 5 ), ĠSquare ( 4 , Ġ 4 ), ĠSquare ( 5 , Ġ 3 ), ĠSquare ( 6 , Ġ 2 )) Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ð¾ ĠÐ½ ÐµÑģ Ðº Ð¾Ð»ÑĮÐºÐ¾ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ð¾Ð² ĠÑģ Ð°Ð¼ Ð¾Ð¹ ĠÐ±Ñĭ ÑģÑĤÑĢ Ð¾Ð¹ ĠÑĤ ÑĢÐ° ÐµÐºÑĤ Ð¾ÑĢ Ð¸Ð¸ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ»Ñİ Ð± Ð¾Ð¹ ĠÐ¸Ð· ĠÐ½ Ð¸Ñħ . Ċ Ġ*/ Ċ fun Ġking Trajectory ( start : ĠSquare , Ġend : ĠSquare ): ĠList < Square > Ġ{ ĊĠĠĠ Ġif Ġ( start Ġ== Ġend ) Ġreturn Ġmutable ListOf ( start ) ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Square >() ĊĠĠĠ Ġval Ġdelta R Ġ= Ġend . row Ġ- Ġstart . row ĊĠĠĠ Ġval Ġdelta C Ġ= Ġend . column Ġ- Ġstart . column ĊĠĠĠ Ġval Ġdiagonal Ġ= Ġmin ( abs ( delta C ), Ġabs ( delta R )) ĊĠĠĠ Ġval Ġsign R Ġ= Ġif Ġ( delta R Ġ> Ġ 0 ) Ġstart . row .. start . row Ġ+ Ġdiagonal Ġelse Ġstart . row Ġdown To Ġstart . row Ġ- Ġdiagonal ĊĠĠĠ Ġval Ġsign C Ġ= Ġif Ġ( delta C Ġ> Ġ 0 ) Ġstart . column .. start . column Ġ+ Ġdiagonal Ġelse Ġstart . column Ġdown To Ġstart . column Ġ- Ġdiagonal ĊĠĠĠ Ġresult . addAll ( sign C . zip ( sign R ). map Ġ{ Ġ( column , Ġrow ) Ġ-> ĠSquare ( column , Ġrow ) Ġ}) ĊĠĠĠ Ġval Ġlast Ġ= Ġresult . last () ĊĠĠĠ Ġif Ġ( last Ġ== Ġend ) Ġreturn Ġresult ĊĠĠĠ Ġif Ġ( last . row Ġ== Ġend . row ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( column Ġin Ġif Ġ( last . column Ġ> Ġend . column ) Ġlast . column Ġ- Ġ 1 Ġdown To Ġend . column Ġelse Ġlast . column Ġ+ Ġ 1 .. end . column ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( Square ( column , Ġlast . row )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġif Ġ( last . row Ġ> Ġend . row ) Ġlast . row Ġ- Ġ 1 Ġdown To Ġend . row Ġelse Ġlast . row Ġ+ Ġ 1 .. end . row ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( Square ( last . column , Ġrow )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ fun Ġ< T > Ġk night Universal ( start : ĠSquare , Ġend : ĠSquare , Ġp : ĠT , Ġmap Check : Ġ( T , ĠT ) Ġ-> ĠBoolean , Ġsum : Ġ( T , ĠSquare ) Ġ-> ĠT ): ĠT Ġ= ĊĠĠĠ Ġif Ġ(! start . inside () Ġ|| Ġ! end . inside ()) Ġthrow ĠIllegalArgumentException () Ġelse ĊĠĠĠĠĠĠĠ Ġmutable Map Of ( start Ġto Ġp ). let Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= ĠArray Deque < Square >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġput Next ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare ( column , Ġrow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . inside () Ġ&& Ġ( map [ square ]?. let Ġ{ Ġmap Check ( it , Ġvalue ) Ġ} Ġ!= Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ square ] Ġ= Ġsum ( value , Ġsquare ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square Ġ! in Ġqueue ) Ġqueue . add ( square ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( queue . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurr Ġ= Ġqueue . remove First () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġcurr . column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġcurr . row ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap [ curr ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ+ Ġ 1 , Ġrow Ġ+ Ġ 2 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ+ Ġ 1 , Ġrow Ġ- Ġ 2 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ- Ġ 1 , Ġrow Ġ+ Ġ 2 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ- Ġ 1 , Ġrow Ġ- Ġ 2 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ+ Ġ 2 , Ġrow Ġ+ Ġ 1 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ+ Ġ 2 , Ġrow Ġ- Ġ 1 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ- Ġ 2 , Ġrow Ġ+ Ġ 1 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Next ( column Ġ- Ġ 2 , Ġrow Ġ- Ġ 1 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ end ] !! ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ġ( 6 ĠÐ± Ð°Ð» Ð» Ð¾Ð² ) Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐºÐ¾Ð½ ÑĮ ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐ ¨ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐºÐ¾Ð½ ÑĮ ĠÐ¾Ð´ Ð½ Ð¸Ð¼ Ġ ÑħÐ¾Ð´ Ð¾Ð¼ ĠÐ² Ð½Ð°Ñĩ Ð°Ð» Ðµ ĠÐ¿ÐµÑĢ ÐµÐ´ Ð² Ð¸Ð³ Ð°ÐµÑĤÑģÑı ĠÑĢ Ð¾Ð² Ð½Ð¾ ĠÐ½Ð° Ġ 2 ĠÐº Ð» ÐµÑĤ ÐºÐ¸ ĠÐ¿Ð¾ ĠÐ³ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»Ð¸ ĠÐ¸Ð»Ð¸ ĠÐ²ÐµÑĢ ÑĤÐ¸ ÐºÐ° Ð»Ð¸ , Ċ Ġ* ĠÐ° ĠÐ· Ð°ÑĤ ÐµÐ¼ ĠÐµ Ñī Ñĳ ĠÐ½Ð° Ġ 1 ĠÐº Ð» ÐµÑĤ ÐºÑĥ ĠÐ¿Ð¾Ð´ ĠÐ¿ÑĢ Ñı Ð¼ Ñĭ Ð¼ ĠÑĥ Ð³ Ð» Ð¾Ð¼ , ĠÐ¾Ð± ÑĢÐ°Ð· Ñĥ Ñı ĠÐ± Ñĥ Ðº Ð² Ñĥ Ġ" Ðĵ ". Ċ Ġ* ĠÐĿ Ð¸ Ð¶Ðµ ĠÑĤ Ð¾Ñĩ Ðº Ð°Ð¼Ð¸ ĠÐ²Ñĭ Ð´ÐµÐ» ÐµÐ½ Ñĭ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ Ġ ÑħÐ¾Ð´ Ñĭ ĠÐºÐ¾Ð½ Ñı , ĠÐ° ĠÐº ÑĢ ÐµÑģÑĤ Ð¸Ðº Ð°Ð¼Ð¸ Ġ-- ĠÐ½ ÐµÐ² Ð¾Ð· Ð¼Ð¾Ð¶ Ð½ÑĭÐµ : Ċ Ġ* Ċ Ġ* Ġ. xxx . xxx Ċ Ġ* Ġxx K xxxx x Ċ Ġ* Ġ. xxx . xxx Ċ Ġ* Ġx . x . xxxx Ċ Ġ* Ġx xxxx xxx Ċ Ġ* Ġx xxxx xxx Ċ Ġ* Ġx xxxx xxx Ċ Ġ* Ġx xxxx xxx Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ¸ Ġend ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð° ÑİÑĤ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ġ 0 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ»Ñİ Ð± Ð°Ñı ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° , ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠIllegalArgumentException (). Ċ Ġ* Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ : Ġk night Move Number ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= Ġ 3 . Ċ Ġ* ĠÐļ Ð¾Ð½ ÑĮ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ¿Ð¾ÑģÐ» ÐµÐ´ Ð¾Ð² Ð°ÑĤÐµÐ»ÑĮ Ð½Ð¾ ĠÐ¿ÑĢ Ð¾Ð¹ ÑĤÐ¸ ĠÑĩ ÐµÑĢ ÐµÐ· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ( 5 , Ġ 2 ) ĠÐ¸ Ġ( 4 , Ġ 4 ) ĠÐº ĠÐº Ð» ÐµÑĤ ÐºÐµ Ġ( 6 , Ġ 3 ). Ċ Ġ*/ Ċ fun Ġk night Move Number ( start : ĠSquare , Ġend : ĠSquare ): ĠInt Ġ= ĊĠĠĠ Ġk night Universal ( start , Ġend , Ġ 0 , Ġ{ Ġa : ĠInt , Ġb : ĠInt Ġ-> Ġa Ġ> Ġb Ġ+ Ġ 1 Ġ}, Ġ{ Ġa : ĠInt , Ġ_: ĠSquare Ġ-> Ġa Ġ+ Ġ 1 Ġ}) Ċ Ċ /** Ċ Ġ* ĠÐŀ Ñĩ ÐµÐ½ÑĮ ĠÑģÐ» Ð¾Ð¶ Ð½Ð°Ñı Ġ( 1 0 ĠÐ± Ð°Ð» Ð» Ð¾Ð² ) Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐºÐ¾Ð½ ÑĮ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġstart ĠÐ² ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġend . Ċ Ġ* ĠÐŀ Ð¿Ð¸Ñģ Ð°Ð½Ð¸Ðµ Ġ ÑħÐ¾Ð´ Ð¾Ð² ĠÐºÐ¾Ð½ Ñı ĠÑģÐ¼ . ĠÐ¿ÑĢÐµÐ´ Ñĭ Ð´ ÑĥÑī ÑĥÑİ ĠÐ·Ð°Ð´ Ð°Ñĩ Ñĥ . Ċ Ġ* ĠÐ¡ Ð¿Ð¸Ñģ Ð¾Ðº ĠÐ²Ñģ ÐµÐ³ Ð´Ð° ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤ ĠÐ² ĠÑģ ÐµÐ± Ñı ĠÐº Ð» ÐµÑĤ ÐºÑĥ Ġstart . ĠÐļ Ð» ÐµÑĤ ÐºÐ° Ġend ĠÐ² ÐºÐ»ÑİÑĩ Ð°ÐµÑĤÑģÑı , ĠÐµÑģÐ»Ð¸ ĠÐ¾ Ð½Ð° ĠÐ½Ðµ ĠÑģ Ð¾Ð² Ð¿ Ð°Ð´ Ð°ÐµÑĤ ĠÑģÐ¾ Ġstart . Ċ Ġ* ĠÐľ ÐµÐ¶ Ð´Ñĥ ĠÐ½ Ð¸Ð¼ Ð¸ ĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ÑģÑı ĠÐ¿ÑĢ Ð¾Ð¼ ÐµÐ¶ Ñĥ ÑĤÐ¾ Ñĩ Ð½ÑĭÐµ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ , ĠÐ¿Ð¾ ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÑĥ ĠÐ¾ÑĤ Ġstart ĠÐ´Ð¾ Ġend . Ċ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ Ñĭ : Ċ Ġ* Ċ Ġ* Ġk night Trajectory ( Square ( 3 , Ġ 3 ), ĠSquare ( 3 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 3 )) Ċ Ġ* ĠÐ· Ð´ ÐµÑģ ÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ñĭ ĠÐ´ÑĢÑĥÐ³ Ð¸Ðµ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ñĭ ) Ċ Ġ* Ġk night Trajectory ( Square ( 3 , Ġ 1 ), ĠSquare ( 6 , Ġ 3 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 1 ), ĠSquare ( 5 , Ġ 2 ), ĠSquare ( 4 , Ġ 4 ), ĠSquare ( 6 , Ġ 3 )) Ċ Ġ* Ġ( Ð· Ð´ ÐµÑģ ÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ ÐµÐ½ ĠÐµ Ð´ Ð¸Ð½ ÑģÑĤÐ² ÐµÐ½ Ð½ÑĭÐ¹ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ ) Ċ Ġ* Ġk night Trajectory ( Square ( 3 , Ġ 5 ), ĠSquare ( 5 , Ġ 6 )) Ġ= ĠlistOf ( Square ( 3 , Ġ 5 ), ĠSquare ( 5 , Ġ 6 )) Ċ Ġ* Ġ( Ð· Ð´ ÐµÑģ ÑĮ ĠÐ¾Ð¿ Ñı ÑĤÑĮ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ñĭ ĠÐ´ÑĢÑĥÐ³ Ð¸Ðµ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ñĭ ) Ċ Ġ* Ġk night Trajectory ( Square ( 7 , Ġ 7 ), ĠSquare ( 8 , Ġ 8 )) Ġ= Ċ Ġ* ĠĠĠĠ ĠlistOf ( Square ( 7 , Ġ 7 ), ĠSquare ( 5 , Ġ 8 ), ĠSquare ( 4 , Ġ 6 ), ĠSquare ( 6 , Ġ 7 ), ĠSquare ( 8 , Ġ 8 )) Ċ Ġ* Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶ Ð½Ð¾ ĠÐ½ ÐµÑģ Ðº Ð¾Ð»ÑĮÐºÐ¾ ĠÐ² Ð°ÑĢ Ð¸ Ð°Ð½ ÑĤ Ð¾Ð² ĠÑģ Ð°Ð¼ Ð¾Ð¹ ĠÐ±Ñĭ ÑģÑĤÑĢ Ð¾Ð¹ ĠÑĤ ÑĢÐ° ÐµÐºÑĤ Ð¾ÑĢ Ð¸Ð¸ , ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ»Ñİ Ð± Ð¾Ð¹ ĠÐ¸Ð· ĠÐ½ Ð¸Ñħ . Ċ Ġ*/ Ċ fun Ġk night Trajectory ( start : ĠSquare , Ġend : ĠSquare ): ĠList < Square > Ġ= Ġif Ġ( start Ġ== Ġend ) ĠlistOf ( start ) Ġelse ĊĠĠĠ Ġk night Universal ( ĊĠĠĠĠĠĠĠ Ġstart , ĊĠĠĠĠĠĠĠ Ġend , ĊĠĠĠĠĠĠĠ ĠPair ( 0 , ĠlistOf ( start )), ĊĠĠĠĠĠĠĠ Ġ{ Ġ( current ), Ġ( checked ) Ġ-> Ġcurrent Ġ> Ġchecked Ġ+ Ġ 1 Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġ( first , Ġsecond ), Ġsquare Ġ-> ĠPair ( first Ġ+ Ġ 1 , Ġsecond Ġ+ Ġsquare ) Ġ}). second Ċ