在Ruby中,我需要检查数组中的所有元素是否在方向上交替,即,前导和后继是否大于或小于每个元素。
给定以下数组,结果必须如所示
[1,3,2,4,3] # => true
[3,2,4,3,5] # => true
[1,2,3,1,3]. # => false
[1,2,2,1,3]. # => false
字符串
我想出了下面的代码,这似乎工作,但它的漂亮或简单的理解。
array.each_cons(2) # get subsequent couple of items
.map {|a,b| b-a}. # get the difference between first and second
.map {|n| n <=> 0} # get the sign (-1/+1)
.each_cons(2) # get couple of signs
.map {|a,b| a+b} # sum each couple
.uniq == [0] # return true if all the couple are 0
型
有什么建议可以简化检查?
2条答案
按热度按时间tzcvj98z1#
字符串
现在让我们试着打印
型
h9a6wy2h2#
.只是因为@Rajagopalan已经采取了
each_cons
,个字符