阵幂

2016-02-15 31 views
1

我有一个字符串,例如阵幂

a = 'Thank you for your answer' 

,我需要从字符串中每个单词的长度,并将其提升到电源下一个单词,在这个例子:

result = ((((5**3)**3)**4)**6) 

我该怎么做?

+0

我想你'((((5 ** 3)** 3)** 4)** 5)''是((((5 ** 3 )** 3)** 4)** 6)'而不是(最后一个数字是'6') –

+0

我怀疑有人会给出一个在@太的提高的答案,但我会鼓励你等待更长的时间,在未来,在授予绿党之前。快速选择可能会阻碍其他方面,可能更好,可能只是有趣的答案,对于其他可能仍在准备答案的人来说,imo是不礼貌的。不急,所以为什么不等一会儿?许多人在这里等待至少几个小时。 –

回答

4

inject会做:

s = 'Thank you for your answer' 

s.split(/\s+/) 
# => ["Thank", "you", "for", "your", "answer"] 

s.split(/\s+/).map{|w| w.length} 
# => [5, 3, 3, 4, 6] 

s.split(/\s+/).map{|w| w.length}.inject(:**) 
# => 9495567745759798747473242269561957154220965833619944966279779990829008230644811159033118931771413600093027632988162967109246892505325376987457275390625 

((((5**3)**3)**4)**6) 
# => 9495567745759798747473242269561957154220965833619944966279779990829008230644811159033118931771413600093027632988162967109246892505325376987457275390625 
+2

一些小问题:1.'s.split(/ \ s + /)'与's.split'相同。 2. map {| w | w.length}'可以简化为'map(&:length)'。 –