Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (7)
As of 2017-06-27 11:09 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (604 votes). Check out past polls.