Nim game: Difference between revisions
No edit summary |
(Add Python example code) |
||
Line 35:
L-------------*---*>$_#-$" dots remaining."-$""
T
</lang>
=={{header|Python}}==
<lang Python>
print("Py Nim 0.5 by Prof_Apex\n")
def getTokens(curTokens):
global tokens
print("How many tokens would you like to take? ", end='')
take = int(input())
if (take < 1 or take > 3):
print("Number must be between 1 and 3.\n")
getTokens(curTokens)
return
tokens = curTokens - take
print(f'You take {take} tokens.')
print(f'{tokens} tokens remaining.\n')
def compTurn(curTokens):
global tokens
take = curTokens % 4
tokens = curTokens - take
print (f'Computer takes {take} tokens.')
print (f'{tokens} tokens remaining.\n')
tokens = 12
while (tokens > 0):
getTokens(tokens)
compTurn(tokens)
print("Computer wins!")
</lang>
|
Revision as of 17:01, 10 April 2019
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 player goes first, and the computer always wins. The game should enforce the rules.
AsciiDots
<lang AsciiDots> %$MXTRL .-$"Nim Dots v0.5 by Prof_Apex"-$""-
/$_"Number must be "\ T /----~------\ | *M /---+-*-[o] | | R [-]\ .>#3-+[>][<]-1#<.| | .-#12>--^ \"stod "$-#_$-" ekat uoY"_$---/ \--*----*-/ |
.>$_"How many dots would you like to take"---#?---/ |
\X X---------<".3 dna 1 neewteb"$/ /-----*L | [-]--\ R | | *-$_"Computer takes "-$_#-$" dots"/ M-*#4[%] \---/ /----------------$"computer wins!"-& /---~-- *#0[=]
L-------------*---*>$_#-$" dots remaining."-$""
T
</lang>
Python
<lang Python> print("Py Nim 0.5 by Prof_Apex\n")
def getTokens(curTokens): global tokens
print("How many tokens would you like to take? ", end=) take = int(input())
if (take < 1 or take > 3): print("Number must be between 1 and 3.\n") getTokens(curTokens) return
tokens = curTokens - take print(f'You take {take} tokens.') print(f'{tokens} tokens remaining.\n')
def compTurn(curTokens): global tokens
take = curTokens % 4 tokens = curTokens - take print (f'Computer takes {take} tokens.') print (f'{tokens} tokens remaining.\n')
tokens = 12
while (tokens > 0):
getTokens(tokens)
compTurn(tokens)
print("Computer wins!") </lang>