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
|