Edited at

百花繚乱!なないろ言語で競技プログラミングをする資料まとめ

AtCoder を始めるための記事

の冒頭で、C++ 以外の言語で競技プログラミングを始めるための入門資料たちをまとめていたのですが、長くなって来たのでこちらに分けました。


はじめに

競技プログラミングサイト AtCoder の特長の 1 つに 50 以上もの言語が使えることが挙げられます:

特に ABS (AtCoder Beginners Selection) には標準入出力方法から基本文法までを確認できる易しめの問題たちが集められているので、なにか新しい言語を覚えようと思ったときに手っ取り早く入門できる魅力があります。どの言語でも標準入出力のところでつまずきがちなのですが、以下にまとめた記事たちがとても参考になると思います:

言語
記事
著者

Rust
AtCoder に登録したら解くべき精選過去問 10 問を Rust で解いてみた

@tubo28 さん

Python
AtCoder に登録したら解くべき精選過去問 10 問 を Python で解いてみた
ながたさん

C#
AtCoder に登録したら解くべき精選過去問 10 問を C# で解いてみた

@NotFounds さん

Java
AtCoder に登録したら解くべき精選過去問 10 問を Java で解いてみた

@0x841 さん

Kotlin
AtCoder に登録したら解くべき精選過去問 10 問を Kotlin で解いてみた
YMATSUX さん

JavaScript
AtCoder に登録したら解くべき精選過去問 10 問を JavaScript で解いてみた

@mochi8k さん

Haskell
AtCoder に登録したら解くべき精選過去問 10 問を Haskell で解いてみた

@hsjoihs さん

Go
AtCoder に登録したら解くべき精選過去問 10 問を Go で解いてみた

@kakko_hatena さん

Perl6
AtCoder に登録したら解くべき精選過去問 10 問を Perl6 で解いてみた

@kotatsugame さん

D
AtCoder に登録したら解くべき精選過去問 10 問を D で解いてみた
竹雄さん

Fortran
AtCoder に登録したら解くべき精選過去問 10 問を Fortran で解いてみた
yukiutaai さん

Standard ML
AtCoder に登録したら解くべき精選過去問 10 問を Standard ML で解いてみた

@fetburner さん

Nim
AtCoder に登録したら解くべき精選過去問 10 問を Nim で解いてみた

@Kutimoti_T さん

PHP
AtCoder に登録したら解くべき精選過去問 10 問を PHP で解いてみた

@rock619 さん

Crystal
AtCoder に登録したら解くべき精選過去問 10 問を Crystal で解いてみた

@tomerun さん

Common Lisp
AtCoder に登録したら解くべき精選過去問 10 問を Common Lisp で解いてみた

@fireflower0 さん

Ruby
AtCoder に登録したら解くべき精選過去問 10 問を Ruby で解いてみた

@d_nishiyama85 さん

Julia
AtCoderに登録したら解くべき精選過去問 10 問を Julia で解いてみた

@lcolaholicl さん

Piet
AtCoderに登録したら解くべき精選過去問 10 問を難読言語 Piet で解いてみた
basemusi さん

Swift
AtCoderに登録したら解くべき精選過去問 10 問を Swift で解いてみた

@cielavenir さん

Scala
AtCoder に登録したら解くべき精選過去問 10 問を Scala で解いてみた

@kgtkr さん

C
AtCoderに登録したら解くべき精選過去問 10 問を C 言語で解いてみた

@cielavenir さん

Bash
AtCoder に登録したら解くべき精選過去問 10 問を Bash で解いてみた

@cympfh さん

Lua
AtCoder に登録したら解くべき精選過去問 10 問を Lua で解いてみた
Nobuyuki さん

VB.Net
AtCoderに登録したら解くべき精選過去問 10 問を VB.Net で解いてみた

@cielavenir さん

F#
AtCoder に登録したら解くべき精選過去問 10 問を F# で解いてみた

@kuuso1 さん

Octave
AtCoder に登録したら解くべき精選過去問 10 問を Octave で解いてみた
ヘクトさん

Whitespace
AtCoder に登録したら解くべき精選過去問 10 問を Whitespace で解いてみた

@rsk0315_h4x さん

CoffeeScript
AtCoder に登録したら解くべき精選過去問 10 問を CoffeeScript で解いてみた

@prd_xxx さん

Clojure
AtCoder に登録したら解くべき精選過去問 10 問を Clojure で解いてみた

@fireflower0 さん

Scheme
AtCoder に登録したら解くべき精選過去問 10 問を Scheme(Gauche) で解いてみた

@fireflower0 さん

PostgreSQL
AtCoder に登録したら解くべき精選過去問 10 問を PostgreSQL で解いてみた
nkhrlab さん

Perl
AtCoder に登録したら解くべき精選過去問 10 問を Perl で解いてみた

@cielavenir さん

Pascal
AtCoder に登録したら解くべき精選過去問 10 問を Pascal で解いてみた

@cielavenir さん

OCaml
AtCoder に登録したら解くべき精選過去問 10 問を OCaml で解いてみた
kuwa さん

COBOL
AtCoder に登録したら解くべき精選過去問 10 問をCOBOLで解いてみた

@moment さん

Hexagony
AtCoder に登録したら解くべき精選過去問 10 問を Hexagony で解いてみた

@rsk0315_h4x さん

