iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0

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

思考方式:

  1. 對整數開根號
  2. 如果開根號之後依舊是整數,可以判定該整數為平方數

Ruby 解法

def is_square(x)
  # 首先檢查參數 x 是否為正整數
  return false if x < 0
	
  # 使用 Math Module 提供的開根號方法
  # 開根號後得到的數字直接模除 1,藉以判定是否為整數
  Math.sqrt(x) % 1 == 0
end

Ruby -- Math.sqrt 參考資料


JavaScript 解法

var isSquare = function(n){
  // 一樣先檢查參數 n 是否為正整數
  if (n < 0) { return false; }
	
  // 使用 Math object 提供的 sqrt() function
  // 開根號後得到的數字直接模除 1,藉以判定是否為整數
  return Math.sqrt(n) % 1 === 0 ? true : false;
}

JavaScript -- Math.sqrt() 參考資料


發文前檢查發現第三行的 true : false 回傳值完全是多寫的!
=== 運算子就會得到 boolean 回傳值了!
所以這題應該這樣寫:

var isSquare = function(n){
  if (n < 0) { return false; }
  return Math.sqrt(n) % 1 === 0;
}

下一篇
1 2 3 麥克風測試
系列文
Codewar 進進出出 JS/Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言