アルゴリズム実技検定

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'

※2020年7月現在
※その他詳細な規定は公式サイトのルールを参照



公式HP
AtCoder株式会社

※掲載内容について古い情報や誤りがある場合がございますので、必ず公式HPにて最新情報を確認してください。