diff --git a/lib/transport.rb b/lib/transport.rb index d930638..8af138e 100644 --- a/lib/transport.rb +++ b/lib/transport.rb @@ -1,11 +1,11 @@ +# 文字列で表現された行列を転置して、文字列形式で返す +# ex) 入力: "1 2 3\n4 5 6\n7 8 9\n10 11 12" +# 出力: "1 4 7 10\n2 5 8 11\n3 6 9 12" def transport(source) - array = source.split("\n").map {|s| s.split(" ")} - rows_count = array.first.count - - transported_array = [] - 0.upto(rows_count - 1) do |i| - transported_array << array.map {|a| a[i]} - end - - transported_array.map {|s| s.join(" ")}.join("\n") + source + .split("\n") + .map {|s| s.split(" ")} + .transpose + .map {|a| a.join(" ")} + .join("\n") end \ No newline at end of file diff --git a/test/transport_test.rb b/test/transport_test.rb index 64126c8..22af2ce 100644 --- a/test/transport_test.rb +++ b/test/transport_test.rb @@ -3,12 +3,29 @@ class TransportTest < MiniTest::Test def test_transport - input = "1 2 3\n4 5 6\n7 8 9" - output = "1 4 7\n2 5 8\n3 6 9" - assert_equal output, transport(input) + input = <<~EOS.chomp + 1 2 3 + 4 5 6 + 7 8 9 + EOS + expect = <<~EOS.chomp + 1 4 7 + 2 5 8 + 3 6 9 + EOS + assert_equal expect, transport(input) - input = "1 2 3\n4 5 6\n7 8 9\n10 11 12" - output = "1 4 7 10\n2 5 8 11\n3 6 9 12" - assert_equal output, transport(input) + input = <<~EOS.chomp + 1 2 3 + 4 5 6 + 7 8 9 + 10 11 12 + EOS + expect = <<~EOS.chomp + 1 4 7 10 + 2 5 8 11 + 3 6 9 12 + EOS + assert_equal expect, transport(input) end end \ No newline at end of file