Classical FP problem in python : Hamming problem

Nick Craig-Wood nick at craig-wood.com
Tue Jan 25 03:30:03 EST 2005


Francis Girard <francis.girard at free.fr> wrote:
>  def hamming():
>    def _hamming():
>      yield 1
>      hamming2 = hammingGenerators[0]
>      hamming3 = hammingGenerators[1]
>      hamming5 = hammingGenerators[2]
>      for n in imerge(imap(lambda h: 2*h, iter(hamming2)),
>                      imerge(imap(lambda h: 3*h, iter(hamming3)),
>                             imap(lambda h: 5*h, iter(hamming5)))):
>        yield n
>    hammingGenerators = tee(_hamming(), 4)
>    return hammingGenerators[3]

If you are after readability, you might prefer this...

def hamming():
  def _hamming():
    yield 1
    for n in imerge(imap(lambda h: 2*h, iter(hamming2)),
                    imerge(imap(lambda h: 3*h, iter(hamming3)),
                           imap(lambda h: 5*h, iter(hamming5)))):
      yield n
  hamming2, hamming3, hamming5, result = tee(_hamming(), 4)
  return result

PS interesting thread - never heard of Hamming sequences before!
-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list