LoginSignup
1
0

More than 3 years have passed since last update.

Aizu Online Judge

Last updated at Posted at 2020-08-30

この記事は、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"
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