# "4 5" => [4, 5] に変換 h, w = gets.split.map(&:to_i) # gets で 4行読み込んで 1行ごとを # "9 0 2 3 8\n" => [9, 0, 2, 3, 8] # に変換 lines = (0...h).map { gets.split.map(&:to_i) } # [[9, 0, 2, 3, 8], [1, 1, 4, 5, 1], [9, 8, 6, 4, 0], [1, 9, 7, 0, 9]] # ↓ # ↓ flatten で平坦化 # ↓ # [9, 0, 2, 3, 8, 1, 1, 4, 5, 1, 9, 8, 6, 4, 0, 1, 9, 7, 0, 9] # ↓ # ↓ sort で昇順 # ↓ # [0, 0, 0, 1, 1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9, 9] # ↓ # ↓each_slice で 5個に分割 # ↓ # [[0, 0, 0, 1, 1], [1, 1, 2, 3, 4], [4, 5, 6, 7, 8], [8, 9, 9, 9, 9]] puts lines.flatten.sort.each_slice(w).map { _1.join(" ") }