commit 8c16d9132fad1240a21f8b40bc202f5e8bc7210f parent 3fade3329680c8b3599b463ec71bf562aa903845 Author: alex wennerberg <alex@alexwennerberg.com> Date: Thu, 1 Dec 2022 23:10:19 -0800 Hacky day 2 Diffstat:
A | 2022/02.fs | | | 42 | ++++++++++++++++++++++++++++++++++++++++++ |
A | 2022/02b.fs | | | 48 | ++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 90 insertions(+), 0 deletions(-)
diff --git a/2022/02.fs b/2022/02.fs @@ -0,0 +1,42 @@ +\ A rock B paper C scissors +\ X rock Y paper Z scissors + +variable score +variable ct + +: barray create allot does> swap + ; +: combine 2 lshift or ; +: points-of 1+ ; + +0 constant rock +1 constant paper +2 constant scissors + +11 barray matchups + +\ them us (manual scores, awk TODO simplify ) +3 rock rock combine matchups c! +0 paper rock combine matchups c! +6 scissors rock combine matchups c! +3 paper paper combine matchups c! +0 scissors paper combine matchups c! +6 rock paper combine matchups c! +3 scissors scissors combine matchups c! +0 rock scissors combine matchups c! +6 paper scissors combine matchups c! + +: add-score 1 ct +! dup>r combine matchups c@ dup u. r> points-of + score +! ; + +\ data is code +: A rock ; +: B paper ; +: C scissors ; + +\ us +: X rock add-score ; +: Y paper add-score ; +: Z scissors add-score ; + +include input.txt + +score @ u. cr \ part 1 diff --git a/2022/02b.fs b/2022/02b.fs @@ -0,0 +1,48 @@ +\ A rock B paper C scissors +\ X rock Y paper Z scissors + +variable score +variable ct + +: barray create allot does> swap + ; +: combine 2 lshift or ; +: points-of 1+ ; + +0 constant rock +1 constant paper +2 constant scissors + +11 barray matchups + +\ them us (manual scores, awk TODO simplify ) +3 rock rock combine matchups c! +0 paper rock combine matchups c! +6 scissors rock combine matchups c! +3 paper paper combine matchups c! +0 scissors paper combine matchups c! +6 rock paper combine matchups c! +3 scissors scissors combine matchups c! +0 rock scissors combine matchups c! +6 paper scissors combine matchups c! + +: add-score 1 ct +! dup>r combine matchups c@ r> points-of + .s cr score +! ; + +\ data is code +: A rock ; +: B paper ; +: C scissors ; + +: get-loser dup dup dup rock = if 2drop scissors exit then + paper = if drop rock exit then + scissors = if paper ; +: get-winner dup dup dup rock = if 2drop paper exit then + paper = if drop scissors exit then + scissors = if rock then ; + +: X get-loser add-score ; +: Y dup add-score ; \ draw +: Z get-winner add-score ; + +include input.txt + +score @ u. cr \ part 1