環境はそろえたからやれDo it
最近はモチベが虚無になってしまい、PCすら触らないままダラダラと過ごしていました。なんか太った気がする
先日気の迷いからpaizaをこれまた久しぶりにやりました。ログみたら4ヶ月くらいログインすらしてなかった模様
ぱいじょ!100話突破記念・二週連続スキルチェックコラボ問題出題中!一週間以内にコラボ問題に挑戦すると、抽選でAmazonギフト券やぱいじょ!グッズが当たります(∩´∀`)∩
— paiza[パイザ] (@paiza_official) 2018年2月27日
ぱいじょ! https://t.co/xenuVPrZlq pic.twitter.com/C6jMxJzhDY
金に目がくらんだのですが、びっくりするくらい書けなくてつらくなったのでAtcoderBegginerContestを埋めようと思いまして。
わたしはVSCを使ってカラムの右側に問題の入力、左側でコードを書き、ターミナルと出力を表示させてリダイレクトで入力を流し込んで結果を見てみる感じのやつをやってます。雰囲気はこう(出力してませんが) たいてい問題なんてブラウザ開きながらやるのでテストケースの切り替えはそのたびにコピペしてる感じです。いまのところそんなに不便はないのでこのスタイル。
で、埋めていくにあたり、最初からまとまったディレクトリがないと途中でモチベが虚無を越えてしまうと思い、こんな感じの構成を自動化するやつを書きました。
自動化っていうとプログラマっぽいし、30分かかる作業を10秒で終わらせるために1時間かける!みたいな話はカッコよくて憧れがあったのです。結局10時間くらいかかった上に実行も一度限りなので、ハナから手作業でやったほうが早かったというオチがありますが。。
知見
BeautifulSoupだけです。最初は各問題のページを直接アクセスしてスクレイピングしようとしていたのですが、atcoderのurlの命名規則がどっかで変わる(abc001とか見ると末尾がabc001_1
の一方、089だとabc089_a
とアルファベット(問題の難易度)になってる)という発見があり、統一されたurlのcontests/abcxxx/tasks
のページからリンクをたどる形にしました。
htmlのタグやクラス命名規則も何度か変わってるっぽくて、同定するのが難しく、結局「入力例」と書かれている場所を探してそこからテストケースを探すという力技で切り抜けました。そこらへんはソースを見れば一発でわかると思います。
基本的にBeautifulSoupをネタにした記事はそのへんに大量に転がっているのですが、(pythonのライブラリだとほぼ全部そうだと思ってますが)公式ドキュメントはわからないよう作ってあるとしか思えないので使ってません。これがpythonのZENってやつでしょうか。。。
あと初めてpythonでディレクトリ操作みたいなのをやりましたがめちゃくちゃ簡単でいいですね。
お膳立てはした。やれ
残念ながら作り終えた段階でモチベがなくなったので無理です。AOJバージョンでも作ろうかな。。。