過去自分が参加したAtCoderのコンテストの解答管理用リポジトリ。 問題文はAtCorderの知的財産権に属するため、ここには記載しない。
Warning
本リポジトリには、コンテスト期間外に復習のため作成した生成AI使用のコードが含まれています。コンテスト期間においては生成AIを使用せず、参加しています。
GHC 9.8.4
nix develophaskellのExtensionsをインストールする。- `settings.jsonに設定を配置している。これで、LSPやフォーマッタ等が使えるようになる。
- プロジェクト固有のスニペット機能は2026年5月現在ではサポートされていないので、VS CodeのスニペットをZed用に移植したものをグローバルに配置して使用している。
コンテストに参加する前にその日のコンテスト用ディレクトリを作成する
cd src
./create_today_dir.shコンテスト終了後にREADME.md作成する
cd src
./create_readme.sh abcxxx <ディレクトリ名>Haskellのコードを実行する
# 入力データをtxtファイルから受け取って実行する(これが一番競技プログラミングに向いてそう?)
runghc <file_name>.hs < input.txt# Formatter(CLIで実行したい場合)
nix fmtimport文の自動読み込み設定を.ghciに記載している。
.ghciはルートディレクトリ(atcoder/)に置いているが、atdoer/src/等に移動した際には読み込まれない。そのため、グローバルに読み込むためにシンボリックリンクをホームディレクトリに作成する。
cd atcoder
ln -s /home/sigma/atcoder/.ghci /home/sigma/.ghci# 対話形式で実行する
ghci
ghci> putStrLn "Hello, World!"
Hello, World!
ghci> :q
Leaving GHCi.
ghci> :reload# .hsファイルを読みこんで関数を呼び出す。
ghci> :load hoge.hs
ghci> solve 1
1
ghci> :reload# 型
ghci>:t foldl
# info
ghci>:i foldl
# kind
ghci>:k IntflakeでghcWithHoogleを使っているため、devShellのhoogleはdevShellに入れたパッケージ(base/vector/containers/bytestring等)のローカルDBを参照する。ネットワーク不要。
.ghciに:defでマクロを定義しているので、ghciからそのまま検索できる。
# 名前や型シグネチャで検索
ghci>:hoogle sortOn
ghci>:hoogle Ord a => [a] -> [a]
# 先頭ヒットのドキュメントを表示(:docはGHCi組み込みのため:hdocにしている)
ghci>:hdoc foldl'# シェルから直接引く場合
hoogle search --count=15 "sortOn"