git - alex wennerberg
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
\ COMING BACK TO THIS ONE -- REQUIRES 64 BIT (aka Q+ etc) words

include ./utils/dmath.fth
12 constant pairs
: tibs ( -- a u ) tib >limit @ tib - ;

variable _tmp
: s>d ( a u -- d ) _tmp 2! 0
    0 do dup r@ + c@ h# 30 - 0
    _tmp 2@ 10 1 m*/ d+ _tmp 2! loop drop _tmp 2@ ;

: invalid ( a u -- d ) \ pushes parsed invalid ID, or 0
  2dup 2/ 2dup + over ( s1 s2 [each half] ) compare 0= 
  if 2drop 1 0 else 2drop 0 0 then ;

: next-pair ( -- a1 u1 a2 u2 ) [char] - parse str>double
    [char] , parse str>double ; \ requires dloop

2variable _sol
: solve 
    query pairs 0 do 
    next-pair invalid _sol 2@ d+ _sol 2! invalid _sol 2@ d+ _sol 2! 
    _sol 2@ d. cr
    loop bye ;
solve