package Ġcom . so y wiz . kor io . util Ċ Ċ import Ġkotlin . math .* Ċ Ċ object ĠNumber Parser Ġ{ Ċ ĉ fun ĠparseInt ( str : ĠString , Ġstart : ĠInt Ġ= Ġ 0 , Ġend : ĠInt Ġ= Ġstr . length , Ġradix : ĠInt Ġ= Ġ 1 0 ): ĠInt Ġ{ Ċĉ ĉ var Ġpositive Ġ= Ġtrue Ċĉ ĉ var Ġout Ġ= Ġ 0 Ċĉ ĉ loop @ Ġfor Ġ( n Ġin Ġstart Ġuntil Ġend ) Ġ{ Ċĉĉ ĉ val Ġc Ġ= Ġstr [ n ] Ċĉĉ ĉ if Ġ( c Ġ== Ġ'-' Ġ|| Ġc Ġ== Ġ'+ ') Ġ{ Ċĉĉĉ ĉ positive Ġ= Ġ( c Ġ== Ġ'+ ') Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ val Ġvalue Ġ= Ġc . ctype As Int () Ċĉĉĉ ĉ if Ġ( value Ġ< Ġ 0 ) Ġbreak @ loop Ċĉĉĉ ĉ out Ġ*= Ġradix Ċĉĉĉ ĉ out Ġ+= Ġvalue Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ return Ġif Ġ( positive ) Ġout Ġelse Ġ- out Ċ ĉ } ĊĊ ĉ fun Ġparse Double ( str : ĠString , Ġstart : ĠInt Ġ= Ġ 0 , Ġend : ĠInt Ġ= Ġstr . length ): ĠDouble Ġ{ Ċĉ ĉ var Ġout Ġ= Ġ 0 . 0 Ċĉ ĉ var Ġfrac Ġ= Ġ 1 . 0 Ċĉ ĉ var Ġpoint Seen Ġ= Ġfalse Ċĉ ĉ var Ġe Seen Ġ= Ġfalse Ċĉ ĉ var Ġneg ate Ġ= Ġfalse Ċĉ ĉ var Ġneg ate Exponent Ġ= Ġfalse Ċĉ ĉ var Ġexponent Ġ= Ġ 0 Ċĉ ĉ for Ġ( n Ġin Ġstart Ġuntil Ġend ) Ġ{ Ċĉĉ ĉ val Ġc Ġ= Ġstr [ n ] Ċĉĉ ĉ when Ġ( c ) Ġ{ Ċĉĉĉ ĉ ' e ', Ġ' E ' Ġ-> Ġe Seen Ġ= Ġtrue Ċĉĉĉ ĉ ' -' Ġ-> Ġ{ Ċĉĉĉĉ ĉ if Ġ( e Seen ) Ġneg ate Exponent Ġ= Ġtrue Ġelse Ġneg ate Ġ= Ġtrue Ċĉĉĉ ĉ } Ċĉĉĉ ĉ '. ' Ġ-> Ġpoint Seen Ġ= Ġtrue Ċĉĉĉ ĉ else Ġ-> Ġ{ Ċĉĉĉĉ ĉ if Ġ( e Seen ) Ġ{ Ċĉĉĉĉĉ ĉ exponent Ġ*= Ġ 1 0 Ċĉĉĉĉĉ ĉ exponent Ġ+= Ġc . ctype As Int () Ċĉĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉĉ ĉ if Ġ( point Seen ) Ġfrac Ġ/= Ġ 1 0 Ċĉĉĉĉĉ ĉ out Ġ*= Ġ 1 0 Ċĉĉĉĉĉ ĉ out Ġ+= Ġc . ctype As Int () Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ val Ġres Ġ= Ġ( out Ġ* Ġfrac ) Ġ* Ġ 1 0 . 0 . pow ( if Ġ( neg ate Exponent ) Ġ- exponent Ġelse Ġexponent ) Ċĉ ĉ return Ġif Ġ( neg ate ) Ġ- res Ġelse Ġres Ċ ĉ } Ċ } Ċ Ċ @ Suppress (" Convert Two Comp arisons To Range Check ") Ġ// Ġ@ TODO : ĠKotlin - Native Ġdoesn 't Ġoptimize Ġranges Ċ private Ġfun ĠChar . ctype As Int (): ĠInt Ġ= Ġwhen Ġ{ Ċ ĉ this Ġ>= Ġ' 0 ' Ġ&& Ġthis Ġ<= Ġ' 9 ' Ġ-> Ġthis Ġ- Ġ' 0 ' Ċ ĉ this Ġ>= Ġ' a ' Ġ&& Ġthis Ġ<= Ġ' z ' Ġ-> Ġthis Ġ- Ġ' a ' Ġ+ Ġ 1 0 Ċ ĉ this Ġ>= Ġ' A ' Ġ&& Ġthis Ġ<= Ġ' Z ' Ġ-> Ġthis Ġ- Ġ' A ' Ġ+ Ġ 1 0 Ċ ĉ else Ġ-> Ġ- 1 Ċ } Ċ