2016-05-12 10 views
0

上の4により、数字の出力のフォーマット:が、私はそれがこのようなものになりますので、4のグループとしての数値と出力をフォーマットしたい各行

1 2 3 4 
5 6 7 8 
9 10 11 12 
13 14 15 16 

私がやった:

def convert_to_array(str) 
    arr = str.split(' ') 
    new_arr = arr.sort_by(&:to_i) 
    #format(new_arr.to_s) 
end 

def str 
    string = <<-_END_ 
    4 6 2 14 
    15 8 13 1 
    10 5 9 12 
    7 11 16 3 
       _END_ 
    convert_to_array(string) 
end 

これの出力は次のようになります。

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 

私はformat方法としてppを使用:

このの出力がどのように見えるしかし
require 'pp' 

def format(input) 
    string = input.to_s 
    pp string 
end 

"[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\ 
", \"13\", \"14\", \"15\", \"16\"]" 

どのように私は上記の例のように4のグループにそれを置くこととして書式設定を修正できますか?

答えて

4

を使用することができます。それが列挙子を返すので、次にEnumerable#to_aをタックする必要があります。

def convert_to_array(str) 
    str.split.sort_by(&:to_i).each_slice(4).to_a 
end 

convert_to_array(string) 
    #=> [["1", "2", "3", "4"], 
    # ["5", "6", "7", "8"], 
    # ["9", "10", "11", "12"], 
    # ["13", "14", "15", "16"]] 

引数なしString#splitsplit(/\s+/)と同じであることに注意してください。

string 
    #=> " 4 6 2 14\n 15 8 13 1\n 10 5 9 12\n 7 11 16 3\n" 

については

convert_to_array(string).each { |a| puts a.join(' ') } 
1 2 3 4 
5 6 7 8 
9 10 11 12 
13 14 15 16 

我々は素晴らしいです

a = string.split 
    #=> ["4", "6", "2", "14", "15", "8", "13", "1", 
    # "10", "5", "9", "12", "7", "11", "16", "3"] 
b = a.sort_by(&:to_i) 
    #=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", 
    # "10", "11", "12", "13", "14", "15", "16"] 
c = b.each_slice(4) 
    #=> #<Enumerator: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
    #     "11", "12", "13", "14", "15", "16"]:each_slice(4)> 
c.to_a 
    #=> [["1", "2", "3", "4"], 
    # ["5", "6", "7", "8"], 
    # ["9", "10", "11", "12"], 
    # ["13", "14", "15", "16"]] 
+0

私はあなたの答えが大好きです。 – 13aal

+1

私は読者の顔に笑顔を浮かべることができます。 LOLはさらに良いです。 –

2

あなたがちょうどあなたの方法にEnumerable#each_sliceを追加する必要がeach_slice

def put_slices(array) 
    array.each_slice(4) do |slice| 
    puts slice.join(' ') 
    end 
end 

put_slices(str) 
+0

ああを計算:結果を表示するには

! – 13aal

+0

質問で必要とされるように、要素がソートされていればさらに素晴らしいでしょう。 –

関連する問題