我想有一天, 我會教孩子們編程. 下面一個很有趣的例子.
今天微信羣裏面出了這麼一道題.
詳見下圖題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