Open4

rubyで競プロするときのtips

おっちー(O.S)おっちー(O.S)

一行ずつ標準入力を読み取る

getsメソッドを呼び出すときは、$stdin(標準入力)が暗黙的にレシーバになるのか。
つまり、

gets

$stdin.gets

と同じ挙動になる。
また、getsメソッドは標準入力を一行読みだす。

全ての行を一括に標準入力を読み取る

readメソッドは標準入力をすべて読み出す。

$stdin.read

一行のコードを空白区切りで受け取る

  • デフォルトでは、splitは空白文字で分割してくれる。
ruby a.rb <<EOF
5 10
2 3 2 5 3
EOF

のような実行だと、

number_1, number_2 = gets.split.map(&:to_i)
numbers = gets.split.map(&:to_i)

みたいな感じで受け取れる

おっちー(O.S)おっちー(O.S)

reduce

array1 = [1, 2, 3, 4]
array2 = [2, 4, 6, 8]
array3 = [2, 4, 5, 7]

common_elements = [array1, array2, array3].reduce do |common, array|
  binding.irb
  common & array
end