@ file : Suppress (" UNUSED _ PARAMETER ") Ċ Ċ package Ġlesson 8 . task 2 Ċ Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* ĠÐļ Ð» ÐµÑĤ ÐºÐ° ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð¾Ð¹ ĠÐ´ Ð¾Ñģ ÐºÐ¸ . ĠÐ ¨ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ´ Ð¾Ñģ ÐºÐ° ĠÐº Ð² Ð°Ð´ ÑĢÐ°ÑĤ Ð½Ð°Ñı ĠÐ¸ ĠÐ¸Ð¼ Ðµ ÐµÑĤ Ġ 8 ĠÑħ Ġ 8 ĠÐº Ð» ÐµÑĤ Ð¾Ðº . Ċ Ġ* ĠÐŁ Ð¾ Ñį ÑĤ Ð¾Ð¼Ñĥ , ĠÐ¾Ð± Ðµ ĠÐº Ð¾ Ð¾ÑĢ Ð´ Ð¸Ð½ Ð°ÑĤ Ñĭ ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ( Ð³ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»ÑĮ Ġrow , ĠÐ²ÐµÑĢ ÑĤÐ¸ Ðº Ð°Ð»ÑĮ Ġcolumn ) ĠÐ¼ Ð¾Ð³ ÑĥÑĤ ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤÑĮ ÑģÑı ĠÐ² ĠÐ¿ÑĢÐµÐ´ ÐµÐ» Ð°Ñħ ĠÐ¾ÑĤ Ġ 1 ĠÐ´Ð¾ Ġ 8 . Ċ Ġ* ĠÐ ĵ Ð¾ÑĢ Ð¸Ð· Ð¾Ð½ ÑĤ Ð°Ð»Ð¸ ĠÐ½ ÑĥÐ¼ ÐµÑĢ ÑĥÑİ ÑĤ ÑģÑı ĠÑģ Ð½Ð¸ Ð· Ñĥ ĠÐ² Ð²ÐµÑĢ Ñħ , ĠÐ²ÐµÑĢ ÑĤÐ¸ ÐºÐ° Ð»Ð¸ ĠÑģÐ» ÐµÐ² Ð° ĠÐ½Ð°Ð¿ ÑĢÐ°Ð² Ð¾ . Ċ Ġ*/ Ċ Ċ data Ġclass ĠSquare ( var Ġcolumn : ĠInt , Ġvar Ġrow : ĠInt ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ð¸Ð¼ÐµÑĢ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ Ġtrue , ĠÐµÑģÐ»Ð¸ ĠÐº Ð» ÐµÑĤ ÐºÐ° ĠÐ½Ð° ÑħÐ¾Ð´ Ð¸ÑĤ ÑģÑı ĠÐ² ĠÐ¿ÑĢÐµÐ´ ÐµÐ» Ð°Ñħ ĠÐ´ Ð¾Ñģ ÐºÐ¸ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinside (): ĠBoolean Ġ= Ġcolumn Ġin Ġ 1 .. 8 Ġ&& Ġrow Ġin Ġ 1 .. 8 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ ĠÑģÑĤÑĢÐ¾Ðº Ð¾Ð² ÑĥÑİ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸ Ñİ ĠÐ´Ð»Ñı ĠÐº Ð» ÐµÑĤ ÐºÐ¸ . ĊĠĠĠĠ Ġ* ĠÐĴ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ð¸ , ĠÐºÐ¾Ð» Ð¾Ð½ ÐºÐ¸ ĠÐ¾Ð± Ð¾Ð· Ð½Ð°Ñĩ Ð° ÑİÑĤÑģÑı ĠÐ» Ð°ÑĤ Ð¸Ð½ ÑģÐº Ð¸Ð¼ Ð¸ ĠÐ± Ñĥ Ðº Ð² Ð°Ð¼Ð¸ ĠÐ¾ÑĤ Ġa ĠÐ´Ð¾ Ġh , ĠÐ° ĠÑĢ Ñı Ð´ Ñĭ Ġ-- ĠÑĨ Ð¸ÑĦ ÑĢÐ°Ð¼ Ð¸ ĠÐ¾ÑĤ Ġ 1 ĠÐ´Ð¾ Ġ 8 . ĊĠĠĠĠ Ġ* ĠÐĶ Ð»Ñı ĠÐº Ð» ÐµÑĤ ÐºÐ¸ ĠÐ½Ðµ ĠÐ² ĠÐ¿ÑĢÐµÐ´ ÐµÐ» Ð°Ñħ ĠÐ´ Ð¾Ñģ ÐºÐ¸ ĠÐ²ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÐ¿ ÑĥÑģÑĤ ÑĥÑİ ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġnotation (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! inside ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġ(' a ' Ġ+ Ġcolumn Ġ- Ġ 1 ). toString () Ġ+ Ġ"$ row " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐ¡ Ð¾Ð· Ð´Ð° Ñĳ ÑĤ ĠÐº Ð» ÐµÑĤ ÐºÑĥ ĠÐ¿Ð¾ ĠÑģÑĤÑĢÐ¾Ðº Ð¾Ð² Ð¾Ð¹ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ð¸ . Ċ Ġ* ĠÐĴ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ð¸ , ĠÐºÐ¾Ð» Ð¾Ð½ ÐºÐ¸ ĠÐ¾Ð± Ð¾Ð· Ð½Ð°Ñĩ Ð° ÑİÑĤÑģÑı ĠÐ» Ð°ÑĤ Ð¸Ð½ ÑģÐº Ð¸Ð¼ Ð¸ ĠÐ± Ñĥ Ðº Ð² Ð°Ð¼Ð¸ ĠÐ¾ÑĤ Ġa ĠÐ´Ð¾ Ġh , ĠÐ° ĠÑĢ Ñı Ð´ Ñĭ Ġ-- ĠÑĨ Ð¸ÑĦ ÑĢÐ°Ð¼ Ð¸ ĠÐ¾ÑĤ Ġ 1 ĠÐ´Ð¾ Ġ 8 . Ċ Ġ* ĠÐķÑģÐ»Ð¸ ĠÐ½ Ð¾ÑĤ Ð°ÑĨÐ¸Ñı ĠÐ½ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð° , ĠÐ± ÑĢÐ¾Ñģ Ð¸ÑĤÑĮ ĠIllegalArgumentException Ċ Ġ*/ Ċ Ċ fun Ġsquare ( notation : ĠString ): ĠSquare Ġ{ ĊĠĠĠ Ġrequire ( notation Ġ!= Ġ"" Ġ&& Ġnotation . length Ġ== Ġ 2 ) ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠPair ( notation . first () Ġ- Ġ' a ' Ġ+ Ġ 1 , Ġnotation . last () Ġ- Ġ' 0 ') ĊĠĠĠ Ġrequire ( coordinates . first Ġin Ġ 1 .. 8 Ġ&& Ġcoordinates . second Ġin Ġ 1 .. 8 ) ĊĠĠĠ Ġreturn ĠSquare ( coordinates . first , Ġcoordinates . second ) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ» Ð°Ð´ ÑĮ Ñı ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 Ġ{ ĊĠĠĠ Ġrequire ( start . inside () Ġ&& Ġend . inside ()) ĊĠĠĠ Ġvar Ġanswer Ġ= Ġ 0 ĊĠĠĠ Ġif Ġ( start . column Ġ!= Ġend . column ) ĊĠĠĠĠĠĠĠ Ġanswer ++ ĊĠĠĠ Ġif Ġ( start . row Ġ!= Ġend . row ) ĊĠĠĠĠĠĠĠ Ġanswer ++ ĊĠĠĠ Ġreturn Ġanswer Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½Ð°Ñı ĠÐ» Ð°Ð´ ÑĮ Ñı ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 > Ġ{ ĊĠĠĠ Ġval Ġtrace Ġ= Ġmutable ListOf < Square >() ĊĠĠĠ Ġtrace . add ( start ) ĊĠĠĠ Ġif Ġ( start . column Ġ!= Ġend . column ) ĊĠĠĠĠĠĠĠ Ġtrace . add ( Square ( end . column , Ġstart . row )) ĊĠĠĠ Ġif Ġ( start . row Ġ!= Ġend . row ) ĊĠĠĠĠĠĠĠ Ġtrace . add ( Square ( end . column , Ġend . row )) ĊĠĠĠ Ġreturn Ġtrace Ċ } Ċ Ċ /** Ċ Ġ* ĠÐŁ ÑĢ Ð¾ÑģÑĤ Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÑģÐ» Ð¾Ð½ ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 Ġcolor ( position : ĠSquare ): ĠBoolean Ġ= Ġposition . column Ġ% Ġ 2 Ġ== Ġposition . row Ġ% Ġ 2 Ċ Ċ fun Ġb ish op Move Number ( start : ĠSquare , Ġend : ĠSquare ): ĠInt Ġ{ ĊĠĠĠ Ġrequire ( start . inside () Ġ&& Ġend . inside ()) ĊĠĠĠ Ġif Ġ( start Ġ== Ġend ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ- 1 ĊĠĠĠ Ġif Ġ( color ( start ) Ġ!= Ġcolor ( end )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcounter ĊĠĠĠ Ġcounter Ġ+= Ġif Ġ( abs ( start . row Ġ- Ġend . row ) Ġ== Ġabs ( start . column Ġ- Ġend . column )) ĊĠĠĠĠĠĠĠĠ 2 ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠ 3 ĊĠĠĠ Ġreturn Ġcounter Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÑģÐ» Ð¾Ð½ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 > Ġ{ ĊĠĠĠ Ġrequire ( start . inside () Ġ&& Ġend . inside ()) ĊĠĠĠ Ġval Ġtrace Ġ= Ġmutable ListOf < Square >() ĊĠĠĠ Ġif Ġ( start Ġ== Ġend ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrace . add ( start ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrace ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( color ( start ) Ġ!= Ġcolor ( end )) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrace ĊĠĠĠ Ġtrace . add ( start ) ĊĠĠĠ Ġif Ġ( abs ( start . row Ġ- Ġend . row ) Ġ!= Ġabs ( start . column Ġ- Ġend . column )) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Ġ= ĠSquare ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġ 1 .. 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġ 1 .. 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( r Ġ- Ġstart . row ) Ġ== Ġabs ( c Ġ- Ġstart . column ) Ġ&& Ġabs ( r Ġ- Ġend . row ) Ġ== Ġabs ( c Ġ- Ġend . column )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= ĠSquare ( c , Ġr ) ĊĠĠĠĠĠĠĠ Ġtrace . add ( temp ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtrace . add ( end ) ĊĠĠĠ Ġreturn Ġtrace Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ ÑĢÐµÐ´ Ð½Ñı Ñı Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐº Ð¾ÑĢ Ð¾Ð»ÑĮ ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 Ġ{ ĊĠĠĠ Ġrequire ( start . inside () Ġ&& Ġend . inside ()) ĊĠĠĠ Ġreturn Ġmax ( abs ( start . column Ġ- Ġend . column ), Ġabs ( start . row Ġ- Ġend . row )) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐº Ð¾ÑĢ Ð¾Ð»ÑĮ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 > Ġ= ĠTODO () Ċ Ċ /** Ċ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐŀ Ð¿ ÑĢÐµÐ´ÐµÐ» Ð¸ÑĤÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð¾ Ġ ÑħÐ¾Ð´ Ð¾Ð² , ĠÐ·Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐºÐ¾Ð½ ÑĮ ĠÐ¿ÑĢ Ð¾Ð¹ Ð´ Ñĳ ÑĤ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 Ġ= ĠTODO () Ċ Ċ /** Ċ Ġ* ĠÐŀ Ñĩ ÐµÐ½ÑĮ ĠÑģÐ» Ð¾Ð¶ Ð½Ð°Ñı Ċ Ġ* Ċ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ ĠÑģÐ¿Ð¸Ñģ Ð¾Ðº ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ Ð¾Ðº , ĠÐ¿Ð¾ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ñĭ Ð¼ ĠÑĪ Ð°Ñħ Ð¼ Ð°ÑĤ Ð½ÑĭÐ¹ ĠÐºÐ¾Ð½ ÑĮ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ±Ñĭ ÑģÑĤÑĢ ÐµÐµ ĠÐ²Ñģ ÐµÐ³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°ÑģÑĤ ÑĮ ĠÐ¸Ð· ĠÐº Ð» ÐµÑĤ ÐºÐ¸ Ġ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 > Ġ= ĠTODO () Ċ