HI~ 大家好,我是 Parker,目前正在五倍紅寶石學習挖礦。
這次參加鐵人賽主要是想透過刷題訓練自己的邏輯思維,以及提高對兩種程式語言的熟悉度。不過自己實在是太菜了,所以這次挑的題目難度基本上會落在 6、7 級之間,順利的話會考慮挑戰 5 級的題目。
由於我本人文筆實在不太好,所以我們就直接進主題開始刷題吧!
題目:
(7 級)You're a square!
給予一個整數,確認該整數是否為平方數
數學上,平方數或完全平方數,是指可以寫成某個整數的平方的數,即其平方根為整數的數。例如,9 = 3 × 3。
範例:
-1 => false
0 => true
3 => false
4 => true
25 => true
26 => false
思考方式:
Ruby 解法
def is_square(x)
# 首先檢查參數 x 是否為正整數
return false if x < 0
# 使用 Math Module 提供的開根號方法
# 開根號後得到的數字直接模除 1,藉以判定是否為整數
Math.sqrt(x) % 1 == 0
end
JavaScript 解法
var isSquare = function(n){
// 一樣先檢查參數 n 是否為正整數
if (n < 0) { return false; }
// 使用 Math object 提供的 sqrt() function
// 開根號後得到的數字直接模除 1,藉以判定是否為整數
return Math.sqrt(n) % 1 === 0 ? true : false;
}
發文前檢查發現第三行的 true : false
回傳值完全是多寫的!
用 ===
運算子就會得到 boolean
回傳值了!
所以這題應該這樣寫:
var isSquare = function(n){
if (n < 0) { return false; }
return Math.sqrt(n) % 1 === 0;
}