大家好,我叫 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),你就可以輕鬆地得到轉成其他進位制的「字串」。
這裡貼上我的答案:
def add_binary(a,b)
(a + b).to_s(2)
end
因為題目不難,這裡就不用分析其他「大大們」的解法了。鐵人賽的首篇發文就到這,希望之後再忙都可以堅持完賽,加油!