はじめに
皆さん、Atcoderやってますか??
私も面白そうだ!と思ってPythonではじめてみました。
ただ、いざコンテストでコード書くぞとなると
コンテストサイトのコードテストはページの移動がめんどくさいし・・・
PyCharmは気軽に・・・というにはちょっと重いし・・・
という、なんか丁度いいコーディング環境が見つからないなぁというお気持ちに。。
そしていろいろ試してみた中で、JupyterNotebookが丁度良さそうだ!っていうのを実感してきたので共有してみたいと思います!
さっそく紹介
まず、そもそもJupyterNotebookが良い!完璧!
というのであれば、この記事はここで終わりで良いのですが
ひとつだけ、すごくAtCoderに向いてないところがあります。
それは「テストケースをうまく入力する手段がない」というところです!
input()で入力を受け取りたいのに、そんなの用意されてないので受け取れません。。
そこで!
「JupyterNotebookでAtCoderのテストケースを簡単に受け取る方法」をご紹介します。
では、ノートブックを開いてください。
はじめのセルに下記のコードをペーストします。
from ipywidgets import Textarea
def get_input(change):
global Input
Input = change["new"]
textarea = Textarea()
textarea.observe(get_input, names='value')
display(textarea)
そして、セルを実行・・・
するとテキストエリアが出現します!
このテキストエリアは複数行の入力が可能で、テストケースをそのまま貼り付けることが可能です!
続いて、
下にセルをひとつ作成し、下記のコードをペーストします。
IN = iter(Input.split('\n')).__next__
def input():
return IN()
使ってみる
Atcoderの常駐コンテスト「practice」の「A-Welcome to AtCoder」で試してみます。
問題文
高橋君はデータの加工が行いたいです。
整数 a,b,cと、文字列sが与えられます。a+b+cの計算結果と、文字列sを並べて表示しなさい。
入力
入力は以下の形式で与えられる。
a
b c
s
出力
a+b+cとsを空白区切りで1行に出力せよ。
入力例1
1
2 3
test
出力例1
6 test
さて、複数行の入力があるタイプです。
さっそく入力例を先ほど準備しておいたテキストエリアに張り付けましょう!
見切れてしまっていますが、貼り付けられましたね。
続いて、コーディングします。
コードは二つ目のセルに書きます。
実行すると・・・ちゃんと動きました!
input()でテキストエリアから一行ずつ取得してくれています。
あとはコードを提出すればめでたくゴールインです!
ACすることを祈りましょう(誤って準備コードも含まないよう注意)
おわりに
いかがだったでしょうか??
少しの準備でいろんな入力をぱぱっと試せるので、かなり快適になるかと思います!
まだしっくりくるコーディング環境が見つからない・・・とお悩みの方は是非ともお試しください~
ではでは