配列メニュー
STEP: 1 要素数の出力
a = %w[5 1 3 4 5 12 6 8 1 3]
puts a.length
%wで[]内を配列にできます。
STEP: 2 全要素の出力
puts %w[5 1 3 4 5 12 6 8 1 3]
STEP: 3 i 番目の出力
a = %w[5 1 3 4 5 12 6 8 1 3]
puts a[3]
STEP: 4 配列の入力 1
puts %w[8 1 3 3 8 1 1 3 8 8]
STEP: 5 配列の入力 2
a = gets.split.map(&:to_i)
puts a
STEP: 6 配列の入力 3
n = gets.to_i
a = gets.split.map(&:to_i)
puts a
STEP: 7 i番目の出力 1
a = %w[1 3 5 4 6 2 1 7 1 5]
k = gets.to_i
puts a[k - 1]
STEP: 8 i番目の出力 2
k = gets.to_i
a = gets.split.map(&:to_i)
puts a[k - 1]
FINAL問題 【次元配列の入出力】i番目の出力 Boss
n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
puts a[k - 1]
STEP: 1 要素数の出力
a = [%w[1 2 3 4 5 6], %w[8 1 3 3 1 8]]
puts a.flatten.length
STEP: 2 全要素の出力
a = [%w[6 5 4 3 2 1], %w[3 1 8 8 1 3]]
puts a[0].join(' ')
puts a[1].join(' ')
STEP: 3 行数の出力
a = [%w[1 2 3], %w[4 5 6], %w[8 1 3]]
puts a.length
STEP: 4 列数の出力
a = [%w[1 2 3 4], %w[6 5 4 3], %w[3 1 8 1]]
puts a[0].length
STEP: 5 各行の要素数の出力
a = [%w[1], %w[2 3], %w[4 5 6]]
puts a[0].length
puts a[1].length
puts a[2].length
STEP: 6 i 行目 j 列目の出力
a = [%w[1 2 3], %w[8 1 3], %[w10 100 1]]
puts a[1][2]
STEP: 7 二次元配列の入力 1
a = [%w[1 3 5 7], %w[8 1 3 8]]
puts a[0].join(' ')
puts a[1].join(' ')
STEP: 8 二次元配列の入力 2
m = gets.to_i
5.times do
a = gets.split.map(&:to_i)
puts a.join(' ')
end
二次元配列にしなくても解答できます。
STEP: 9 二次元配列の入力 3
n = gets.to_i
a = []
n.times do |i|
a << gets.split.map(&:to_i)
puts a[i].join(' ')
end
一応二次元配列にしてみました。
STEP: 10 二次元配列の入力 4
n, m = gets.split.map(&:to_i)
a = []
n.times do
a << gets.split.map(&:to_i)
end
n.times do |i|
puts a[i].join(' ')
end
問題の意図に沿って二次元配列にしてから改めて出力してます。
STEP: 11 i番目の出力 1
k, l = gets.split.map(&:to_i)
a = [
%w[1 2 3 4],
%w[10 100 0 5],
%w[8 1 3 8],
%w[15 34 94 25]
]
puts a[k - 1][l - 1]
STEP: 12 i番目の出力 2
k, l = gets.split.map(&:to_i)
a = []
3.times { a << gets.split.map(&:to_i) }
puts a[k - 1][l - 1]
FINAL問題 【二次元配列の入出力】i番目の出力 Boss
n, m, k, l = gets.split.map(&:to_i)
a = []
n.times { a << gets.split.map(&:to_i) }
puts a[k - 1][l - 1]
STEP: 1 配列に含まれている? 1
a = %w[10 13 21 1 6 51 10 8 15 6].map(&:to_i)
puts a.include?(6) ? "Yes" : "No"
%w[]だと要素は文字列になるので.map(&:to_i)で要素を整数にしています。
最初から[10, 13, 21, ... 15, 6]と,を付ければ済むって話ですが、問題文から配列をコピペする度に,をつける方が面倒に感じてしまって・・・。
STEP: 2 配列に含まれている? 2
n = gets.to_i
a = %w[5 12 6 84 14 25 44 3 7 20].map(&:to_i)
puts a.include?(n) ? "Yes" : "No"
STEP: 3 配列に含まれている? 3
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
puts a.include?(m) ? "Yes" : "No"
STEP: 4 何番目にある? 1
a = %w[1 10 2 9 3 8 4 7 5 6].map(&:to_i)
puts a.index(8) + 1
STEP: 5 何番目にある? 2
n = gets.to_i
a = %w[1 5 9 7 3 2 4 8 6 10].map(&:to_i)
puts a.index(n) + 1
STEP: 6 何番目にある? 3
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
puts a.index(n) + 1
STEP: 7 何個ある? 1
a = %w[1 2 2 1 2 1 2 1 1 1].map(&:to_i)
puts a.count(1)
STEP: 8 何個ある? 2
n = gets.to_i
a = %w[1 2 5 1 4 3 2 5 1 4].map(&:to_i)
puts a.count(n)
FINAL問題 【配列の検索】何個ある? Boss
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
puts a.count(n)
STEP: 1 配列の書き換え
a, b, n = gets.split.map(&:to_i)
array = gets.split.map(&:to_i)
n.times do |i|
if array[i] == a
array[i] = b
end
end
puts array
STEP: 2 2 変数の入れ替え
a, b = gets.split.map(&:to_i)
b, a = a, b
puts "#{a} #{b}"
STEP: 3 配列の要素の入れ替え
a, b, n = gets.split.map(&:to_i)
array = gets.split.map(&:to_i)
array[a - 1], array[b - 1] = array[b - 1], array[a - 1]
puts array
STEP: 4 部分配列
a, b, n = gets.split.map(&:to_i)
array = gets.split.map(&:to_i)
puts array[a - 1..b - 1]
STEP: 5 配列の連結
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
b = gets.split.map(&:to_i)
puts a + b
STEP: 6 配列のソート
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.sort
STEP: 7 配列の反転
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.reverse
STEP: 8 要素のカウント
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
puts a.count(m)
STEP: 9 配列末尾への追加
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
puts a << m
STEP: 10 要素の削除
n, m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a.delete_at(m - 1)
puts a
配列.delete_at(削除位置)
STEP: 11 要素の挿入
n, m, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a.insert(m - 1, k)
puts a
配列.insert(挿入位置, 挿入する要素)
STEP: 12 要素数の出力
a = ["Hello", "paiza", "1234", "pa13"]
puts a.length
STEP: 13 全要素の出力
a = ["good", "morning", "paiza", "813", "pa13"]
puts a
STEP: 14 i 番目の出力
a = ["good", "morning", "paiza", "813", "pa13"]
puts a[2]
STEP: 15 文字列の配列の入力 1
a = %w[eight one three paiza pa13 813]
puts a
STEP: 16 文字列の配列の入力 2
a = gets.chomp.split
puts a
STEP: 17 文字列の配列の入力 3
n = gets.to_i
a = gets.chomp.split
puts a
STEP: 18 i 番目の出力 1
n = gets.to_i
a = ["good", "morning", "paiza", "813", "pa13"]
puts a[n - 1]
STEP: 19 i 番目の出力 2
n = gets.to_i
a = gets.chomp.split
puts a[n - 1]
STEP: 20 i 番目の出力 3
n, m = gets.split.map(&:to_i)
a = gets.chomp.split
puts a[n - 1]
STEP: 21 i 番目の出力 4
n, m, l = gets.split.map(&:to_i)
a = gets.chomp.split
puts a[n - 1][l - 1]
STEP: 22 辞書順に出力 1
a = %w[zaipa izapa paiza]
puts a.sort
STEP: 23 辞書順に出力 2
a = gets.chomp.split
puts a.sort
STEP: 24 辞書順に出力 3
n = gets.to_i
a = gets.chomp.split
puts a.sort
FINAL問題 【文字列の配列】辞書順に出力 Boss
n, k = gets.split.map(&:to_i)
a = gets.chomp.split
puts a.sort[k - 1]
STEP: 1 重複の削除
a = %w[1 3 5 1 2 3 6 6 5 1 4]
puts a.uniq.sort
STEP: 2 配列の最大最小
n = gets.to_i
a = gets.split.map(&:to_i)
a.sort!
puts "#{a[-1]} #{a[0]}"
# puts "#{a.max} #{a.min}"
# 上記のようにmax,minメソッドを使うと簡単ですが
# 整数を大きい順や小さい順に並び替える操作ではありません
STEP: 3 ある数以上以下の要素の列挙 1
n = gets.to_i
a = gets.split.map(&:to_i)
a.each do |i|
if i >= 5
puts i
end
end
STEP: 4 ある数以上以下の要素の列挙 2
n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a.each do |i|
if i >= k
puts i
end
end
STEP: 5 ある数以上以下の要素の列挙 3
n = gets.to_i
a = gets.split.map(&:to_i)
average = a.sum.fdiv(n)
a.each do |i|
if i >= average
puts i
end
end
単に配列内を足して/で割ると小数点以下は切り捨てられてしまいます。
そのため.sum.fdiv()で平均値を求めました。小数点以下も結果に含むことができます。
STEP: 6 二点間の距離 1
n = gets.to_i
n.times do
x, y = gets.split.map(&:to_i)
puts (x - 2).abs + (y - 3).abs
end
STEP: 7 二点間の距離 2
n, a, b = gets.split.map(&:to_i)
x_array = []
y_array = []
n.times do
x, y = gets.split.map(&:to_i)
x_array << x
y_array << y
end
puts (x_array[a - 1] - x_array[b - 1]).abs + (y_array[a - 1] - y_array[b - 1]).abs
FINAL問題 フィボナッチ数
n = gets.to_i
fibo = 0
fibo_0 = 0
fibo_1 = 1
n.times do
fibo += fibo_0
puts fibo
fibo_0 = fibo_1
fibo_1 = fibo
end
フィボナッチ数についてはpaizaラーニングの講座で詳しくされています。
使うプログラミング言語は違いますが、動画に従っていけば問題ありません。