Rubyでzipメソッドを自作してみた

以前、each_slice(i)を自作しました。こちらです。

【Rubyコード】

require "pp"

#zipを自作してみる
=begin
考え方
一気にしようとするんじゃなくて、一つの配列ずつ処理していく。
二段階に分けて最終形を作成する
array_1 = ["a", "b", "c"]
array_2 = ["x", "y", "z"]
array_final = []
=end

#■元配列
array_1 = ["a", "b", "c", "d","e", "f", "g", "h"]
array_2 = ["x", "y", "z", "tome", "sapporo", "shibetsu"]
array_final = []

#■目標配列
#array_final = [["a", "x"], ["b", "y"], ["c", "z"], ["d", nil]]

#■array_1から処理する(原則、長い方から処理すること)
array_1.each do |x|
    array_final << [x, nil]
end
puts "第一処理"
p array_final
puts "-------------------------------\n\n"

#■失敗作
=begin
#これはだめ。とりあえず書いてみた
#とりあえず書くことで何がダメか、考え方のダメな部分がわかるから良しとする。

array_2.each do |x|
    array_final.each do |target|
        target[1] = x
    end
end
p array_final
=end

#■失敗をもとに改めてロジックを考える
=begin
timeかuptoか?
2つ目の長さを取得し、uptoする
0から「長さ - 1」
=end

len = array_2.length
0.upto(len - 1) do |i|
    array_final[i][1] = array_2[i]
end

puts "第二処理(自作zipメソッドが完成)"
p array_final
puts "-------------------------------\n\n"

puts "ちなみにzipメソッドを使った場合はこちら"
p array_1.zip(array_2)
puts "あれ?嬉しいことに「見た目」は同じ結果になりました。"

とりあえず良しとする。

考え方が大事か?

タイトルとURLをコピーしました