去年は色々と忙しくじっくり勉強する時間がなかったので、リハビリを兼ねて競技プログラミングの問題をJuliaで挑戦してみることにします。
ひとまず、AtCoderの競プロ典型 90 問を解いて行く予定です。 ジャッジ時にJITコンパイルが走って200~300ms程度消費してしまいますが、幸い今のところTLEでどう頑張っても通せない問題はなかったです。
下に解答を記録していこうと思います。
https://github.com/matsueushi/CompetitiveProgramming
さてはて、いつまで続くやら。
2022/6/7 追記 (随時更新)
ちょっとしたテクニック
- 入力
parseint() = parse(Int, readline())
parseints() = parse.(Int, split(readline()))
function parsepoints(n::Int)
xs, ys = zeros(Int, n), zeros(Int, n)
for i in 1:n
xs[i], ys[i] = parseints()
end
xs, ys
end
function parsestrings(n)
ss = Vector{String}(undef, n)
for i in 1:n
ss[i] = readline()
end
ss
end
このようなテンプレートを作っておくと便利
- パッケージのバージョンを確認する ローカルの実行環境をジャッジと合わせておかないと、予期しないエラーが起こる可能性あり。 コードテストで
using Pkg
println(Pkg.status())
を実行すると使われているパッケージのバージョンが分かります。
Status `~/.julia/environments/v1.4/Project.toml`
[864edb3b] DataStructures v0.17.11
[27ebfcd6] Primes v0.4.0
nothing
- StringからVector{Char}への変換
cs = Vector{Char}(s)
- 負の数の剰余
julia> mod(-1, 4)
3