Ruby 克服Codewars Kata中的布尔输入测试;掌握你的素数:用记忆过滤红宝石

Ruby 克服Codewars Kata中的布尔输入测试;掌握你的素数:用记忆过滤红宝石,ruby,primes,memoization,boolean-expression,sieve,Ruby,Primes,Memoization,Boolean Expression,Sieve,我目前正在做《掌握你的基本技能:用记忆筛选》卡塔的代码战。挑战 为您提供一个包含前4个素数的缓存数组,您必须检查n(例如5)是否是该数组中的素数,如果是,则返回true。如有必要(例如,如果n=143),必须将素数添加到缓存的数组中,并在到达n时停止,然后检查数组中是否有n(因此素数是一个数字) 我的代码(如下)通过了检查是否为素数的测试。问题是他们输入了一些奇怪的输入: n=($primes.size-5).abs您应该在不使用primegem的情况下求解此kata。如果你自己做初步测试,你就

我目前正在做《掌握你的基本技能:用记忆筛选》卡塔的代码战。挑战 为您提供一个包含前4个素数的缓存数组,您必须检查n(例如5)是否是该数组中的素数,如果是,则返回true。如有必要(例如,如果n=143),必须将素数添加到缓存的数组中,并在到达n时停止,然后检查数组中是否有n(因此素数是一个数字)

我的代码(如下)通过了检查是否为素数的测试。问题是他们输入了一些奇怪的输入:


n=($primes.size-5).abs您应该在不使用
prime
gem的情况下求解此kata。如果你自己做初步测试,你就会明白为什么这些测试是有意义的

卡塔的测试顺序如下:

Test.assert_equals(is_prime(1),false)
Test.assert_equals(is_prime(2),true)
Test.assert_equals(is_prime(5),true)
Test.assert_equals(is_prime(143),false)
Test.assert_equals(($primes.size-5).abs<3,true)
Test.assert_equals(is_prime(-1),false)
Test.assert_equals(is_prime(29),true)
Test.assert_equals(is_prime(53),true)
Test.assert_equals(is_prime(529),false)
Test.assert_equals(($primes.size-9).abs<3,true)
Test.assert_equals(is_prime(1),false)
Test.assert_equals(是_素数(2),true)
Test.assert_equals(是_素数(5),true)
Test.assert_equals(is_prime(143),false)
Test.assert_等于($primes.size-5)。abs53


529的最后一次检查与之前的检查类似。529=23x23,因此我们必须得到23,这是第9个素数。

您应该在不使用
素数
gem的情况下解出这个kata。如果您自己进行素数测试,您将看到为什么测试有意义

卡塔的测试顺序如下:

Test.assert_equals(is_prime(1),false)
Test.assert_equals(is_prime(2),true)
Test.assert_equals(is_prime(5),true)
Test.assert_equals(is_prime(143),false)
Test.assert_equals(($primes.size-5).abs<3,true)
Test.assert_equals(is_prime(-1),false)
Test.assert_equals(is_prime(29),true)
Test.assert_equals(is_prime(53),true)
Test.assert_equals(is_prime(529),false)
Test.assert_equals(($primes.size-9).abs<3,true)
Test.assert_equals(is_prime(1),false)
Test.assert_equals(是_素数(2),true)
Test.assert_equals(是_素数(5),true)
Test.assert_equals(is_prime(143),false)
Test.assert_等于($primes.size-5)。abs53


529的最后一次检查与之前的检查类似。529=23x23,因此我们必须将其增加到23,这是第9个素数。

查看关于该kata的讨论,有很多类似的抱怨。看起来该kata只是写得很差。它肯定写得很差,但人们已经完成了。查看关于该kat的讨论a、 有很多类似的抱怨。似乎kata写得很差。它肯定写得很差,但人们已经完成了。谢谢,我明天会试试这个!好吧,所以我不了解你的解决方案,你用什么系统来检查输入是否为prime?(例如,11 x 13是从哪里来的?)第二,在什么情况下,我们要在备忘录中添加素数?我现在可以通过基本测试,但在大数之后,他们的长度检查失败了。我添加了很少的素数,它说。预计17000,得到16。我加起来等于每个n的sqrt(uniq),上面写着预计9,得到22000。顺便说一句,我今天已经学会了埃拉托斯坦筛,如果有必要的话,我不知道它应该如何在这个卡塔中使用。我想你应该使用一种稍微不同的筛。如果你有一个所有素数的列表,谢谢,我明天会试试这个!好吧,那么我对你有什么不理解r解决方案是您使用什么系统来检查输入是否为素数?(例如,11 x 13从何而来?)第二,在什么情况下,我们要在备忘录中添加素数?我现在可以通过基本测试,但在大数之后,他们的长度检查失败了。我添加了很少的素数,它说。预计17000,得到16。我加起来等于每个n的sqrt(uniq),它说预计9,得到22000。顺便说一句,我今天已经学会了埃拉托斯烯筛,如果必须的话,我不知道它应该如何在这个卡塔中使用。我想你应该使用一种稍微不同的筛。如果你有一个所有素数的列表