AWK
AtCoder に登録したら解くべき精選過去問 10 問を AWK で解いてみた

@kotatsugame さん

MoonScript
AtCoder に登録したら解くべき精選過去問 10 問を MoonScript で解いてみた

@cielavenir さん

Brainf*ck
AtCoder に登録したら解くべき精選過去問 10 問を Brainf*ck で解いてみた

@koi_kotya さん

Elixir
AtCoder に登録したら解くべき精選過去問 10 問を Elixir で解いてみた

@koyo-miyamura さん

Hy
AtCoder に登録したら解くべき精選過去問 10 問を Hy で解いてみた

@fireflower0 さん

Prolog
AtCoder に登録したら解くべき精選過去問 10 問を Prolog で解いてみた

@n4o847 さん

Objective-C
AtCoder に登録したら解くべき精選過去問 10 問を Objective-C で解いてみた

@doraTeX さん


言語別の競技プログラミング入門資料たち

それでは各言語別の入門資料たちをまとめて行きます。


Python

最近は Python で競プロを始める人が激増しています!

データ分析や機械学習において Python がメジャーな言語となったことから、Python を学びたいという方は大勢いるでしょう。Python を勉強したいというモチベーションで AtCoder を始める方も多いと聞きます。計算実行速度の観点からは C++ に比べて不利な感があるので、ARC E 問題以上の難易度に挑むようになったら C++ などの速い言語も覚えていく必要が生じますが、AtCoder 500 点問題までの難易度帯であれば概ね通せるようです。今後 Python で書かれたアルゴリズム解説資料などが充実して行くといいなと思います。


Ruby

AtCoder 上の多くの問題で Shortest をとっているコードは Ruby で書かれているイメージがあります。


Java

蟻本著者の 1 人である wata さんは Java 使いでした!

計算実行速度は C++ よりやや遅い程度で、不利というレベルではありません。競プロ的には BigInteger が使えるメリットもあり、普段は C++ を使う人でも多倍長整数を扱いたいときには Java を使うという人も多いでしょう。なお、AtCoder / AOJ では C++ Boost ライブラリが使えるようになったため、C++ でも多倍長整数を扱えるようです。


C#

みなさんご存じの AtCoder 社長 Chokudai さんは C# 使いです。チーター本は C# による競技プログラミング入門資料としても知られています。


C

C++ まで進むのが大変な方のために。


Fortran

その昔、C の登場前には数値計算用言語として主流でした。現在も Fortran で書かれた数値計算コードは数多く存在します。


D

競プロ界で D 言語が大流行したときもありましたね!解説記事も充実しています。


Rust

コアなファンの多い Rust です!

@tubo28 さんの記事のおかげで、多言語で競プロを始めるための資料たちが充実して来ました!

Rust は標準入出力部分だけでも様々な工夫の余地があるみたいですね。計算実行速度も速いイメージがあるので競プロ適性も高そうです。


Go

Go は実行速度が速いので実践的なアルゴリズムたちが実装できそうですね!


Nim

Nim も Python のようなシンプルな構文でありながら、実行速度が速いですね!


Crystal

Nim が C 並高速計算実行のできる Python なら、Crystal は C 並高速計算実行のできる Ruby という感じでしょうか。


Haskell

Haskell は標準入出力が難しいイメージがありますが、入出力から丁寧に解説した記事たちがあります!


Scala

Scala は Haskell に比べるとやりやすそうです。


F#

関数型言語ですが .NET Framework 向けということもあって面白い言語ですね。


Common Lisp

ついに Lisp も出ました。


Hy

Python で書かれた Lisp ですね。


Scheme

Lisp 系言語の中で速い方のようです。


OCaml

関数型言語としてはかなり高速に動作するので競プロ向きかもですね。


Standard ML

OCaml と祖を同じくする、強い静的型付きの純粋ではない関数型言語ですね。


Clojure

関数型の書きやすい言語の 1 つですね。


Kotlin

Kotlin は Android アプリ開発言語として知られていますが、競プロにおいても ICPC 世界大会で使えるようになったことで注目度が上がっている言語です。JVM 言語の一つで Java と同等の実行速度を持ちつつ、簡潔なコードを書くための文法機能が充実していることが魅力です。 (YMATSUX さんより)


Swift

現状 AtCoder の Swift バージョンは古いですが、きれいに対応してくれた記事が登場しました!


Objective-C


JavaScript

JavaScript でも入出力ができます。


CoffeeScript

JavaScript を書きやすくするために生まれた言語ですね。


Perl


Perl6

第 8 問: Otosidama の解説が面白いです。


PHP

PHP は Web 開発でよく使われているイメージですが、PHP で競プロやるのも面白そうです。


VB.Net


Pascal


Octave

Matlab とほぼ互換性のある言語ですね。


Julia

Julia は数値計算に強いイメージがありますが、色んな要素を併せ持った言語ですね。


Lua

Lua も色んな要素を併せ持った言語ですね。


PostgreSQL


COBOL

COBOL でやるのは難しそうなイメージがありましたが、ついに登場しました!


Elixir


Piet

難読言語です!


Whitespace

難読言語です!


Hexagony

難読言語です!


Brainf*ck

有名な難読言語です!


Bash

すごく面白いです!


AWK

AWK も色んなことができます!


MoonScript


Prolog