create outcomes 3 , 4 , 8 , 1 , 5 , 9 , 2 , 6 , 7 , ( AX-Z, BX-Z, CX-Z )

: next-rpc ( fd -- outcome )
    pad 4 rot read-line throw                   ( read next line from file     )
    swap 3 = and if                             ( if read complete round       )
        pad c@ 65 - 3 *                         ( calculate ABC outcomes index )
        pad 2 + c@ 88 - +                       ( add XYZ offset               )
        cells outcomes + @                      ( lookup score for the round   )
    else false then ;                           ( false if end-of-file         )

: all-rpcs ( fd -- total-score )
    0 begin                                     ( start with zero score        )
        over next-rpc                           ( read next hand               )
        dup if + true then                      ( add to score if not EOF      )
    0= until nip ;

s" input" r/o open-file throw all-rpcs . cr     ( play all rounds in input     )
bye