iT邦幫忙

2021 iThome 鐵人賽

DAY 1
0
自我挑戰組

從真「新」鎮出發!30天的刷題修行篇,讓寫程式成為新必殺技系列 第 1

鐵人賽開場就決定是你了,Ruby 30 天刷題修行篇第一話

大家好,我叫 A Fei,目前是學習 Ruby 和 JavaScript 約三個月的新手。

在學習過程中,我特別喜歡去解題目,面對不同種類的題型,苦思出一套解法,當按下 Submit 鍵後,噴出測試通過的綠字真的很爽!(但大多時候是噴紅字居多...)

此系列文主要記錄我連續 30 天解題的思路和解答,並且分析其他「道友」的最佳解法,來了解自己不足的地方。使用的題庫網站是「Codewars」,並給自己每天一小時的時間,在時限至少要解完一題。廢話不多說,讓我們看看今天的題目:


Implement a function that adds two numbers together and returns their sum in binary. The conversion can be done before, or after the addition.

The binary number returned should be a string.

Examples:

add_binary(1, 1) == "10" (1 + 1 = 2 in decimal or 10 in binary)
add_binary(5, 9) == "1110" (5 + 9 = 14 in decimal or 1110 in binary)

題目難度:7 kyu
類型:Binary
是否有在時限內回答正確:是

第一天先從簡單的題目暖身。這題要我們把方法所帶入的兩個引數相加,回傳「二進位制」(binary)的結果。我們需要考慮到兩個重點,一是把 a + b 的和從十進位(decimal)轉換成二進位,二是方法回傳的資料型別是「字串」。

剛好,神奇語法師 Ruby 提供的整數轉字串的 to_s() 方法,只要在括號中填入 radix (2~36),你就可以輕鬆地得到轉成其他進位制的「字串」。

Ruby 官方文件參考

這裡貼上我的答案:

def add_binary(a,b)
  (a + b).to_s(2)
end

因為題目不難,這裡就不用分析其他「大大們」的解法了。鐵人賽的首篇發文就到這,希望之後再忙都可以堅持完賽,加油!


下一篇
吾即是汝,汝即是吾,Ruby 30 天刷題修行篇第二話
系列文
從真「新」鎮出發!30天的刷題修行篇,讓寫程式成為新必殺技16

尚未有邦友留言

立即登入留言