Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Hamming Sequences and Lazy Lists (non-'functional' iterator)

by tye (Sage)
on Mar 17, 2005 at 17:22 UTC ( #440449=note: print w/replies, xml ) Need Help??

in reply to Hamming Sequences and Lazy Lists

This goes through the same steps as the functional version but doesn't use much functional programming (and so is probably more efficient):

#!/usr/bin/perl -w use strict; sub gen { my %list; @list{@_}= map [1], 0..$#_; return sub { my @next; for my $m ( keys %list ) { if( ! @next || $list{$m}[0] < $list{$next[0]}[0] ) { @next= $m; } elsif( $list{$m}[0] == $list{$next[0]}[0] ) { push @next, $m; } } my $ret= $list{$next[0]}[0]; for my $m ( @next ) { shift @{$list{$m}}; } for my $m ( keys %list ) { push @{$list{$m}}, $ret*$m; } return $ret; }; } @ARGV= (2,3,5) if ! @ARGV; my $iter= gen(@ARGV); print $iter->(), $/ while 1;

Ever notice that converting a functional program to a procedural one is a bit like doing a Fourier transform? (: I supposed I shouldn't be using a closure with such a claim, but they make convenient one-method objects.

- tye        

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://440449]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (13)
As of 2016-10-26 13:34 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (341 votes). Check out past polls.