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.




 
var tokens = 12
 
def playerTurn(curTokens: Int): Unit =
{
  val take = readLine("How many tokens would you like to take? ").toInt
  if (take < 1 || take > 3) {
    println("Number must be between 1 and 3.")
    playerTurn(curTokens)
  }
  else {
    tokens = curTokens - take
    println(s"You take $take tokens. $tokens tokens remaining.\n")
  }
}
 
def compTurn(curTokens: Int): Unit =
{
  val take = curTokens % 4
  tokens = curTokens - take
  println(s"Computer takes $take tokens. $tokens remaining.\n")
}
 
def main(args: Array[String]): Unit =
{
  while (tokens > 0)
  {
    playerTurn(tokens)
    compTurn(tokens)
  }
  println("Computer wins!")
}
 