The following gives you a sorted list, so it should be easy to check against a sorted dictionary (by doing something like a merge sort). It's also memory efficient since it doesn't keep a list of all the permutations in memory.
use Algorithm::Loops qw( NextPermute ); my $word = 'tool'; my @list = sort ' ', $word =~ /(.)/g; my $last_word = ''; while (NextPermute(@list)) { my $new_word = join('', @list); $new_word =~ s/ .*//; next if ($new_word eq $last_word); $last_word = $new_word; print($new_word, $/); }
Output:
l lo loo loot lot loto lt lto ltoo o ol olo olot olt olto oo ool oolt oot ootl ot otl otlo oto otol t tl tlo tloo to tol tolo too tool
In reply to Re: (un)jumbler...
by ikegami
in thread (un)jumbler...
by stevenrh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |