Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: improving the efficiency of a script

by McDarren (Abbot)
on Jun 18, 2006 at 16:48 UTC ( [id://556122]=note: print w/replies, xml ) Need Help??


in reply to improving the efficiency of a script

My dictionary (/usr/share/dict/words) only has 96274 words :)

But anyway, here is my go at this - I'm not sure how efficient (or otherwise) it is - but it seems to work :)

Update 1: blah - I just realised that it doesn't work at all - the shuffle isn't doing anything. I'll update it again later when I get it working.

Update 2: - okay, working now :) (I think)

#!/usr/bin/perl -w use strict; use List::Util qw(shuffle); my $dict = '/usr/share/dict/words'; open DICT, "<", $dict or die "Cannot open $dict:$!\n"; my %words; WORD: while (my $word = <DICT>) { chomp $word; my ($letter) = $word =~ /^(\w)/; next WORD if !$letter; push @{$words{$letter}}, $word; } close DICT; foreach my $letter (sort keys %words) { @{$words{$letter}} = shuffle(@{$words{$letter}}); for my $number (1 .. 100) { print "$words{$letter}[$number]\n"; } }

Cheers,
Darren :)

Replies are listed 'Best First'.
Re^2: improving the efficiency of a script
by lima1 (Curate) on Jun 18, 2006 at 17:48 UTC
    I'm not sure how efficient (or otherwise) it is

    Much better than OPs solution ;) but time and space requirements for the data preparation is still O(n). much more than 0(m * log(n)) and O(m), respectively (once again, for sorted dictionaries only).

    So if dictionary is unsorted, the memory requirements are not a problem and if this task is not often repeated, yours is the best solution IMHO.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (2)
As of 2024-04-20 03:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found