@ file : Suppress (" UNUSED _ PARAMETER ") Ċ Ċ package Ġlesson 1 1 . task 1 Ċ Ċ /** Ċ Ġ* ĠÐļ Ð»Ð°ÑģÑģ Ġ" Ðº Ð¾Ð¼ Ð¿ Ð» ÐµÐº Ñģ Ð½Ð¾Ðµ ĠÑĩ Ð¸Ñģ Ð»Ð¾ ". Ċ Ġ* Ċ Ġ* ĠÐŀ Ð± Ñī Ð°Ñı ĠÑģÐ» Ð¾Ð¶ Ð½Ð¾ÑģÑĤÑĮ ĠÐ·Ð°Ð´ Ð°Ð½Ð¸Ñı Ġ-- ĠÐ» Ñĳ Ð³ ÐºÐ° Ñı , ĠÐ¾Ð± Ñī Ð°Ñı ĠÑĨ ÐµÐ½ Ð½Ð¾ÑģÑĤÑĮ ĠÐ² ĠÐ± Ð°Ð» Ð»Ð° Ñħ Ġ-- Ġ 8 . Ċ Ġ* ĠÐŀ Ð± ÑĬ ÐµÐºÑĤ ĠÐºÐ»Ð°ÑģÑģ Ð° Ġ-- ĠÐºÐ¾Ð¼Ð¿ Ð» ÐµÐº Ñģ Ð½Ð¾Ðµ ĠÑĩ Ð¸Ñģ Ð»Ð¾ ĠÐ² Ð¸ Ð´Ð° Ġx + yi . Ċ Ġ* ĠÐŁ ÑĢÐ¾ ĠÐ¿ÑĢ Ð¸Ð½ ÑĨÐ¸ Ð¿ Ñĭ ĠÑĢÐ°Ð±Ð¾ÑĤ Ñĭ ĠÑģ ĠÐºÐ¾Ð¼Ð¿ Ð» ÐµÐº Ñģ Ð½Ñĭ Ð¼Ð¸ ĠÑĩ Ð¸Ñģ Ð» Ð°Ð¼Ð¸ ĠÑģÐ¼ . ĠÑģÑĤ Ð°ÑĤÑĮ Ñİ ĠÐĴ Ð¸ ÐºÐ¸ Ð¿ ÐµÐ´ Ð¸Ð¸ Ġ" Ðļ Ð¾Ð¼ Ð¿ Ð» ÐµÐº Ñģ Ð½Ð¾Ðµ ĠÑĩ Ð¸Ñģ Ð»Ð¾ ". Ċ Ġ* Ċ Ġ* ĠÐĲ ÑĢ Ð³ ÑĥÐ¼ÐµÐ½ÑĤ Ñĭ ĠÐºÐ¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ Ð° Ġ-- ĠÐ² Ðµ Ñī ÐµÑģÑĤÐ² ÐµÐ½ Ð½Ð°Ñı ĠÐ¸ ĠÐ¼ Ð½ Ð¸Ð¼ Ð°Ñı ĠÑĩ Ð°ÑģÑĤ ÑĮ ĠÑĩ Ð¸Ñģ Ð»Ð° . Ċ Ġ*/ Ċ class ĠComplex ( val Ġre : ĠDouble , Ġval Ġim : ĠDouble ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐļ Ð¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÐ¸Ð· ĠÐ² Ðµ Ñī ÐµÑģÑĤÐ² ÐµÐ½ Ð½Ð¾Ð³Ð¾ ĠÑĩ Ð¸Ñģ Ð»Ð° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( x : ĠDouble ) Ġ: Ġthis ( x , Ġ 0 . 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐļ Ð¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÐ¸Ð· ĠÑģÑĤÑĢÐ¾Ðº Ð¸ ĠÐ² Ð¸ Ð´Ð° Ġx + yi ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Values ( s : ĠString ): ĠPair < Double , ĠDouble > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠRegex (""" (- ?\ d +( ?:\ .\ d + )? )? (?: ([ +- ]\ d +( ?:\ .\ d + )? ) i )? "" "). match Ent ire ( s . trim ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġfilter . group Values [ 1 ]. toDouble OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġfilter . group Values [ 2 ]. toDouble OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Ġ== Ġnull Ġ&& Ġi Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( r Ġ?: Ġ 0 . 0 , Ġi Ġ?: Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( s : ĠString ) Ġ: Ġthis ( getValues ( s ). first , Ġget Values ( s ). second ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ Ð» Ð¾Ð¶ ÐµÐ½Ð¸Ðµ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠComplex ): ĠComplex Ġ= ĠComplex ( re Ġ+ Ġother . re , Ġim Ġ+ Ġother . im ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ Ð¼ÐµÐ½ Ð° ĠÐ· Ð½ Ð°Ðº Ð° Ġ( Ñĥ ĠÐ¾Ð± Ðµ Ð¸Ñħ ĠÑĩ Ð°ÑģÑĤ ÐµÐ¹ ĠÑĩ Ð¸Ñģ Ð»Ð° ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġunary Minus (): ĠComplex Ġ= ĠComplex (- re , Ġ- im ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĴ Ñĭ Ñĩ Ð¸ÑĤ Ð°Ð½Ð¸Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠComplex ): ĠComplex Ġ= ĠComplex ( re Ġ- Ġother . re , Ġim Ġ- Ġother . im ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ£ Ð¼ Ð½ Ð¾Ð¶ ÐµÐ½Ð¸Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠComplex ): ĠComplex Ġ= ĊĠĠĠĠĠĠĠ ĠComplex ( re Ġ* Ġother . re Ġ- Ġim Ġ* Ġother . im , Ġre Ġ* Ġother . im Ġ+ Ġim Ġ* Ġother . re ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĶ ÐµÐ» ÐµÐ½Ð¸Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġdiv ( other : ĠComplex ): ĠComplex Ġ= ĠComplex ( ĊĠĠĠĠĠĠĠ Ġ(( re Ġ* Ġother . re ) Ġ+ Ġ( im Ġ* Ġother . im )) Ġ/ Ġ(( other . re Ġ* Ġother . re ) Ġ+ Ġ( other . im Ġ* Ġother . im )), ĊĠĠĠĠĠĠĠ Ġ(( other . re Ġ* Ġim ) Ġ- Ġ( re Ġ* Ġother . im )) Ġ/ Ġ(( other . re Ġ* Ġother . re ) Ġ+ Ġ( other . im Ġ* Ġother . im )) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ ÑĢÐ°Ð² Ð½ ÐµÐ½Ð¸Ðµ ĠÐ½Ð° ĠÑĢÐ°Ð ² ÐµÐ½ ÑģÑĤÐ² Ð¾ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ=== Ġthis ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠComplex ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġre Ġ== Ġother . re Ġ&& Ġim Ġ== Ġother . im ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢ Ðµ Ð¾Ð± ÑĢÐ°Ð· Ð¾Ð² Ð°Ð½Ð¸Ðµ ĠÐ² ĠÑģÑĤÑĢÐ¾Ðº Ñĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"$ re ${ if Ġ( im Ġ>= Ġ 0 ) Ġ" +" Ġelse Ġ"" }${ im } i " Ċ }