我同意这个解决方案是错误编码的。isprime(螺旋(4))为:
1 0 0 0
0 0 1 1
1 0 1 0
0 0 0 1
也就是说d=2。
基于修正的测试套件进行重新评分。很抱歉。
“找出螺旋中质数最长的对角线排列(n)”留下了误读的空间。
我很快就会明白:
“返回螺旋中最长的素数对角线序列的长度(n)”
和乔纳森·坎佩利一样,我仍然觉得问题陈述可能更清晰。从这个例子中,我最终得出了这样一个结论:在isprime(spiral(n))的元素(1,5)和(4,2)之间运行的对角线方向的元素。但可以说,这些都不在该矩阵的“对角线”上http://mathworld.wolfram.com/Diagonal.html (参见。https://en.wikipedia.org/wiki/Main_diagonal ).
此外,在目前的在线MATLAB文档中并没有提到“spiral”实际上是一个MATLAB已经提供的函数,也就是说,用户不需要编写自己的函数来制作螺旋矩阵。显然,“螺旋可以在演示文件夹中找到”[ref: https://stackoverflow.com/questions/29466058/spiral-loop-on-a-matrix-from-a-point]。
硬
呃,我认为问题陈述是有道理的。尤其是在命令窗口中运行“isprime(spiral(n))”时。我喜欢这个问题。最后使用了我不久前几乎在另一个问题上使用的技术,但在这里使用更有意义,所以我已经开始使用基本框架:D
因为我= 1:50
间谍(isprime(螺旋(i)))
暂停(0.1)
结束
好问题
亲爱的拉博拉,
你请求帮助解决这个问题,但我“远离科迪”很长一段时间…;-)
我庆祝你至少成功了。
有趣!此错误源于在函数和子函数中使用“Ix”。当我在不包含在函数中的脚本中测试代码时,我丢失了它。
为什么默认情况下子函数可以使用参数?
这真是太棒了,让人印象深刻。我确实学到了一些东西
非常感谢
一个好的精确算法
max(diff(find(~zeronevector))-1返回0和1的向量中最长的1,但在几种情况下失败,例如:
-all-one:[1]返回空
-只有一个零:[1 0 1]返回空
-一端的所有零:[1 0 0]返回0
-一端的最长行程:[1 0 1 0]返回零之间的最长行程,此处为1
作为所有情况的解决方法,将零添加到向量的两端:
最大值(差异(查找(~[0 zeroOneVector 0]))-1
然而,这对于这个解决方案是不必要的,因为矩阵是非常稀疏的。