F=
# 80
->s,l{s+=' '*(l-s.size%l)
(s.size/l).times{|i|puts [x=s[i*l,l],x.reverse][i%2]}}
require 'minitest/autorun'
describe F do
def test_case_1
expected = <<-EOS
Prog
mmar
ing
zzuP
les
oC &
de G
flo
EOS
actual = capture_stdout(){ F['Programming Puzzles & Code Golf', 4] }
assert_equal expected, actual
end
def test_case_2
expected = <<-EOS
Hello
roW ,
ld!
EOS
actual = capture_stdout(){ F['Hello, World!', 5] }
assert_equal expected, actual
end
end
require 'stringio'
module Kernel
def capture_stdout(console_input = '')
$stdin = StringIO.new(console_input)
out = StringIO.new
$stdout = out
yield
return out.string
ensure
$stdout = STDOUT
$stdin = STDIN
end
end
Rj0KIyA4MAotPnMsbHtzKz0nICcqKGwtcy5zaXplJWwpCihzLnNpemUvbCkudGltZXN7fGl8cHV0cyBbeD1zW2kqbCxsXSx4LnJldmVyc2VdW2klMl19fQoKcmVxdWlyZSAnbWluaXRlc3QvYXV0b3J1bicKCmRlc2NyaWJlIEYgZG8KICBkZWYgdGVzdF9jYXNlXzEKICAgIGV4cGVjdGVkID0gPDwtRU9TClByb2cKbW1hcgppbmcgCnp6dVAKbGVzIApvQyAmCmRlIEcKIGZsbwpFT1MKCiAgICBhY3R1YWwgPSBjYXB0dXJlX3N0ZG91dCgpeyBGWydQcm9ncmFtbWluZyBQdXp6bGVzICYgQ29kZSBHb2xmJywgNF0gfQoKICAgIGFzc2VydF9lcXVhbCBleHBlY3RlZCwgYWN0dWFsCiAgZW5kCgogIGRlZiB0ZXN0X2Nhc2VfMgogICAgZXhwZWN0ZWQgPSA8PC1FT1MKSGVsbG8Kcm9XICwKbGQhICAKRU9TCgogICAgYWN0dWFsID0gY2FwdHVyZV9zdGRvdXQoKXsgRlsnSGVsbG8sIFdvcmxkIScsIDVdIH0KCiAgICBhc3NlcnRfZXF1YWwgZXhwZWN0ZWQsIGFjdHVhbAogIGVuZAplbmQKCgoKcmVxdWlyZSAnc3RyaW5naW8nCgptb2R1bGUgS2VybmVsCiAgZGVmIGNhcHR1cmVfc3Rkb3V0KGNvbnNvbGVfaW5wdXQgPSAnJykKICAgICRzdGRpbiA9IFN0cmluZ0lPLm5ldyhjb25zb2xlX2lucHV0KQogICAgb3V0ID0gU3RyaW5nSU8ubmV3CiAgICAkc3Rkb3V0ID0gb3V0CiAgICB5aWVsZAogICAgcmV0dXJuIG91dC5zdHJpbmcKICBlbnN1cmUKICAgICRzdGRvdXQgPSBTVERPVVQKICAgICRzdGRpbiA9IFNURElOCiAgZW5kCmVuZAo=