[Zope-dev] an Interface expressing "a list of generator function"
Tres Seaver
tseaver at palladion.com
Mon Nov 8 08:24:24 EST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 11/08/2010 04:40 AM, Jean-Daniel wrote:
> Hello,
>
> I have two objects which interoperate to solve a sudoku: the Sudoku class
> and a vector (a list actually) of generator functions. The Sudoku interface
> is simple to write as it requires three functions and an attribute.
>
> class ISudoku:
>
> board = Attribute()
>
> def free(col, line):
> "frees the slot at position col, line"
>
> def set(col, line, value):
> "Sets the value in the slot at position col, line"
>
> def candidates(col, line):
> "Returns the candidate digits for the slot at position col,line"
>
>
> But how to express "vector of generator functions" with Zope interfaces? I
> want to express the possibility to access the vector object with
> the [n] index notation, and this returns a function returning a generator
> (an object with an iter and next function).
>
> Thank you for your help,
>
>
> PS: the vector of generator functions is the input of the algorithm called
> "conjoin", used to solve the eight queen problem and knight's tour problem.
> It is described in the Python sources
> (Python-2.6.5/Lib/test/test_generators.py).
>
> PPS: I say vector instead of list even when the vector is a list, because
> "list" usually implies the possibility to append elements dynamically which
> is not pertinent in this problem. The length of the vector won't change and
> is equal to the number of slots on a sudoku board.
I would specify the contracts omething like so::
class IVector(Interface):
item_type = Attribute(u"Interface of items.")
def __len__():
""" Fixed length of vector.
"""
def __getitem__(index):
""" Return the 'index'th item.
Items conform to 'item_type'.
'index' must be an integer between 0 and __len__() - 1,
else raise IndexError.
"""
class IIterable(Interface):
def __iter__():
""" Return an iterator for this object.
"""
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAkzX+ggACgkQ+gerLs4ltQ7WQwCeNu4lF+WysIjSYM86EjMhoPFH
9ZsAnRB7T4Pz+bIVeVYxHbvRYaqN6iE7
=U5bo
-----END PGP SIGNATURE-----
More information about the Zope-Dev
mailing list