はじめに
AtcoderProblemsを眺めて
「あの問題はどこだったかな」
となったことはありませんか?
今までは問題のタイトルから探し物の断片を紐づけてしらみつぶしに探していました.
不便が過ぎるのでさすがに解法の類題をまとめたサイトくらいあるだろうと思い調べたところ,投票でタグをつけて問題を分類するサイトや特定解法の問題を集めたQiita記事はありましたが,キーワード検索して参照するツールは調べた限りなさそうでした.
ないものは自分で作りましょう.
タイトル,問題文,公式解説の語句を検索するWebアプリです.
アプリのベースはtamocoさんのアプリを使わせていただきました.
引用元:index.htmlだけでCSVを検索するシステムを改善する
コードと公開先
Webアプリ
ソースコード
機能
主機能
・文字を入力しその文字がタイトル,問題,解説のいずれかに存在すれば,
該当する問題リンクをカード形式で表示する
その他機能
・コンテスト番号で絞り込み
・A~G問で絞り込み
・左上ボタンもしくは直接数字を入力してページ遷移
・Reverseボタンでカードを逆順表示
検索ワード例
セグ,二分探索,dfs,DFS,ダイクストラ,キュー,dp,Mex,Tree,
グリッド,文字列,クエリ,確率,文字列 S,高橋,青木,
使い道
・解法から問題への逆検索が容易
・類題をまとめて表示できる,苦手分野などの練習に便利
・うろ覚えな問題を探しやすい(時期をざっくり絞り,登場人物,題材,解法などから調べられる)
・コンテスト中,類題を探して自分のコードを参照できる
注意
・ABC200~344までしか対応していない
・完全一致させる必要がある. スペースや全角半角,大文字小文字などのブレには対応していない(例えば,bitDP, bit DPで検索結果が変わる)
・andやor検索には対応していない
制作過程
始めはキーワードを指定してスクレイピングしていました.
アクセスに間隔を設ける必要があるため時間がかかるのがネック,,
予め問題情報をcsvファイルにまとめておいて,ローカルにアクセスすればいいのでは?
とりあえず,スクレイピングして得られたデータをcsvに放り込むコードを作成.
git上でcsvが文字化けしていたので修正
csvファイルを検索するツールってないのか?と思い調べたらこちらの記事を発見
Web制作の知識は皆無なのですごく助かりました.tamocoさんありがとうございます.
こちらをベースにちょこちょこ改変して完成!
まとめ
とりあえずある程度のものはできたと思います.
時間があればもっとよくしていきたいけど,結構満足しちゃったので
誰か自分の代わりにもっといいの作ってください
追加したい機能
・スペース,大文字小文字を許容する
・ARCまで収集先を広げる.
・コンテスト毎に自動更新
・AtCoder Problemsみたいにユーザ参照ができるようにする
・加えて自分が解いた問題に色を付けるもしくは検索結果から弾く