投稿

9月, 2018の投稿を表示しています

AtCoderですべてテストを通ったら自動で提出する

こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 こちらの記事で、AtCoderの提出コードを自動テストするツールを作成した話をしました。 <a href="http://www.smartbowwow.com/2018/09/atcoder.html">Atcoderで使えるコード自動テストツールを作った</a> コマンド一つで、指定した問題の全サンプルをスクレイピングしてきて、それぞれのケースについて正しい出力が得られているかをチェックします。 スクレイピングする際にログイン機能が必要になるのですが、そこらへんを作っていると 「自動提出もsessionを使えば、data渡してpostする処理だし一緒じゃん!つくろ」 となったので勢いで作りました。 ### サンプル サンプルは以下になります。 ```python:submit.py import requests from bs4 import BeautifulSoup import sys import config import os.path # パラメータセット args = sys.argv level = args[1] round = int(args[2]) prob = args[3] LOGIN_URL = "https://beta.atcoder.jp/login" task_screen_name = "{}{:03d}_{}".format(level, round, prob) CPP_ID = 3003 source_path = "{level_camel}/{level}{round:03d}/{level}{round:03d}{prob_camel}.cpp".format( level_camel=level.upper(), level=level, round=round, prob_camel=prob.upper()) if os.path.exists(source_path):

AtCoderで使えるコード自動テストツールを作った

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 <a href="https://pbs.twimg.com/profile_images/378800000000403108/c8cfcb35c76ca5fc55fc2dc680685e8c_400x400.png" imageanchor="1" ><img border="0" src="https://pbs.twimg.com/profile_images/378800000000403108/c8cfcb35c76ca5fc55fc2dc680685e8c_400x400.png" width="320" height="320" data-original-width="400" data-original-height="400" /></a> Atcoderを初めて、4ヶ月ぐらい経ちました。 あんまり上達してないのでモチベが下がってきてはいますが、まあ気長にこつこつ進めていこうと思います。 始めたころに、atcoderやる上でだるいなーと思った処理を自動化するコードを書きました。 <a href="http://www.smartbowwow.com/2018/05/atcoder.html">AtCoderを始めてみて面倒に感じた作業をシェルスクリプトにしてみた</a> 今回はこの続き。 他の面倒な処理を自動化するお話です。 4ヶ月間、不便だなーと思いながらもサンプルケースをサイトからコピーしてきて、自分の入力用のファイルに貼り付け、一つ一つ実行して答えがあっているかを目視で確認してきました。 これ、一発でできそうだしツール作っちゃいたいなーと思ってはいたのですが、なにしろ飽きっぽい性格なのでatcoderいつやめるかもわからず、作るだけ作って放置しそうで作れずにいました。 まあ4ヶ月続いたしそろそろ作って

リクルートサマーインターンシップに行ってきた

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 夏のインターンシップ体験談記事、第二弾はリクルートです。 Recruit Internship for Specialist 2018 -DATA SCIENCE × BUSINESS-に参加してきました。 <a href="https://www.recruit-jinji.jp/event/summer-internship-2018-data-scientist/">Recruit Internship for Specialist 2018-DATA SCIENCE × BUSINESS-</a> ちなみに第一弾はYahooです こちら <a href="http://www.smartbowwow.com/2018/09/yahoo-japan.html">Yahoo Japanのインターンにいってきた</a> 9月10月11月と3ターム開催されるのですが、自分は9月に行きました。 夏はエンジニアコースとデータ解析コースの2種類あるのですが、自分はこのデータ解析の方に参加しました。 業務の内容はかけないので、それ以外(主にごはんの画像)を上げていこうと思います。 飯テロ記事です。 ## 参加するまで 履歴書や、プログラミングでないテスト(なんていうのあれ、SPI?)があって、その後web面接が二回あった気がします。 一回目は人事の方とで、そのあとエンジニアの方との面接だったような。遠い昔すぎて記憶が定かではないですが笑 プログラミングテストがなかったのでびっくりしました。 エンジニアコースの人はあったみたいです。 合格連絡が、月末のどっかに合格者のみに電話がいくシステムでした。 自分が一番嫌いなタイプのあれです。そわそわするやつ。 サイレントお祈りを5月ごろ受けたインターンでされてから嫌いになりました。 でも今回はそわそわすることなかったです。 ちょうどそのころ食中毒になっていてずっと寝込んでいたからです。 おそるべしカンピロバクター。おそ

C++の割り算切り上げ(ceil関数)でハマった

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 <a href="https://juststickers.in/wp-content/uploads/2016/09/c-plus-plus.png" imageanchor="1" ><img border="0" src="https://juststickers.in/wp-content/uploads/2016/09/c-plus-plus.png" width="320" height="320" data-original-width="528" data-original-height="528" /></a> ## 症状 xをTで割って切り上げる処理を行ったときに、 以下の二つが等しくならない時があった サンプルケースではなかったのでどの入力でなっているのかわからんかった ```c++ std::ceil((double)x / T) (x + T - 1) / T ``` xもTもlong long。 ## 型を調べる まず、型を調べる方法を知らずに、出力してみたときの表示を見て型を推定していたのが間違いだった。 double型を出力したら1.0というような形式で出力されると思い込んでいた。 実際には、以下を実行すると、出力は1.0ではなく1になる。 ```c++ double hoge = 1.0; std::cout << hoge << '\n'; ``` ceil関数の返り値も出力してみると整数で表示されたので、てっきり整数型で返ってきているのかと思ったけど、普通にdoubleだった。 ドキュメントにはもちろんdoubleが返ってくると書いてある。あほすぎる。 ちなみに、型を調べるのはこんな感じでかけるみたいなので、今後積極的にデバッグに使っていきたい。 ```c++:型の調べ方 double

Yahoo Japanのインターンにいってきた

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 サマーインターンとして、2週間Yahoo Japanにおじゃましてきました。 ヤフー株式会社 - 採用情報 - インターンシップ 技術的なものや具体的な課題、データなどはSNSなどにアップしないように言われていたのでブログもだめかなーと思っていたのですが、最終日に体験談をブログに書いてもいい(というか書いてください!とのことだった)ので、かける範囲で書こうと思います。 <div class="separator" style="clear: both; text-align: center;display:none;"><a href="https://4.bp.blogspot.com/-uqAKS5dONXY/XFUJQubXkJI/AAAAAAAAAd4/8dWaQE-GeqUzpTrmToafIDkqR__MNIK_wCLcBGAs/s1600/%25E3%2582%25BF%25E3%2582%2599%25E3%2582%25A6%25E3%2583%25B3%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2588%25E3%2582%2599.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-uqAKS5dONXY/XFUJQubXkJI/AAAAAAAAAd4/8dWaQE-GeqUzpTrmToafIDkqR__MNIK_wCLcBGAs/s320/%25E3%2582%25BF%25E3%2582%2599%25E3%2582%25A6%25E3%2583%25B3%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2588%25E3%2582%25