perl6,除了质数次数外,如何匹配1到10000次?

perl6, how to match 1 to 10000 times except prime number of times?

匹配出现 1 到 10000 次(素数次数除外)的字符串的最佳方法是什么?

say so "xyz" ~~ m/ <[x y z]> ** <[ 1..10000] - [ all prime numbers ]> /

谢谢!!!

不一定是最好的方式(特别是,它最多会创建 10_000 个子匹配对象),但是 a 方式:

$ perl6 -e 'say "$_ ", so <x y z>.roll x $_ ~~ /^ (<[xyz]>) ** 1..10_000 <!{[=10=].elems.is-prime}> $/ for 1..10'
1 True
2 False
3 False
4 True
5 False
6 True
7 False
8 True
9 True
10 True

如果感兴趣的子字符串具有固定长度,您还可以捕获整个重复并检查其长度,避免创建子匹配。