From 2e42b509fb903a92c5996b7e93b9ea5fbc9a5f5f Mon Sep 17 00:00:00 2001 From: cheezenaan Date: Wed, 6 Dec 2017 20:27:59 +0900 Subject: [PATCH 1/4] Refactor test --- test/transport_test.rb | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/test/transport_test.rb b/test/transport_test.rb index 64126c8..896e2cd 100644 --- a/test/transport_test.rb +++ b/test/transport_test.rb @@ -3,12 +3,34 @@ 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 + 1 2 3 + 4 5 6 + 7 8 9 + EOS - 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) + output = <<~EOS + 1 4 7 + 2 5 8 + 3 6 9 + EOS + + # <~~ 記法だと末尾に改行文字(\n)が入るため #String#chomp で取り除く + assert_equal output.chomp, transport(input) + + input = <<~EOS + 1 2 3 + 4 5 6 + 7 8 9 + 10 11 12 + EOS + + output = <<~EOS + 1 4 7 10 + 2 5 8 11 + 3 6 9 12 + EOS + + assert_equal output.chomp, transport(input) end -end \ No newline at end of file +end From 4e5f9a9712c19aa4dc40040fddb97b140edf315a Mon Sep 17 00:00:00 2001 From: cheezenaan Date: Wed, 6 Dec 2017 20:32:56 +0900 Subject: [PATCH 2/4] Use Array#transpose --- lib/transport.rb | 15 ++++----------- test/transport_test.rb | 8 ++++---- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/transport.rb b/lib/transport.rb index d930638..fd81af7 100644 --- a/lib/transport.rb +++ b/lib/transport.rb @@ -1,11 +1,4 @@ -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") -end \ No newline at end of file +def transpose(source) + array = source.split("\n").map { |nums| nums.split(" ") } + array.transpose.map { |nums| nums.join(" ") }.join("\n") +end diff --git a/test/transport_test.rb b/test/transport_test.rb index 896e2cd..b3c01bc 100644 --- a/test/transport_test.rb +++ b/test/transport_test.rb @@ -1,8 +1,8 @@ require 'minitest/autorun' require './lib/transport' -class TransportTest < MiniTest::Test - def test_transport +class Transpose < MiniTest::Test + def test_transpose input = <<~EOS 1 2 3 4 5 6 @@ -16,7 +16,7 @@ def test_transport EOS # <~~ 記法だと末尾に改行文字(\n)が入るため #String#chomp で取り除く - assert_equal output.chomp, transport(input) + assert_equal output.chomp, transpose(input) input = <<~EOS 1 2 3 @@ -31,6 +31,6 @@ def test_transport 3 6 9 12 EOS - assert_equal output.chomp, transport(input) + assert_equal output.chomp, transpose(input) end end From aaa9e306c8db483ee00a378a40fb6ae0dd815722 Mon Sep 17 00:00:00 2001 From: cheezenaan Date: Wed, 6 Dec 2017 20:42:32 +0900 Subject: [PATCH 3/4] Refactor `transpose` - Rename variables - Use `&` operator --- lib/transport.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/transport.rb b/lib/transport.rb index fd81af7..f3a59b4 100644 --- a/lib/transport.rb +++ b/lib/transport.rb @@ -1,4 +1,5 @@ def transpose(source) - array = source.split("\n").map { |nums| nums.split(" ") } - array.transpose.map { |nums| nums.join(" ") }.join("\n") + source_array = source.split("\n").map(&:split) + transposed_array = source_array.transpose + transposed_array.map { |nums| nums.join(" ") }.join("\n") end From 8d6ddec2d0c70ea2e7c628c42326e0e1f012d830 Mon Sep 17 00:00:00 2001 From: cheezenaan Date: Wed, 6 Dec 2017 21:06:37 +0900 Subject: [PATCH 4/4] Rename files --- lib/{transport.rb => transpose.rb} | 0 test/{transport_test.rb => transpose_test.rb} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename lib/{transport.rb => transpose.rb} (100%) rename test/{transport_test.rb => transpose_test.rb} (100%) diff --git a/lib/transport.rb b/lib/transpose.rb similarity index 100% rename from lib/transport.rb rename to lib/transpose.rb diff --git a/test/transport_test.rb b/test/transpose_test.rb similarity index 100% rename from test/transport_test.rb rename to test/transpose_test.rb