aoc-forth

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

commit 5da15dd8cf425a89f4ec9358b8d473a99f22705a
parent 03ce5fba39a38c9b6d26eb4118ea7c1061b1f635
Author: alex wennerberg <alex@alexwennerberg.com>
Date:   Sun, 11 Dec 2022 00:25:21 -0800

use interpret instead

Diffstat:
M2022/09.fs | 11++++-------
M2022/10.fs | 11+----------
2 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/2022/09.fs b/2022/09.fs @@ -1,6 +1,4 @@ 99 constant size -: to-num ( a u -- n ) - 0 -rot 0 do dup r@ + c@ h# 30 - rot 10 * + swap loop drop ; create visited 1000 allot ; variable x @@ -20,11 +18,10 @@ variable taily execute .s cr taily ! tailx ! else drop then ; -: get-num bl parse to-num ; -: U get-num 0 do 1 y +! ['] below move-tail loop ; -: D get-num 0 do -1 y +! ['] above move-tail loop ; -: R get-num 0 do 1 x +! ['] toleft move-tail loop ; -: L get-num 0 do -1 x +! ['] toright move-tail loop ; +: U interpret 0 do 1 y +! ['] below move-tail loop ; +: D interpret 0 do -1 y +! ['] above move-tail loop ; +: R interpret 0 do 1 x +! ['] toleft move-tail loop ; +: L interpret 0 do -1 x +! ['] toright move-tail loop ; include sample.txt x ? y ? bye diff --git a/2022/10.fs b/2022/10.fs @@ -1,22 +1,13 @@ variable xreg variable cycle 1 dup xreg ! cycle ! -45 constant minus - - -variable isminus -: to-num ( a u -- n ) -over c@ minus = dup isminus ! if 1 /string then -0 -rot 0 do dup i + c@ h# 30 - rot 10 * + swap loop drop -isminus @ if -1 * then ; variable signalsum : signalcheck cycle @ dup 20 - 40 mod 0= if xreg @ * signalsum +! else drop then ; : dostep signalcheck 1 cycle +! ; -: get-num bl parse to-num ; -: addx dostep dostep get-num xreg +! ; +: addx dostep dostep interpret xreg +! ; : noop dostep ; include input.txt signalsum ?