我在网上看到了这个片段,同时正在研究如何测试一个数字是一个完美的正方形:
如果n是一个完美的正方形,则它与0,1或2 mod 4一致
我尝试用三元语句将其翻译成ruby代码(见下文),但它无法正常工作。
n % 4 == 0 && n % 4 == 1 && n % 4 == 2 ? true : false
你会怎么做?
答案 0 :(得分:3)
你可以这样写:
n % 4 <= 2
答案 1 :(得分:3)
你的剪辑说“ ...与0,1 或 2 mod 4”是一致的,但你正在使用&&
。将其更改为||
会修复您的表达式:
n % 4 == 0 || n % 4 == 1 || n % 4 == 2 ? true : false
三元语句是多余的,因为您已经有一个布尔结果。它相当于:
n % 4 == 0 || n % 4 == 1 || n % 4 == 2
此外n % 4
会为任何0
返回1
,2
,3
或n
,因此它也可以表示为:
n % 4 <= 2 # because 0, 1, 2 are less or equal to 2
n % 4 < 3 # because 0, 1, 2 are less than 3
n % 4 != 3 # because 0, 1, 2 are not 3
答案 2 :(得分:0)
您可以通过以下方式接近
n % 4 < = 2
答案 3 :(得分:-1)
试试这个:
(0..2).include?(n % 4)