# nims.py
# Exercise 2.6 – The game of Nims/Stones
# http://o...content-available-to-author-only...t.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2011/assignments/MIT6_189IAP11_hw2.pdf
# Written for Python 3.2
# Glenn Richard
# July 3, 2013
def play_nims(pile, max_stones):
'''
An interactive two-person game; also known as Stones.
@param pile: the number of stones in the pile to start
@param max_stones: the maximum number of stones you can take on one turn
'''
## Basic structure of program (feel free to alter as you please):
# while [pile is not empty]:
# while [player 1's answer is not valid]:
# [ask player 1]
# [execute player 1's move]
#
# while [player 2's answer is not valid]:
# [ask player 2]
# [execute player 2's move]
#
# print "Game over"
player = 1
print(str(pile) + " stones, initally")
while pile > 0:
taken = 0
while not 1 <= taken <= max_stones:
try:
inp = input("\nPlayer " + str(player) + " > Number of stones? (1 - " + str(max_stones) + "): ")
print("\nInput was: " + str(inp))
taken = int(inp)
except:
taken = 0
pile -= taken
print("\n" + str(taken) + " stones taken; " + str(pile) + " remaining")
max_stones = min(pile, max_stones)
# Switch players
player = player % 2 + 1
print("\nGame over")
print("\nPlayer " + str(player % 2 + 1) + " wins!")
play_nims(100, 5)
IyBuaW1zLnB5CiMgRXhlcmNpc2UgMi42IOKAkyBUaGUgZ2FtZSBvZiBOaW1zL1N0b25lcwojIGh0dHA6Ly9vLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi50LmVkdS9jb3Vyc2VzL2VsZWN0cmljYWwtZW5naW5lZXJpbmctYW5kLWNvbXB1dGVyLXNjaWVuY2UvNi0xODktYS1nZW50bGUtaW50cm9kdWN0aW9uLXRvLXByb2dyYW1taW5nLXVzaW5nLXB5dGhvbi1qYW51YXJ5LWlhcC0yMDExL2Fzc2lnbm1lbnRzL01JVDZfMTg5SUFQMTFfaHcyLnBkZgojIFdyaXR0ZW4gZm9yIFB5dGhvbiAzLjIKIyBHbGVubiBSaWNoYXJkCiMgSnVseSAzLCAyMDEzCgoKZGVmIHBsYXlfbmltcyhwaWxlLCBtYXhfc3RvbmVzKToKICAgICcnJwogICAgQW4gaW50ZXJhY3RpdmUgdHdvLXBlcnNvbiBnYW1lOyBhbHNvIGtub3duIGFzIFN0b25lcy4KICAgIEBwYXJhbSBwaWxlOiB0aGUgbnVtYmVyIG9mIHN0b25lcyBpbiB0aGUgcGlsZSB0byBzdGFydAogICAgQHBhcmFtIG1heF9zdG9uZXM6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdG9uZXMgeW91IGNhbiB0YWtlIG9uIG9uZSB0dXJuCiAgICAnJycKCiAgICAjIyBCYXNpYyBzdHJ1Y3R1cmUgb2YgcHJvZ3JhbSAoZmVlbCBmcmVlIHRvIGFsdGVyIGFzIHlvdSBwbGVhc2UpOgoKICAgICMgICAgd2hpbGUgW3BpbGUgaXMgbm90IGVtcHR5XToKICAgICMgICAgICAgIHdoaWxlIFtwbGF5ZXIgMSdzIGFuc3dlciBpcyBub3QgdmFsaWRdOgogICAgIyAgICAgICAgW2FzayBwbGF5ZXIgMV0KICAgICMgICAgICAgICAgICBbZXhlY3V0ZSBwbGF5ZXIgMSdzIG1vdmVdCiAgICAjICAgICAgIAogICAgIyAgICAgICAgd2hpbGUgW3BsYXllciAyJ3MgYW5zd2VyIGlzIG5vdCB2YWxpZF06CiAgICAjICAgICAgICAgICAgW2FzayBwbGF5ZXIgMl0KICAgICMgICAgICAgICAgICBbZXhlY3V0ZSBwbGF5ZXIgMidzIG1vdmVdCiAgICAjCiAgICAjICAgIHByaW50ICJHYW1lIG92ZXIiCgogICAgcGxheWVyID0gMQogICAgcHJpbnQoc3RyKHBpbGUpICsgIiBzdG9uZXMsIGluaXRhbGx5IikKICAgIHdoaWxlIHBpbGUgPiAwOgogICAgICAgIHRha2VuID0gMAogCiAgICAgICAgd2hpbGUgbm90IDEgPD0gdGFrZW4gPD0gbWF4X3N0b25lczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaW5wID0gaW5wdXQoIlxuUGxheWVyICIgKyBzdHIocGxheWVyKSArICIgPiBOdW1iZXIgb2Ygc3RvbmVzPyAoMSAtICIgKyBzdHIobWF4X3N0b25lcykgKyAiKTogIikKICAgICAgICAgICAgICAgIHByaW50KCJcbklucHV0IHdhczogIiArIHN0cihpbnApKQogICAgICAgICAgICAgICAgdGFrZW4gPSBpbnQoaW5wKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICB0YWtlbiA9IDAKICAgICAgICAgICAgCiAgICAgICAgcGlsZSAtPSB0YWtlbgogICAgICAgIHByaW50KCJcbiIgKyBzdHIodGFrZW4pICsgIiBzdG9uZXMgdGFrZW47ICIgKyBzdHIocGlsZSkgKyAiIHJlbWFpbmluZyIpCiAgICAgICAgICAgIAogICAgICAgIG1heF9zdG9uZXMgPSBtaW4ocGlsZSwgbWF4X3N0b25lcykKICAgICAgICAjIFN3aXRjaCBwbGF5ZXJzCiAgICAgICAgcGxheWVyID0gcGxheWVyICUgMiArIDEKICAgIHByaW50KCJcbkdhbWUgb3ZlciIpCiAgICBwcmludCgiXG5QbGF5ZXIgIiArIHN0cihwbGF5ZXIgJSAyICsgMSkgKyAiIHdpbnMhIikKCnBsYXlfbmltcygxMDAsIDUpCg==
NAozCjMKNQp0aHJlZQoxCjcKMgo0CjEKOTk5OTk5CjUKNAoyCjMKMwp5CjQKMgoyCjQKMAozCjMKMQo1CjIKNAo1CjEKMQo1CmdhemlsbGlvbiB0byB0aGUgZ2F6aWxsaW9udGggcG93ZXIKMwozCjQKMgoxCjUK
4
3
3
5
three
1
7
2
4
1
999999
5
4
2
3
3
y
4
2
2
4
0
3
3
1
5
2
4
5
1
1
5
gazillion to the gazillionth power
3
3
4
2
1
5