Вместо того, чтобы искать в массиве каждый раз, вы можете использовать хеш:
def forward(letter)
{'a'=>'b', 'b'=>'c', 'c'=>'d', 'd'=>'a'}[letter]
end
forward('d') #=> "a"
forward('b') #=> "c"
Вы можете легко построить такой хеш из массива, используя zip
и rotate
:
arr = %w[a b c d]
#=> ["a", "b", "c", "d"]
hash = arr.zip(arr.rotate).to_h
#=> {"a"=>"b", "b"=>"c", "c"=>"d", "d"=>"a"}
invert
хеш для перемещения назад:
hash.invert
#=> {"b"=>"a", "c"=>"b", "d"=>"c", "a"=>"d"}