Nim game

You are encouraged to solve this task according to the task description, using any language you may know.
Nim is a simple game where the second player ─── if they know the trick ─── will always win.



The game has only 3 rules:

   start with   12   tokens
   each player takes   1,  2,  or  3   tokens in turn
  the player who takes the last token wins.


To win every time,   the second player simply takes 4 minus the number the first player took.   So if the first player takes 1,   the second takes 3 ─── if the first player takes 2,   the second should take 2 ─── and if the first player takes 3,   the second player will take 1.



Task

Design a simple Nim game where the human player goes first, and the computer always wins. The game should enforce the rules.




import "io" for Stdin, Stdout
 
var showTokens = Fn.new { |tokens| System.print("Tokens remaining %(tokens)\n") }
 
var tokens = 12
while (true) {
    showTokens.call(tokens)
    System.write("  How many tokens 1, 2 or 3? ")
    Stdout.flush()
    var t = Num.fromString(Stdin.readLine())
    if (t.type != Num || !t.isInteger || t < 1 || t > 3) {
        System.print("\nMust be an integer between 1 and 3, try again.\n")
    } else {
        var ct = 4 - t
        var s = (ct != 1) ? "s" : ""
        System.write("  Computer takes %(ct) token%(s)\n\n")
        tokens = tokens - 4
    }
    if (tokens == 0) {
        showTokens.call(0)
        System.print("  Computer wins!")
        break
    }
}