LoginSignup
1
0

More than 3 years have passed since last update.

【Ruby】自分が間違ったpaizaの例題の解説

Last updated at Posted at 2020-05-05

例題

改行区切りで正の整数が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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0