LoginSignup
4
2

More than 3 years have passed since last update.

Paizaのスキルチェックで使えるメソッド集

Last updated at Posted at 2020-04-13

よく忘れる標準入力関係とかPaizaで使えるメソッドメモ。

gets

  • 入力した値の後ろが改行される。
name = gets 
puts "私の名前は" + name + "です"
=> 佐藤
   私の名前は佐藤
   です

gets.chomp

  • chompをつけることで入力値の後ろの改行をなくす。
name = gets.chomp 
puts "私の名前は" + name + "です"
=> 佐藤
   私の名前は佐藤です

split

  • カンマや空白で区切られた文字列から、splitメソッドを使って配列を作る。(使用頻度高め)

下記のように一行で入力した情報を配列にしたい時などに使用。

# 標準入力時
佐藤 鈴木 高橋 山本 田中
users = gets.chomp.split
p users

=> ["佐藤","鈴木","高橋","山本","田中"]

paizaでよく使うsplitの使い方いろいろ

たとえば友達の人数と名前と年齢を表示するプログラムを組む際、

3
田中 21
高橋 18
坂本 24

のように入力しなくてはいけない場合、

num = gets.to_i
num.times do
  s = gets.chomp.split(" ")
  print "名前: #{ s[0] } , 年齢: #{ s[1] }\n"
end

とする。

map

  • 配列の要素の数だけブロック内の処理を繰り返し、結果として作成された配列を返す。
name = ["1", "2", "3"]
name.map{|n| n.to_i}
=> [1,2,3]

# 上と同じ結果になる
name.map(&:to_i)
=> [1,2,3]

chars

  • 文字列に対して使用でき、string.charsとすることで文字を1文字ずつ分割する。
number = 12345
p number.to_s.chars.map(&:to_i)
=> [1,2,3,4,5]

digits

  • integerに使えるメソッドで、数字の各桁を取り出したい時に使う。数字は逆からになる。

number = 123456
p number.digits
=> [6,5,4,3,2,1]

digitsを使わないやり方だと少し遠回りになる

number = 123456
p number.to_s.chars.map(&:to_i).reverse

transpose

  • 列と行を入れ替えるメソッド。
  • 縦の票の合計とか計算するのに使える。
ary =[[1, 2],
      [3, 4],
      [5, 6]]

p ary.transpose
=>[[1, 3, 5],[2, 4, 6]]

count

  • 引数を渡さない場合はレシーバの要素数を返す。
  • 引数を1つ指定した場合はレシーバの要素のうち引数に一致するものの個数をカウントして返す(一致は == で判定)。
  • ブロックを指定した場合は、ブロックを評価して真になった要素の個数をカウントして返す。
ary = [1, 2, 4, 2]
ary.count             # => 4
ary.count(2)          # => 2
ary.count{|x|x%2==0}  # => 3

上記メソッドを使用した応用

配列の中に特定の数字が2個あるか確認(にじ)

array = [[1,2,4],[3,3,5]]
if array.map{|a| a.count(3)}.count(2)
4
2
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
4
2