Open4
rubyで競プロするときのtips
一行ずつ標準入力を読み取る
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)
みたいな感じで受け取れる
実行例
ruby a.rb <<EOF
5 10
2 3 2 5 3
EOF
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