Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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 having an uproarious good time at the Monastery: (3)
As of 2025-06-14 04:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.