aoc-forth

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

02.fs (636B) - raw


      1 variable score
      2 0 constant rock
      3 1 constant paper
      4 2 constant scissors
      5 
      6 : points-of 1+ ;
      7 : foil ( u1 -- u2 ) 1+ 3 mod ; 
      8 : victim ( u1 -- u2 ) foil foil ;
      9 : game-score ( u1 u2 -- u3 ) 
     10   2dup swap foil = if 2drop 6 exit then
     11   2dup swap victim = if 2drop 0 exit then
     12   2drop 3 ;
     13 : add-score ( u1 u2 -- ) dup>r game-score r> points-of + score +! ;
     14 
     15 \ data is code
     16 : A rock ;
     17 : B paper ;
     18 : C scissors ;
     19 : X rock add-score ;
     20 : Y paper add-score ;
     21 : Z scissors add-score ;
     22 include input.txt 
     23 score @ u. cr \ part 1
     24 
     25 0 score !
     26 : X dup victim add-score ;
     27 : Y dup add-score ;
     28 : Z dup foil add-score ;
     29 include input.txt
     30 score @ u. cr \ part 2
     31 bye