ボトムズ日記

日記です

最近競技プログラミングしていてよく使う書き方とかメソッドとか

Rubyで競プロを解くときによく使うんだけど、よく忘れるのでメモする📝

一文字ずつ文字列を処理する

chars メソッドを使用すると配列を返す。これを each するだけで一文字ずつ比較などができる。

'abcde'.chars
=> ["a", "b", "c", "d", "e"]

標準出力を式の戻り値によって切り替える

puts に三項式を渡せば切り替えることができる。

puts rand * 10 > 5 ? 'high' : 'low'
# low

インクリメント

Ruby++ ができないので += を使用する。よく逆に書いてしまう。

num += 1

初期化した配列を作る

new の第一引数に、要素の数、第二引数に初期値を渡す。

Array.new(2,0)
=> [0, 0]

標準入力のn行を配列に入れる

これは他の方法で代用するのでいつも使用しないけどメモしておく。 while の条件を line = gets のように書いておくと標準入力の1行が line に入るので、それを Array#push してあげて追加していく。

lines = []
while line = gets
  lines.push(line.chomp)
end

0からnまでindexをアップしていく

Integer#upto を使う。 Range オブジェクトを使うより便利。でもよく忘れる。逆は downto

0.upto(2) do |i|
  p i
end

特定の文字列が入っているか確認する

正規表現を使用する。 a にdogかcatが含まれていればtrueになる。

a =~ /(dog|cat)/ 

配列を検索して、その要素の位置を取得する

指定した配列の次の要素をいじるのとかで必要になるやつ。 Array#index を使用する。

a = [1,2,3]
a.index(2)
=> 1

もっといいやつとか間違ってたら教えてください。