02.f (473B)
1 include ./utils/dmath.f 2 11 constant pairs 3 4 variable _tmp 5 : str>double ( a u -- d ) _tmp 2! 0 6 0 do dup r@ + c@ h# 30 - 0 7 _tmp 2@ 10 1 m*/ d+ _tmp 2! loop drop _tmp 2@ ; 8 9 : invalid ( a u -- d ) 10 .s cr 11 2dup 2/ 2dup + over ( s1 s2 [each half] ) compare 12 if str>double else 2drop 0 0 then 13 ; 14 15 : next-pair ( -- a1 u1 a2 u2 ) [char] - parse 16 [char] , parse 17 ; 18 : solve 0 0 \ double 19 pairs 0 do 20 next-pair invalid -rot invalid + + 21 loop d. bye ;