プログラミング系の遊び?
遊びというか、学習法というか。
Hello world
単に、文字列を出力するだけのプログラム。
開発環境の動作確認、開発手順を確認するため、あるいはより複雑なプログラムを作るための第一歩として作成する事が多い。
FizzBuzz問題
数字を1から順番に繰り返して、以下の出力を得るプログラムを作る
- 3の倍数(ただし5の倍数でない)なら "Fizz"
- 5の倍数(ただし3の倍数でない)なら "Buzz"
- 15の倍数なら "FizzBuzz"
- それ以外の場合にはその数値そのもの
もともとは英語圏でのパーティーや、バス内で行われるゲームだが(日本でいう山手線ゲームとかしりとりみたいな位置づけ?)、プログラムを書けるかどうかを判断するのに課題として使われることがあるという噂がある。
ちなみに "Fizz" は炭酸水などのシュー、シュワーという音を示す。カクテルのジン・フィズなどのフィズと同じもの。
"Buzz" は虫の羽音や機械の低音のうなり、ざわめきなどを示す。派生語にブザー(buzzer)やバズワード(buzzword)等がある。
Quine(クワイン)
自身のソースコードを出力するプログラム。
コードゴルフ
特定の目的のプログラムを、可能な限り短いソースコードで書く競技。
レギュレーションはさまざまだけど、一般的には(標準出力に)正しい結果さえ出力されれば、エラーが起きても(標準エラー出力に出力される、終了コードが0でない、コケるなど)気にしないことが多い。
言語の実装
コンパイラやインタプリタなどを実装する。
よく作られるのは比較的簡易な言語であることが多いが、複雑な言語を作る人もいる。
- Lisp 系
- MAL(Make a Lisp) - GitHub: kanaka/mal
- Pure Lisp - wikipedia: 純LISP
- orelang - Qiita: プログラミング言語を作る。1時間で。
- Brainf*ck や whitespace などの難解プログラミング言語、あるいはその派生言語など
わざと複雑な(読みにくい)コードを書く
- IOCCC - The International Obfuscated C Code Contest(国際難読化Cコードコンテスト)
- Rubyによる超絶技巧プログラミング リンク先の pdf を開く
- JSFuck
〇〇を〇〇言語で作ってみた系
Qiita やその他ブログなどで、誰かが作った(比較的簡単な)プログラムを、別の言語でも作ってみて公開する。
例えば以下のようなものがあった
- カフェでプログラミングしてる風(でも何もやっていない)〇〇言語コード
- マイナンバーのチェックデジットを計算
- 〇〇言語で湯婆婆を実装してみる
- 〇〇言語でスンドコキヨシを書いてみる
- などなど
あるいは、既存のゲームやアプリなどを実装するというものもある。
- テトリス
- マインスイーパー
- パックマン
- などなど
アルゴリズム系では
- フィボナッチ数列
- エラトステネスの篩
- YコンビネータとかZコンビネータ
- などなど
競技系プログラミング
省略