LoginSignup
21
16

More than 3 years have passed since last update.

AtCoderのテストケースをJupyterNotebookで簡単に入力・実行する方法

Last updated at Posted at 2020-03-05

はじめに

皆さん、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)

そして、セルを実行・・・
するとテキストエリアが出現します!
セル1.JPG
このテキストエリアは複数行の入力が可能で、テストケースをそのまま貼り付けることが可能です!

続いて、
下にセルをひとつ作成し、下記のコードをペーストします。

IN = iter(Input.split('\n')).__next__
def input():
    return IN()

以上で準備は完了です!
セル2.JPG

使ってみる

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

さて、複数行の入力があるタイプです。
さっそく入力例を先ほど準備しておいたテキストエリアに張り付けましょう!
実践1.JPG
見切れてしまっていますが、貼り付けられましたね。

続いて、コーディングします。
コードは二つ目のセルに書きます。
実践2.JPG
実行すると・・・ちゃんと動きました!
input()でテキストエリアから一行ずつ取得してくれています。

あとはコードを提出すればめでたくゴールインです!
ACすることを祈りましょう(誤って準備コードも含まないよう注意)
提出.JPG

おわりに

いかがだったでしょうか??

少しの準備でいろんな入力をぱぱっと試せるので、かなり快適になるかと思います!
まだしっくりくるコーディング環境が見つからない・・・とお悩みの方は是非ともお試しください~

ではでは

21
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
16