Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

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

by tye (Cardinal)
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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (8)
As of 2014-07-23 07:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (136 votes), past polls