1からプログラムを作成する能力を問う、実践を想定した日本初の検定。
時代の流れによって変化するツールや言語の使い方ではなく、プログラミングの根幹にある「効率のよいロジックを早く正確に記述するための思考力」を測定することができます。
また、多くの検定試験で採用されているような選択肢回答による知識型の検定試験とは違い、実際にプログラムを書かせて実行し、その結果で能力を判定する「実践型検定」ということも特長の一つです。
詳細情報
試験名称
アルゴリズム実技検定/Practical Algorithm Skill Test (PAST)
認定ランク
・エントリー
・初級
・中級
・上級
・エキスパート
※検定結果に応じて5段階の公式認定
受験資格
プログラミングに興味がある人なら誰でも受験可能
受験方法
オンライン受験(リアルタイム受験・通常受験)
※AtCoderIDを使用し、自宅・職場など場所を選ばず受験可能
試験時間
リアルタイム受験・通常受験いずれも開始時間から5時間
受験費用(各税込)
・一般:8,800円/人
・団体受験(30名以上):7,040円/人
・団体受験(100名以上):6,160円/人
認定ランク分けの詳細
ランク | ランク分け詳細 | 出題数/配点 |
---|---|---|
エントリー | 25~39点 | 【出題数】 15問 【配点】 ・1問目=9点 ・2~3問目=8点 ・4~6問目=7点 ・7~15問目=6点 100点満点 |
初級 | 40~59点 | |
中級 | 60~79点 | |
上級 | 80~89点 | |
エキスパート | 90~100点 |
公式認定ランクに応じた出題範囲
ランク | 出題範囲 |
---|---|
エントリー | 標準入出力や整数型、文字列型の扱い、forやifなどのループや条件分岐などの、プログラミングにおける基本的なロジックを、問題に合わせて適切に組み合わせる能力を問います。 |
初級 | エントリーの要件に加え、多次元配列やリスト構造などを用いた、複雑性の高くコーナーケースも多く含まれる実装の難しいプログラムを組む能力が要求されます。 また、四則演算や簡単なデータの持ち方の工夫、ソートなどで解決可能な、計算量を改善する問題も出題されます。 |
中級 | 初級の要件に加え、深さ優先探索や幅優先探索などを用いた複雑な全探索や、動的計画法や貪欲法・二分探索などの高度な計算量の改善を要求する問題が出題されます。 例えばグラフアルゴリズムでは、最短経路問題や最小全域木などの有名な問題も出題されます。 また、確率や組み合わせを数理的に計算する能力も求められます。 単に知識を問う問題ではなく、それらのアルゴリズムを正しく適用出来るかが問われます。 |
上級 | 中級の要件に加え、出題される典型アルゴリズムが増加し、問題の複雑性が増加します。 動的計画法や貪欲法においても、単純に適用出来るような問題ではなく、さらに工夫が必要な問題が出題されるようになります。 例えばグラフアルゴリズムでは、最小共通祖先や最大流問題や最小費用流問題などの、高度なアルゴリズムが出題される可能性があります。 |
エキスパート | 出題されるアルゴリズムは上級と変わりませんが、アルゴリズムの適用難易度が高い問題が出題されます。 |
試験結果
試験結果(点数・ランク)は試験終了後に即時発表
有効期間
受験日から2年間有効
問題を解くためのプログラミング言語
言語 | コンパイル・インタプリタ | 実行コマンド |
---|---|---|
C (GCC 9.2.1) | gcc -std=gnu11 -O2 -DONLINE_JUDGE -o ./a.out ./Main.c -lm | ./a.out |
C (Clang 10.0.0) | clang -std=c11 -O2 -DONLINE_JUDGE -o ./a.out ./Main.c -lm | ./a.out |
C++ (GCC 9.2.1) | g++ -std=gnu++17 -Wall -Wextra -O2 -DONLINE_JUDGE -I/opt/boost/gcc/include -L/opt/boost/gcc/lib -o ./a.out ./Main.cpp | ./a.out |
C++ (Clang 10.0.0) | clang++ -std=c++17 -stdlib=libc++ -Wall -O2 -DNDEBUG -DONLINE_JUDGE -I/opt/boost/clang/include -L/opt/boost/clang/lib -o ./a.out ./Main.cpp | ./a.out |
Java (OpenJDK 11.0.6) | /usr/lib/jvm/java-11-openjdk-amd64/bin/javac ./Main.java | /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xss256M Main |
Python (3.8.2) | bash -c 'python3.8 ./Main.py ONLINE_JUDGE 2>/dev/null' | python3.8 ./Main.py |
Bash (5.0.11) | bash ./Main.sh | |
bc (1.07.1) | bc –mathlib ./Main.bc | |
Awk (GNU Awk 4.1.4) | awk -f ./Main | |
C# (.NET Core 3.1.201) | bash -c 'cp ./Main.cs ./../csharp/Program.cs && dotnet publish ./../csharp -c Release -r ubuntu.18.04-x64 -p:PublishReadyToRun=true -o . -v q –nologo 1>&2' | ./csharp |
C# (Mono-mcs 6.8.0.105) | mcs -warn:0 -o+ -unsafe -r:System.Numerics -langversion:latest ./Main.cs -out:./Main.exe | mono ./Main.exe |
C# (Mono-csc 3.5.0) | csc -warn:0 -o+ -unsafe -r:System.Numerics.dll -langversion:latest ./Main.cs -out:./Main.exe | mono ./Main.exe |
Clojure (1.10.1.536) | clojure -J-Xss256M ./Main.clj | |
Crystal (0.33.0) | crystal build –release –no-debug –no-color -o ./a.out ./Main.cr | ./a.out |
D (DMD 2.091.0) | bash -c 'dmd -wi -m64 -O -release -inline -boundscheck=off -of=./a.out `dub list | head -n-1 | tail -n+3 | awk "{print \"-I\" \\$3 \"source\"}" | xargs` ./Main.d' | ./a.out |
D (GDC 9.2.1) | gdc -O2 -frelease -o ./a.out ./Main.d | ./a.out |
D (LDC 1.20.1) | ldc2 -O -release -of ./a.out ./Main.d | ./a.out |
Dart (2.7.2) | dart2native ./Main.dart -o ./a.out | ./a.out |
dc (1.4.1) | dc -f ./Main.dc | |
Erlang (22.3) | bash -c 'erlc Main.erl 1>&2' | erl -noshell -run Main main run erlang halt |
Elixir (1.10.2) | bash -c 'elixirc ./Main.ex -o . 1>&2' | elixir -pa . -e Main.main |
F# (.NET Core 3.1.201) | bash -c 'cp ./Main.fs ./../fsharp/Program.fs && dotnet publish ./../fsharp -c Release -r ubuntu.18.04-x64 -o . -v q –nologo 1>&2' | ./fsharp |
F# (Mono 10.2.3) | fsharpc -O -o ./a.exe ./Main.fs | mono ./a.exe |
Forth (gforth 0.7.3) | gforth-fast ./Main.fs -e bye | |
Fortran(GNU Fortran 9.2.1) | gfortran -O2 -o ./a.out ./Main.f08 | ./a.out |
Go (1.14.1) | go build -buildmode=exe -o ./a.out ./Main.go | ./a.out |
Haskell (GHC 8.8.3) | ghc -o a.out -O2 ./Main | ./a.out |
Haxe (4.0.3); js | haxe -cp . -main Main -js ./Main.js -lib hxnodejs | node ./Main.js |
Haxe (4.0.3); Java | haxe -m Main -cp . –java . | java -Xss256M -jar ./Main.jar |
JavaScript (Node.js 12.16.1) | node ./Main.js –stack-size=262144 | |
Julia (1.4.0) | bash -c 'julia ./Main.jl ONLINE_JUDGE 2>/dev/null' | julia ./Main.jl |
Kotlin (1.3.71) | kotlinc ./Main.kt -include-runtime -d ./Main.jar -XXLanguage:+InlineClasses | /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp ./Main.jar MainKt -Xss256m |
Lua (Lua 5.3.5) | luac -o ./luac.out ./Main.lua | lua ./luac.out |
Lua (LuaJIT 2.1.0) | luajit -O3 -b ./Main.lua ./luac.out | luajit -O3 ./luac.out |
Dash (0.5.8) | sh ./Main.sh | |
Nim (1.0.6) | nim cpp -d:release –opt:speed –multimethods:on –warning[SmallLshouldNotBeUsed]:off –hints:off -o:./a.out ./Main.nim | ./a.out |
Objective-C (Clang 10.0.0) | bash -c 'clang $(gnustep-config –objc-flags) -I/usr/lib/gcc/x86_64-linux-gnu/7/include -o ./a.out ./Main.m $(gnustep-config –base-libs)' | ./a.out |
Common Lisp (SBCL 2.0.3) | sbcl –noinform –eval '(compile-file "./Main")' –quit | sbcl –script ./Main.fasl |
OCaml (4.10.0) | bash -c 'eval $(opam env) ocamlfind ocamlopt -O2 -o ./a.out ./Main.ml -linkpkg -thread -package str,num,threads,containers,core,iter,batteries' | ./a.out |
Octave (5.2.0) | flatpak run org.octave.Octave -W ./Main.m | |
Pascal (FPC 3.0.4) | fpc -O2 -Sd -Sh -o./a.out ./Main.pas | ./a.out |
Perl (5.26.1) | perl -W -c ./Main.pl | perl -X ./Main.pl |
Raku (Rakudo 2020.02.1) | perl6 -c ./Main.p6 | perl6 ./Main.p6 |
PHP (7.4.4) | php -l ./Main.php | php ./Main.php |
Prolog (SWI-Prolog 8.0.3) | swipl -O -g main -o ./Main -c ./Main.pl | ./Main |
PyPy2 (7.3.0) | pypy ./Main.py | |
PyPy3 (7.3.0) | pypy3 ./Main.py | |
Racket (7.6) | raco exe -o ./a.out ./Main.rkt | ./a.out |
Ruby (2.7.1) | ruby -w -c ./Main.rb | bash -c 'RUBY_THREAD_VM_STACK_SIZE=268435456 ruby ./Main.rb' |
Rust (1.42.0) | bash -c 'cp ./Main.rs ./../rust/src/main.rs && cargo build –release –offline –quiet –manifest-path=/imojudge/rust/Cargo.toml && cp ./../rust/target/release/main ./a.out' | ./a.out |
Scala (2.13.1) | bash -c 'JAVACMD=/usr/lib/jvm/java-8-openjdk-amd64/bin/java scalac -opt:_ -opt-inline-from:'**' -opt-warnings:_ -deprecation -d . ./Main.scala' | bash -c 'JAVACMD=/usr/lib/jvm/java-8-openjdk-amd64/bin/java scala -J-Xss256M -classpath . Main' |
Java (OpenJDK 1.8.0) | /usr/lib/jvm/java-8-openjdk-amd64/bin/javac ./Main.java | /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Xss256M Main |
Scheme (Gauche 0.9.9) | gosh precomp -e ./Main.scm | gosh ./Main.scm |
Standard ML (MLton 20130715) | mlton -output ./a.out ./Main.sml | ./a.out |
Swift (5.2.1) | swiftc -Ounchecked -o ./a.out ./Main.swift | ./a.out |
Text (cat 8.28) | cat ./Main.txt | |
TypeScript (3.8) | bash -c 'ln -s /usr/lib/node_modules ./node_modules; tsc ./Main.ts –target ESNext –outDir . –moduleResolution node –module commonjs' | node ./Main.js –stack-size=262144 |
Visual Basic (.NET Core 3.1.101) | bash -c 'cp ./Main.vb ./../visualbasic/Program.vb && dotnet publish ./../visualbasic -c Release -r ubuntu.18.04-x64 -o . -v q –nologo 1>&2' | ./visualbasic |
Zsh (5.4.2) | zsh ./Main.sh | |
COBOL – Fixed (OpenCOBOL 1.1.0) | cobc -x -O2 -o ./a.out ./Main.cob | ./a.out |
COBOL – Free (OpenCOBOL 1.1.0) | cobc -x -free -O2 -o ./a.out ./Main.cob | ./a.out |
Brainfuck (bf 20041219) | bf -c999999999 ./Main.bf | |
Ada2012 (GNAT 9.2.1) | gnat-9 make -O3 -o ./a.out ./Main.adb | ./a.out |
Unlambda (2.0.0) | unlambda ./Main.unl | |
Cython (0.29.16) | bash -c 'cython -3 –embed ./Main.pyx; gcc -O2 -fPIC -I/usr/include/python3.8 -I/usr/local/lib/python3.8/dist-packages/numpy/core/include -o ./a.out ./Main.c -lpython3.8' | ./a.out |
Sed (4.4) | sed -f ./Main.sed | |
Vim (8.2.0460) | bash -c 'cat – > /tmp/out; TERM=dumb vim -N -u NONE -i NONE -s ./Main.vim /tmp/out > /dev/null 2>&1; cat /tmp/out' |
公式HP
AtCoder株式会社
※掲載内容について古い情報や誤りがある場合がございますので、必ず公式HPにて最新情報を確認してください。