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
   26
   27
   28
   29
   30
   31
   32
   33
   34
include ./utils/dmath.fth
4 constant input-size
: tibs ( -- a u ) tib >limit @ tib - ;
\ todo rename
: >number ( a u -- n ) 0 -rot 0 do dup r@ + c@ h# 30 - rot 10 * + swap loop drop ;

variable _max 
variable _i
: max-val ( a u -- i ) 0 _max ! 
    0 do dup i + c@ _max c@ > 
    if dup i + c@ _max c! i _i c! then loop drop  _i c@ ;

variable num-batts
variable _sbuf
create _voltage 12 allot \ counted string
: max-joltage ( -- d ) tibs _sbuf 2!
    num-batts @ 0 do 
    _sbuf 2@ num-batts @ 1- i - - max-val 1+
    _sbuf 2@ rot /string _sbuf 2! \ advance string based on idx of _max
    _max c@ _voltage i + c! 
    loop ;

variable joltage1
2variable joltage2
: solve input-size 0 do 
    query
    2 num-batts ! max-joltage _voltage 2 string-to-double joltage1 +!
    \ TODO also requires quad math
    \ 12 num-batts ! max-joltage _voltage 12 s>d joltage2 d+!
    loop 
joltage1 ? 
joltage2 d? ;

solve