package Ġru . z ah ara . cook iel ib . other Ċ Ċ import Ġkotlin . math . sqrt Ċ Ċ /** Ċ Ġ* ĠÐļ Ð»Ð°ÑģÑģ ĠÐ¸Ð· Ð¼ÐµÐ½ Ñı ÐµÐ¼ Ð¾Ð³Ð¾ ĠÐ¼ Ð°ÑĤ ÐµÐ¼ Ð°ÑĤ Ð¸ÑĩÐµÑģ Ðº Ð¾Ð³Ð¾ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ð° . Ċ Ġ*/ Ċ class ĠVec 2 ( var Ġx : ĠDouble , Ġvar Ġy : ĠDouble ) Ċ { ĊĠĠĠ Ġconstructor ( x Ġ: ĠNumber , Ġy Ġ: ĠNumber ) Ġ: Ġthis ( x . toDouble (), Ġy . toDouble ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ð¸Ð² Ð¾Ð´ Ð¸ÑĤ ĠÐº ĠÐµ Ð´ ÐµÐ½Ð¸ Ñĩ Ð½Ð¾Ð¼ Ñĥ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ñĥ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Unit () Ġ: ĠVec 2 ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ/= Ġthis () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoperator Ġfun Ġplus ( o Ġ: ĠVec 2 ) Ġ: ĠVec 2 Ġ= ĠVec 2 ( x Ġ+ Ġo . x , Ġy Ġ+ Ġo . y ) ĊĠĠĠ Ġoperator Ġfun Ġminus ( o Ġ: ĠVec 2 ) Ġ: ĠVec 2 Ġ= ĠVec 2 ( x Ġ- Ġo . x , Ġy Ġ- Ġo . y ) ĊĠĠĠ Ġoperator Ġfun Ġtimes ( o Ġ: ĠNumber ) Ġ= ĠVec 2 ( x Ġ* Ġo . toDouble (), Ġy Ġ* Ġo . toDouble ()) ĊĠĠĠ Ġoperator Ġfun Ġdiv ( o Ġ: ĠNumber ) Ġ= Ġtimes ( 1 Ġ/ Ġo . toDouble ()) ĊĊĠĠĠ Ġoperator Ġfun Ġdiv Assign ( o Ġ: ĠDouble ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġx Ġ/= Ġo ĊĠĠĠĠĠĠĠ Ġy Ġ/= Ġo ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĴ Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ ĠÐ¼Ð¾Ð´ ÑĥÐ»ÑĮ ĠÐ² ÐµÐºÑĤ Ð¾ÑĢ Ð° . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġinvoke () Ġ= Ġsqrt ( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" Vec [ x :$ x , Ġy :$ y ]" ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠVec 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġx Ġ== Ġother . x Ġ&& Ġy Ġ== Ġother . y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġx . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġy . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