blob: e57acae78caed1306ae9a817fe9886b8d22cd77e [file] [log] [blame]
Jeremy Hylton65d4ea02000-02-16 00:49:47 +00001import types
2
3def flatten(tup):
4 elts = []
5 for elt in tup:
6 if type(elt) == types.TupleType:
7 elts = elts + flatten(elt)
8 else:
9 elts.append(elt)
10 return elts
11
Jeremy Hylton8b6323d2000-02-04 00:28:21 +000012class Set:
13 def __init__(self):
Jeremy Hylton772dd412000-02-21 22:46:00 +000014 self.elts = {}
Jeremy Hylton95b86142000-02-10 20:54:27 +000015 def __len__(self):
16 return len(self.elts)
Jeremy Hylton8b6323d2000-02-04 00:28:21 +000017 def add(self, elt):
Jeremy Hylton772dd412000-02-21 22:46:00 +000018 self.elts[elt] = elt
Jeremy Hyltone4d62932000-03-16 20:02:38 +000019 def elements(self):
Jeremy Hylton772dd412000-02-21 22:46:00 +000020 return self.elts.keys()
Jeremy Hylton8b6323d2000-02-04 00:28:21 +000021 def has_elt(self, elt):
Jeremy Hylton772dd412000-02-21 22:46:00 +000022 return self.elts.has_key(elt)
Jeremy Hylton69926ea2000-02-10 00:43:22 +000023 def remove(self, elt):
24 del self.elts[elt]
Jeremy Hylton8b6323d2000-02-04 00:28:21 +000025
26class Stack:
27 def __init__(self):
Jeremy Hylton772dd412000-02-21 22:46:00 +000028 self.stack = []
29 self.pop = self.stack.pop
Jeremy Hylton95b86142000-02-10 20:54:27 +000030 def __len__(self):
31 return len(self.stack)
Jeremy Hylton8b6323d2000-02-04 00:28:21 +000032 def push(self, elt):
Jeremy Hylton772dd412000-02-21 22:46:00 +000033 self.stack.append(elt)
Jeremy Hylton8b6323d2000-02-04 00:28:21 +000034 def top(self):
Jeremy Hylton772dd412000-02-21 22:46:00 +000035 return self.stack[-1]