combinations of variable length nested lists
Alex Martelli
aleaxit at yahoo.com
Tue Aug 7 15:35:46 EDT 2001
"Mark Robinson" <m.1.robinson at herts.ac.uk> wrote in message
news:3B7023A4.6020408 at herts.ac.uk...
>
> Joseph A. Knapka wrote:
>
> > PEP proposal: add a backtracking Horn-clause resolution
> > engine to Python!
> >
> > :-)
> >
> > This problem is a two-liner in Prolog:
> >
> > one_of_each([],[]).
> > one_of_each([H|T],[H1|Ts]) :- member(H1,H), one_of_each(T,Ts).
...
> backtracking Horn-clause resolution engine, that can't be real
> terminology, I am sure you just plagerised Elmer Fudge :)
The terminology is right, but the Prolog example he gives looks
just like a transliteration of a ML or Haskell program and uses no
backtracking that I can see. The imperative equivalent:
def one_of_each(items, containers):
for item, container in zip(items, containers):
if not item in container: return 0
return 1
or the high-level-functional one:
def one_of_each(items, containers)
import operator as op
return reduce(op.and, map(op.contains, containers, items))
appear to be at least as good to me as the recursive one...
Alex
More information about the Python-list
mailing list