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
|