Each instance of this class describes either a horizontal slot or a vertical slot.
# - - - - - c l a s s S l o t class Slot(object): '''Represents one location for a word in the puzzle. Exports: Slot ( origin, length, isV ): [ (origin is the location of the first cell of the slot as a Coord instance) and (length is the length as a positive int) and (isV is 0 for horizontal, 1 for vertical) -> return a new Slot instance representing these values ] .origin: [ as passed to constructor, read-only ] .length: [ as passed to constructor, read-only ] .isV: [ as passed to constructor, read-only ] .__str__(self): [ return a string repr. of self ] .__len__(self): [ returns self.length ] .__getitem__(self, k): [ return the location of the (k)th character of self as a Coord instance ]
__cmp__ method defines a full ordering
on slots. This is necessary for reasons discussed in
Section 4.2, “Data structures”.
.__cmp__(self, other): [ usual comparison function, with self.origin as the primary key and self.isV the secondary key ]
These methods convert from positions within the puzzle to and from positions within the slot.
.genCoords(): [ generate the coordinates of cells in self in ascending order by index, as Coord instances ] .findCoord ( coord ): [ if coord is within self -> return the position of that coord relative to self's origin else -> raise IndexError ] '''