我想有一天, 我会教孩子们编程. 下面一个很有趣的例子.
今天微信群里面出了这么一道题.
详见下图题4.
(BTW, 如果把题干中的交换改成计算, 题干讲更容易理解.)
很有趣的问题. 对应的ruby代码如下:
start_num = 3
begin
old_num = start_num
new_num = old_num.to_s.chars.map(&:to_i).map{ |a| a*a*a }.inject(:+)
puts new_num
start_num = new_num
end while old_num != new_num
关于上述代码的更多信息:
map
http://ruby-doc.org/core-2.0/Array.html
inject
http://ruby-doc.org/core-2.1.0/Enumerable.html
:symbol_name
&:symbol_name / &
http://ablogaboutcode.com/2012/01/04/the-ampersand-operator-in-ruby/
http://ruby.about.com/od/beginningruby/a/The-Magic-Of-Symbol-To_proc.htm