in reply to secret code generator
A less silly solution (ie one that doesn't push all of the work under the covers) takes just a bit more effort.use Math::Fleximal; my $flex = ["a".."z", "A".."Z", 0..9, split //, qq(!"#$%&'()*+,-./:;<=>?@[\\]^_ +`{|}~)]; my $x = Math::Fleximal->new("a", $flex); my $one = Math::Fleximal->new("b", $flex); while (1) { print $x->to_str; print "\n"; $x = $x->add($one); }
(Astute people may notice that I borrowed from Re (tilly) 1 (perl): What Happened...(perils of porting from c).)#! /usr/bin/perl -w use strict; my @chars = ("a".."z", "A".."Z", 0..9 , split //, qq(!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~)); my $x = 0; while (++$x) { nested_for( sub {print join "", @_, "\n";} , map \@chars, 1..$x ); } sub nested_for { ret_iter(@_)->(); } sub ret_iter { my $fn = shift; my $range = shift; my $sub = sub {$fn->($_, @_) for @$range}; return @_ ? ret_iter($sub, @_) : $sub; }
Update: As johngg noted, I did not get \ in the punctuation set. Fixed.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: secret code generator
by johngg (Canon) on Dec 19, 2006 at 10:22 UTC | |
by BrowserUk (Pope) on Dec 19, 2006 at 10:25 UTC | |
by johngg (Canon) on Dec 19, 2006 at 11:16 UTC | |
by Hofmator (Curate) on Dec 19, 2006 at 10:28 UTC | |
by johngg (Canon) on Dec 19, 2006 at 11:32 UTC | |
Re^2: secret code generator
by xiaoyafeng (Deacon) on Dec 20, 2006 at 02:41 UTC |