📑

RubyでAtCoderするときの雛形

2022/04/03に公開約800字

雛形

N個の数字を合計する問題の例

$stdin = DATA
n = gets.to_i
p gets.split.take(n).map(&:to_i).sum
__END__
3
20 30 50
# >> 100
  • gets$stdin から受け取る
  • $stdin は変更してよい
  • Ruby には __END__ の下に記述すると DATA.gets で順に受けとれる機能がある
  • なので $stdinDATA にする
  • すると getsDATA.gets 相当になる
  • なので __END__ の後のテキストが gets で順に取得できる

ついでに書くと、るびきち先生の rcodetools (xmpfilter) を活用すると実行結果がソースにコメントに出るので Emacs を利用の方にはおすすめしたい。

# >> 100

あと xmpfilter を使うと $stdin = DATA を書かなくても __END__ の内容を gets で取得できる。

提出

ちょっとダサいけど $stdin = DATA__END__ の間の部分だけをコピペして提出する。

n = gets.to_i
p gets.split.map(&:to_i).take(n).sum

$stdin = DATA がないので gets は本当の標準入力から受け取れる。

xmpfilter だけを使っている場合は $stdin = DATA が不要なのでそのまま提出できる。

欠点

  • __END__ の下に1つ分の入力しか書けない

結び

需要はないと思うけどググっても同じような方法が出てこなかったので紹介してみた。

Discussion

ログインするとコメントできます