require 'minitest/autorun'
#144
F=
->s{a=s.chars.map{|c|[c,c=~/[a-z]/i&&c.upcase.ord-64]}
z=a.size
while i=a.index{|c,s|s}
c,s=a.delete_at i
a.insert (i+s)%z,[c]
end
a.join}
describe :MovingLetters do
def test_case_1
assert_equal 'tca', F['cat']
end
def test_case_2
assert_equal '.F.NU', F['F.U.N']
end
def test_case_3
assert_equal 'goD', F['Dog']
end
def test_case_4
assert_equal '*hibey', F['hi*bye']
end
end
cmVxdWlyZSAnbWluaXRlc3QvYXV0b3J1bicKCiMxNDQKCkY9Ci0+c3thPXMuY2hhcnMubWFwe3xjfFtjLGM9fi9bYS16XS9pJiZjLnVwY2FzZS5vcmQtNjRdfQp6PWEuc2l6ZQp3aGlsZSBpPWEuaW5kZXh7fGMsc3xzfQpjLHM9YS5kZWxldGVfYXQgaQphLmluc2VydCAoaStzKSV6LFtjXQplbmQKYS5qb2lufQoKZGVzY3JpYmUgOk1vdmluZ0xldHRlcnMgZG8KICBkZWYgdGVzdF9jYXNlXzEKICAgIGFzc2VydF9lcXVhbCAndGNhJywgRlsnY2F0J10KICBlbmQKCiAgZGVmIHRlc3RfY2FzZV8yCiAgICBhc3NlcnRfZXF1YWwgJy5GLk5VJywgRlsnRi5VLk4nXQogIGVuZAoKICBkZWYgdGVzdF9jYXNlXzMKICAgIGFzc2VydF9lcXVhbCAnZ29EJywgRlsnRG9nJ10KICBlbmQKCiAgZGVmIHRlc3RfY2FzZV80CiAgICBhc3NlcnRfZXF1YWwgJypoaWJleScsIEZbJ2hpKmJ5ZSddCiAgZW5kCmVuZAo=