--- /dev/null
+#!/usr/bin/env python3
+
+import random
+
+class Game:
+ def __init__(self):
+ self._shutable = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
+ self._diced = None
+ self._options = []
+
+ def dice(self):
+ if not self._diced:
+ self._diced = [random.randint(0, 6), random.randint(0, 6)]
+ for rods in [ self._dice,
+ [ abs(self._dice[0] - self._dice[1]) ],
+ [ self._dice[0] + self._dice[1] ] ]:
+ if self._can_be_shut(rods):
+ self._options.append(rods)
+
+ def shut(self, rods):
+ if self._is_valid_option(rods):
+ for rod in rods:
+ self._shutable.remove(rod)
+ self._diced = None
+ self._options = []
+
+ def is_game_over(self):
+ return len(self._shutable) == 0 or \
+ ( self._diced and len(self._options) == 0 )
+
+ def _can_be_shut(self, rods):
+ shutable = self._shutable.copy()
+ for rod in rods:
+ if rod in shutable:
+ shutable.remove(rod)
+ else:
+ return False
+
+ def _is_valid_option(self, rods):
+ for option in self._options:
+ if set(option) == set(rods):
+ return True
+ return False