我碰到這個片段在網上,而研究各種方法來測試一個數字是一個完美的正方形:如何判斷一個數字是否與ruby一致?
如果n是一個完美的方形那麼一致爲0,1或2模4
我試圖用三元語句將它翻譯成ruby代碼(見下文),但它無法正常工作。
n % 4 == 0 && n % 4 == 1 && n % 4 == 2 ? true : false
你會怎麼做?
我碰到這個片段在網上,而研究各種方法來測試一個數字是一個完美的正方形:如何判斷一個數字是否與ruby一致?
如果n是一個完美的方形那麼一致爲0,1或2模4
我試圖用三元語句將它翻譯成ruby代碼(見下文),但它無法正常工作。
n % 4 == 0 && n % 4 == 1 && n % 4 == 2 ? true : false
你會怎麼做?
您的文檔片斷說:「方法...是一致的到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
哇!謝謝。這個答案非常完整,它使我能夠更好地理解我的方法中的多個問題。 – adeluccar 2014-09-26 13:21:53
試試這個:
(0..2).include?(n % 4)
沒關係,@tokland的解決方案好得多 – 2014-09-26 12:37:00
你可以這樣寫:
n % 4 <= 2
您可以通過以下方式
n % 4 < = 2
很好的答案,也是你要注意,你使用&&(AND)而不是|| (OR)... n%4 == 0 && n%4 == 1總是WRONG(它可以同時爲0和1),而n%4 == 0 || n%4 == 1是可以的。 – tomsoft 2014-09-26 12:55:51
是的。我注意到。我的第一個版本實際上使用了ORs。根本不瞭解模塊化算術。 – adeluccar 2014-09-26 13:24:06
另一個建議:使用括號,除非你真的確定了運算符的優先級。另外,不需要使用三元運算符?與真或假作爲運營商的輸入已經是真的或假的 – tomsoft 2014-09-26 13:28:52