我试图在Mathematica 8中生成圆形素数.
圆形素数是一个数字,使得其数字的所有旋转都是素数
例如.197是循环的,因为971和719也是原始的.
现在,为了测试素数是否为圆形,我生成所有旋转.我这样做如下:
p = IntegerDigits[197];
Table[RotateLeft[p, n], {n, Length[p]}]
Run Code Online (Sandbox Code Playgroud)
因此返回
{{9, 7, 1}, {7, 1, 9}, {1, 9, 7}}
Run Code Online (Sandbox Code Playgroud)
然而,这是我被卡住的地方.我现在要做的是获取每个内部列表的元素并按顺序将它们连接在一起,以便输出变为此
{971, 719, 197}
Run Code Online (Sandbox Code Playgroud)
这样我就可以测试所有旋转是否满足PrimeQ [].
虽然我一方面可以通过遍历列表来完成这项工作,但在我看来似乎有一种更好的方法,我只是没有意识到.
我有一系列关键字,我想知道在一些已提交的字符串中是否找到至少一个关键字.我还想确保它是匹配的关键字,而不是与单词非常相似的关键字.
比如说,我们的关键字是[English, Eng, En]因为我们正在寻找一些英语变体.
现在,假设来自用户的输入是i h8 eng class,或同样具有挑衅性和文盲的东西 - 那么eng应该匹配.它也应该无法匹配一个单词england或一些奇怪的东西chen,即使它en有点.
所以,在我无限缺乏智慧的过程中,我相信我可以按照这一点做一些事情,以便将我的一个数组项与输入相匹配:
.match(RegExp('\b('+array.join('|')+')\b','i'))
Run Code Online (Sandbox Code Playgroud)
考虑到正则表达式将从数组中查找匹配,现在呈现为(English|Eng|En),然后查看是否在任一侧都有零宽度的单词边界.