in reply to Re^5: Nonrepeating characters in an RE
in thread Nonrepeating characters in an RE
Here are some raw timings I get, using the extensive word list I have for crosswords:
% perl -nwle 'END{ warn +(times)[0],"\n" } print $_ ' /usr/share/dict/hv.words | wc -l 0.04 285520 % perl -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(.)(?!\1)(.)(?!\1|\2)(.)(?!\1|\2|\3)(.)(?!\1|\2|\3|\4) +(.)$/ ' /usr/share/dict/hv.words | wc -l 0.13 8632 % perl -MList::MoreUtils=uniq -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(?:(.)(.)(.)(.)(.)(?(?{ 5 != uniq $1, $2, $3, $4, $5 } +)(?!)))$/ ' /usr/share/dict/hv.words | wc -l 0.39 8632 % perl -MList::MoreUtils=uniq -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(.)(.)(.)(.)(.)$/ && 5 == uniq $1, $2, $3, $4, $5 ' /usr/share/dict/hv.words | wc -l 0.1 8632 %
Oh, the anchor needs to come before the code block!
% perl -MList::MoreUtils=uniq -nwle 'END{ warn +(times)[0],"\n" } print $_ if /^(?:(.)(.)(.)(.)(.)$(?(?{ 5 != uniq $1, $2, $3, $4, $5 +})(?!)))/ ' /usr/share/dict/hv.words | wc -l 0.12 8632 %
I guess I was wrong (but it's important to get that anchor in the right place).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: Nonrepeating characters in an RE
by LanX (Saint) on Aug 21, 2022 at 21:42 UTC | |
by hv (Prior) on Aug 22, 2022 at 01:54 UTC |