资料型别转转转,Ruby 30 天刷题修行篇第八话

大家好,我是 A Fei,又到了今日的解题时间,让我们直接进入今天的题目:
(题目来源为 Codewars


Welcome. In this kata, you are asked to square every digit of a number and concatenate them.

For example, if we run 9119 through the function, 811181 will come out, because 92 is 81 and 12 is 1.

Note: The function accepts an integer and returns an integer


题目要我们将带入的 Number,每个位数的数字平方之後,回传一个新 Number。其实这题不难,主要考你资料型别转换的概念,我们只要将带入的引数 用 to_s 方法转成 String,然後用 split('') 打散成 Array,就可以用 map 对每个元素平方,最後用 join('') 重新组合成 String,再转成 Number。

以下为我的解答:

def square_digits num
  arr = num.to_s.split('')
  arr.map{|n| n.to_i ** 2}.join('').to_i
end

比较评分最高的答案:

def square_digits num
  num.to_s.chars.map{|x| x.to_i**2}.join.to_i
end

可以看出解题逻辑非常相似,只是对方用 chars 方法,该方法可以将一个 String 的每个字母打散组合成阵列,是个更「炫泡」的作法。

好啦,今天解题时间就到这,大家掰掰~


<<:  Day 08 Create a classification model with Azure Machine Learning designer

>>:  【Day08-比较】我们不一样——在python中判断相等的用法is, ==, 与如何判断nan

[DAY-05] 开始减少控制 删除休假规定

当初看到这篇的时候 内心很激动! 因为 目前所属单位 部分模式是如此这般 :) 当然 团队成员都非...

Day 19 BeautifulSoup模组一

接下来的几天,要跟大家介绍一个超级重要的模组—BeautifulSoup 利用它,能轻松地找到HTM...

Day30:The end is not the end

不知不觉过了三十天,在这三十天中,我们学习了 Coroutine 的每一个面向,我们知道 Corou...

[Day4] API开发规格书

看完永丰的API规格书,开始盘点所需之参数。 由规格书可知,呼叫API所需要的参数有Version、...

Day 05 - 回顾铁人赛文章的描述性统计分析

在继续开始谈各个面向的题材之前,  还是不免俗地回顾一下自己的数位足迹, 包括了前三年的铁人赛成果...