【Ruby】学んだメソッドをアウトプット
最近Rubyの問題をpaizaラーニングで解き始めたので学んだことをアウトプットしていきます。
chompメソッドで末尾の改行文字を削除
chompは文字列の末尾に改行コードがあった場合に、文字列の末尾の改行コードを削除してくれる
# 標準入力で値を取得する場合 a = gets.to_s b = gets.to_s.chomp p a p b # =>"Z\n" # =>"Z"
Array.new(n)で欲しい長さの配列を作成
- 問題:整数 n と n 個の数 a_1, ..., a_n が改行区切りで与えられる。与えられた a_1, ..., a_n の中で最も大きい数を出力する
例) 整数nが2の場合、例えば4と7が改行区切りで与えられる。そのうちの大きい数の7を出力する
n = gets.to_i # 整数で値を取得 ary = Array.new(n) # 上記で取得したn個の長さの配列を作成 n.times { |i| ary[i] = gets.to_i } # 作った配列に改行区切りで与えられる数を入れていく。 puts ary.max # 配列に入った数の中で一番大きな数を出力
joinメソッドで文字列を連結
整数 n が与えられるので、n 回、半角スペース区切りで paiza と出力する
例) 整数nが2の場合、「 paiza paiza」と出力する
n = gets.to_i # 整数で値を取得 ary = Array.new(n) # 上記で取得したn個の長さの配列を作成 n.times { |i| ary[i] = "paiza" } # 作った配列にpaizaを入れていく puts ary.join(' ') # 最後にjoinを使って文字列を連結する
splitを使って文字列を分割
問題:整数 n が与えられ、その後に n 個の整数 a_1, ..., a_n が半角スペース区切りで与えられるので、a_1, ..., a_n をそのままの順番で改行区切りで出力する
例) 整数nが2の場合、例えば1と5が半角スペース区切りで与えられる。それを「1 5」という形で出力する
splitメソッドは文字列を分割して配列にするためのメソッド
自分の回答
n = gets.to_i ary = Array.new ary << gets.to_s.split(' ') puts ary
- mapを使うと短く書くことができる
n = gets.to_i a = gets.split(' ').map(&:to_i) puts a
- map(&:to_i) は、標準入力から取得した文字列をsplitで分割したのち,全ての要素にto_iメソッドを適用している
sprintfを使って0埋めする
問題:標準出力で3桁までのランダムな値を受け取り、その値を0埋めにして3桁の数字を出す
- 自分の回答
n = gets.to_s # 文字列として値を受け取る if n.length == 1 # nが1桁の場合は2つの0を追加 puts "00#{n}" elsif n.length == 2 # nが2桁の場合は1つの0を追加 puts "0#{n}" else # nが3桁の場合はそのまま出力 puts "#{n}" end
- sprintfを使うと短く書くことができる
sprintf は「左寄せ」や、数値の「桁のゼロ埋め」や、「小数点以下の桁指定」など、文字列のフォーマットを指定したいときに便利なメソッド。
sprintf( "フォーマット", 戻したい値 )
の形式で引数を文字列で返す。
n = gets.to_i # 整数として値を受け取る puts sprintf('%03d', n) #sprintfで与えられた引数を指定フォーマットの文字列として返す
<<sprintfのフォーマット>>
\r\n :表示を改行させる
%幅d : 整数値を指定の桁数で右詰めにする
%-幅d :整数値を指定の桁数で左詰めにする
%+幅d :整数値を符号付きで表示する
%0幅d : 整数値の余った空白をゼロで埋めする
%幅.小数点以下桁数f :小数点以下の桁数を指定する
%幅s :文字列を右詰めで表示する。
%-幅s :文字列を左詰めで表示します。
もっともっとrubyのスキルを向上させたいので継続していきたい!