aoc-forth

Advent of code solutions in UF forth
git clone git://git.alexwennerberg.com/aoc-forth
Log | Files | Refs | README

commit 1c11e3ce2fc9777e11fd0d8baed6d094cbd112be
parent c856b10ffb2ee95198f94e30985abcd0610208cd
Author: alex wennerberg <alex@alexwennerberg.com>
Date:   Sat, 10 Dec 2022 15:31:14 -0800

wip 8 pt 2

Diffstat:
M2022/08.fs | 38++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/2022/08.fs b/2022/08.fs @@ -1,9 +1,11 @@ 10 constant (cr) \ size is forest size -99 constant size +5 constant size create forest size size * allot ; create visible size size * allot ; + : c>u ( c -- u ) 48 - ; + \ x, y move right, down coordinates : fidx ( x y -- ) size * + forest + c@ ; : mark-vis ( x y -- ) size * + visible + 1 swap c! ; @@ -34,14 +36,30 @@ loop loop ; : total-vis 0 size size * 0 do i visible + c@ + loop ; +: part1 ['] down director ! + count-visible + ['] up director ! + count-visible + ['] right director ! + count-visible + ['] left director ! + count-visible + total-vis . cr ; + +variable highest-score + +: >?! ( n a ) tuck @ > if ! then ; + +( x y -- x y for all ) +: right-of swap 1+ swap ; +: left-of swap 1- swap ; +: below 1+ ; +: above 1- ; + +: scenic-score ( x y -- u ) ; +\ reuse visibile array +: part2 size 0 do size 0 do i j scenic-score highest-score >?! loop loop ; + : solve read-input - ['] down director ! - count-visible - ['] up director ! - count-visible - ['] right director ! - count-visible - ['] left director ! - count-visible - total-vis . ; + part1 part2 ; solve