Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

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        

Comment on Re: Hamming Sequences and Lazy Lists (non-'functional' iterator)
Download Code

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 avoiding work at the Monastery: (7)
As of 2015-11-27 12:52 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (728 votes), past polls