※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました。
問題1 N 個の文字を半分ずつ出力 (paizaランク D 相当)
偶数 N が入力されます。まず、 1 行目には 1 以上 N / 2 以下の数値を半角スペース区切りですべて出力してください。次に、 2 行目には N / 2 + 1 以上 N 以下の数値を半角スペース区切りですべて出力してください。
各行の末尾には、半角スペースの代わりに改行を入れてください。
- 入力される値
- 
N 入力値最終行の末尾に改行が1つ入ります。 
 文字列は標準入力から渡されます。
- 期待する出力
- 答えの数値を出力してください。
1 2 3 ... N/2 N/2+1 N/2+2 ... N 末尾に改行を入れ、余計な文字、空行を含んではいけません。 
- 条件
- すべてのテストケースにおいて、以下の条件をみたします。
* N は偶数 
 * N は 1 以上 1,000 以下
- 入力例1
- 
8 
- 出力例1
- 
1 2 3 4 5 6 7 8 
解答
# 入力値(数値)を受け取る 
n = gets.to_i
#[1, 2, 3, 4, 5, 6, 7, 8]を作成
numbers = [*1..n]
#(n / 2)の長さで分割する→[[1, 2, 3, 4], [5, 6, 7, 8]]
ary = numbers.each_slice(n / 2).to_a
# 出力する(このとき半角スペースを間に挟んで結合する) 
ary.size.times { |i| puts ary[i].join(' ') }
問題2 数値を異なる長さで 2 行出力 (paizaランク D 相当)
自然数 N, M が与えられます。1 行目には 1 以上 N 以下の数値を半角スペース区切りで出力してください。また、2 行目には 1 以上 M 以下の数値を半角スペース区切りで出力してください。
さらに、各行の末尾には、半角スペースの代わりに改行を入れてください。
- 入力される値
- 
N M 入力値最終行の末尾に改行が1つ入ります。 
 文字列は標準入力から渡されます。
- 期待する出力
- 答えの数値を出力してください。
1 2 3 ... N 1 2 3 ... M 末尾に改行を入れ、余計な文字、空行を含んではいけません。 
- 条件
- 
すべてのテストケースにおいて、以下の条件をみたします。 * N, Mは 0 以上 1,000 以下 
- 入力例1
- 
3 5 
- 出力例1
- 
1 2 3 1 2 3 4 5 
解答
# 半角スペース刻みの入力値を受け取り変数に代入
n, m = gets.split.map(&:to_i)
# 1からnまで半角スペースを間に挟んで出力する
puts [*1..n].join(' ')
# 1からmまで半角スペースを間に挟んで出力する
puts [*1..m].join(' ')
