この記事は、Aizu Online Judgeに取り組む中で勉強したこと等を忘れないようにするため、備忘録として作成するもの。
#gets(文字列の入力を受け付ける)
gets = get string
name = gets
#Taroと入力し、エンター
#=>"Taro\n"
name = gets.chomp
#Taroと入力し、エンター
#=>"Taro"
number = gets.to_i
#1と入力
#=>1
##複数のデータセット入力
gets.split(" ")
#1 2 と入力
#=> ["1", "2"]
gets.split(" ").map(&:to_i)
#1 2 と入力
#=> [1, 2]
x,y = [1,2]
#変数x、yに配列の要素を代入
#x =>1
#y =>2
x,y = gets.split(" ").map(&:to_i)
#1 2 と入力
#x => 1
#y => 2
##chomp(改行文字の削除)
gets
#aと入力
=> "a\n"
gets.chomp
#aと入力
=> "a"
#hash(ハッシュ)
##to_a
h = {1 => 2}
h.to_a #=> [[1,2]]
#join (配列の連結)
配列を連結して1つの文字列
として返す
[1,2,3].join
#"abc"
[1,2,3].join(" ")
#"a b c"
[1,2,3].join("+")
#"1+2+3"
#繰り返し
##times
1000.times do
puts "Hello World"
end
##while
while 繰り返し続ける条件 do
繰り返す処理
end
#例
i = 1
while i <= 10
puts i
i = i +1
end
##文字列の繰り返し
"abc" * 2 #=>"abcabc"
#範囲(Range)(../...)
(1..5).to_a #=>[1,2,3,4,5]
(1...5).to_a #=>[1,2,3,4]
#比較演算子
a != b #aとbが等しくない
#sendメソッド
レシーバに対して指定した文字列(またはシンボル)のメソッドを実行する。
1.send("+",2) #=>3
"a".send("upcase") #=> "A"
#配列
##Array.new
arr = Array.new(3)
#=> [nil,nil.nil]
arr = Array.new(3,0)
#=> [0,0,0]
a = Array.new(3){"abc".upcase}
=> ["ABC", "ABC", "ABC"]
##配列の合計
Enumerableモジュールのinjectメソッドを使う。A
##組み合わせ
[1,2,3].combination(2)
#=>#<Enumerator: [1, 2, 3]:combination(2)>
[1,2,3].combination(2).to_a
#=>[[1, 2], [1, 3], [2, 3]]
##each_with_index
["a","b","c"].each_with_index do |str,i|
puts "要素:#{str},インデックス番号:#{i}"
end
#=>要素:a,インデックス番号:0
#=>要素:b,インデックス番号:1
#=>要素:c,インデックス番号:2
##uniq(重複の排除)
[1,2,2,3,4,4].uniq
=> [1, 2, 3, 4]
##並べ替え
###reverse
逆順に並べ替える。(*降順ではない!)
[1,5,3].reverse
=> [3, 5, 1]
降順にする場合は、sortで昇順にしたのち、reverse
[1,5,3,4,2].sort.reverse
=> [5, 4, 3, 2, 1]
##find_all
配列の各要素にブロックを実行し、結果が真になる要素を返す。
[0,1,1,0].find_all{|n|n == 1}
#=> [1, 1]
##all?
すべての要素が真である場合に true を返す。偽である要素があれば、ただちに false を返す。
ブロックを伴う場合は、各要素に対してブロックを評価し、すべての結果が真である場合に true を返す。ブロックが偽を返した時点で、ただちに false を返す。
[2,4,6,8].all?(&:even?)
=> true
[1,2,4,6].all?(&:even?)
=> false
#正規表現
##gsub
マッチする部分全てを置き換える。
"123456".gsub(/2345/,"0")
=> "106"