##例題
改行区切りで正の整数がn個入力されるので、n個の整数のうち5以上のものを全て足し合わせた値を出力する。
ポイント
・最後に計算するために空の配列aを作成する。
・n、bは文字列ではなく数字。
・timesメソッドを使う。
・timesメソッド内でif文を使い条件にあったらからの配列にいれる。
・<<を使うことによって配列の最後に要素を追加できる。
・最後に配列aの中身を足して出力する。
n = gets.to_i
a = []
n.times do
b = gets.to_i
if b > 4
a << b
end
end
puts a.sum
空の配列aを使わなくても計算できそう?
知見がある方がおりましたら配列を使わない方法についてアドバイスをください。
##例題
aとbを足した値を出力する。入力はa bというフォーマットで与えられる。
ポイント
・入力のフォーマット条件からnを空白区切りにする。
・splitとto_iは一緒に使えないので計算する際に融通が効くto_iで数字に直す。
n = gets.split(' ')
puts n[0].to_i + n[1].to_i
例題
九九を1の段から9の段まで出力する。
ポイント
for in文の中にfor in文をいれる。
def multi(x, y)
return x * y
end
for a in 1..9
for n in 1..9
print multi(a, n)
if num < 9
print ", " #最後まで(ここでいう9)計算が終わったらカンマで結果を区切る。
end
puts "" #各段の計算が終わったら改行する
end
##例題
a と b の間の全ての整数を順に表示する。
ポイント
・改行する
n = gets.split(' ')
for i in n[0]..n[1]
puts i
end
##例題
"Nara", "Shiga", "Hokkaido", "Chiba"を要素に持つ配列(リスト)をプログラムで定義する。
配列(リスト)の要素をインデックス順に1行ずつ、全て表示する。
||の中に入れた変数をputsで表示します。
n = ["Nara", "Shiga", "Hokkaido", "Chiba"]
n.each do |s|
puts s
end
##例題
文字列nの各文字を、1文字ずつ出力する。
1文字出力ごとに改行する。
最後は改行し、余計な文字、空行を含んではいけない。
splitメソッドはsplit('')で改行ができる。
n = gets.split('')
puts n
##例題
1文字目と2文字目を半角スペース区切りで出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
出力例1
r e
n = gets
puts "#{n[0]} #{n[1]}"
##例題
n 文字目と n + 1 文字目を半角スペース区切りで出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
入力例1
2
read
出力例1
e a
n = gets.to_i
s = gets
if s[n]
puts "#{s[n - 1]} #{s[n]}"
end
##例題
1行目に行数を表す整数 n、続く n 行で m 個の「文字」と「整数」の組が空白区切りで入力されます。
n 個の整数だけをそのまま順に出力してください。
n 個の整数を順に改行区切りで出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
入力例1
4
S 1
F 2
E 5
Y 6
出力例1
1
2
5
6
n = gets.to_i
n.times do
puts gets.split(' ')[1]
end
##例題
"HND", "NRT", "KIX", "NGO", "NGO", "NGO", "NGO", "NGO"
を要素に持つ配列(リスト)をプログラムで定義し、使用すること。
ただし、2つ以上同じ要素が出現するのは、1種類の文字列についてだけです。
同じ要素の数をカウントして、その数を出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
n = ['HND', 'NRT', 'KIX', 'NGO', 'NGO', 'NGO', 'NGO', 'NGO']
count = {} #空の配列を作る
n.each do |e|
if count[e]
count[e] = count[e] + 1
else
count[e] = 1
end
end
count.each do |key, value| #_keyで文字列から数字に変更する
if value != 1 #!=は異なる値かどうかを確かめる。
puts value #=>5
end
end