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.




nim :- next_turn(12), !.
 
next_turn(N) :-
	% Player Turn
	format('How many dots would you like to take? '),
	read_line_to_codes(user_input, Line),
	number_codes(PlayerGuess, Line),
	member(PlayerGuess,[1,2,3]),
	N1 is N - PlayerGuess,
	format('You take ~d dots~n~d dots remaining.~n~n', [PlayerGuess, N1]),
 
	% Computer Turn
	CompGuess is 4 - PlayerGuess,
	N2 is N1 - CompGuess,
	format('Computer takes ~d dots~n~d dots remaining.~n~n', [CompGuess, N2]),
	(
		N2 = 0 
		-> format('Computer wins!')
		; next_turn(N2)
	).