Em Ruby, preciso verificar se todos os elementos de um array se alternam em direção, ou seja, se o antecessor e o sucessor são maiores ou menores que cada elemento.
Dando as seguintes matrizes, o resultado deve ser conforme indicado
[1,3,2,4,3] # => true
[3,2,4,3,5] # => true
[1,2,3,1,3]. # => false
[1,2,2,1,3]. # => false
Eu criei o seguinte código, que parece funcionar, mas é bonito ou simples de entender.
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
Alguma sugestão de como simplificar a verificação?
Vamos tentar imprimir agora
... só porque @Rajagopalan já pegou
each_cons
,