magazine.gifショートコーディング 職人達の技法

監修者より
ショートコーディング復刻版の出版にあたって
復刻版の変更点
本書のコードが動かない?

Chapter1 ショートコーディング入門

  • 1-1 ショートコーディングことはじめ
    • ショートコーディングとは
    • ショートコーディングの3要素
    • 熱い!賢い!ショートコーダー
    • ショートコーダー伝説
  • 1-2 戦いの場所 ~オンラインジャッジシステム~
    • オンラインジャッジシステムとは
    • 世界のオンラインジャッジシステム
    • PKU Judge Online
  • 1-3 やってみよう ~ショートコーディングの基本~
    • プログラミングの環境
    • 使用するプログラミング言語とコンパイラ
    • POJに登録
    • 基本ルール
    • 微妙なルール
    • 論理的なルール
  • 1-4 ウォーミングアップ
    • 処理系について
    • まずは簡単な足し算から
    • 簡単じゃなかった足し算
    • 平均値を計算してみよう
    • ずらして重ねて
    • オウム返しプログラム
    • ウォーミングアップを終えて

Chapter2 必見! 超絶テクニック

  • 2-1 規則性を極める
    • 酔っ払い看守
    • ステップ
    • 連続数の和
  • 2-2 Quick Sort Hack
    • クイックソート
    • qsort関数
    • Hackの嵐
    • 変態ソートで挑む①
    • 変態ソートで挑む②
    • Hackは永遠なり
  • 2-3 ライブラリ関数を使いこなせ
    • 便利なライブラリ関数たち
    • strtolって素敵
    • strtolとitoaは相性抜群
    • 交換祭り
    • ガリガリビーバーくん
    • ロープをかけましょう
  • 2-4 1バイトの頼りになるヤツ
    • ~演算子って素敵
    • %演算子って素敵
    • グループ分けで長期政権!
    • ISBNコード
    • 数学的な問題でも大活躍!
  • 2-5 ビット演算超魔術
    • 2分木で超魔術!
    • 暗号で超魔術!
    • 超魔術の極み
  • 2-6 ポインタを使いこなそう
    • ショートコーティングでのポインタ
    • スピナーパズル
    • 超長い足し算
    • ポインタと配列のハーモニー
  • 2-7 数学的な問題
    • 公式に頼るな
    • 限界突破(数列編)
    • 限界突破(組み合わせ編)
    • 周期性に関する問題
    • 擬似乱数の周期性
    • 3つの周期
    • フィボナッチ数
  • 2-8 アルゴリズムでキメる
    • 高速化・省メモリがコード短縮のヒント
    • トライアングル
  • 2-9 数の新常識
    • キーワードは「3」
    • 電話番号を整理しましょう
  • 2-10 1バイトへの情熱
    • 答えのベタ貼り
    • ハノイのフォー!

Chapter3 ショートコーディング研究

  • 3-1 より高度なテクニックに向けて
    • はじめに
    • 表記方法について
  • 3-2 ループ凝縮
    • 使いこなせばトップショートコーダー
    • 簡単な例
    • よくある構造
    • ショートコードの基本型
    • 重要なショート構文
    • 定番の数取りゲーム
    • ワインの売り買い
    • 難解 多重ループ凝縮
  • 3-3 強力な拡張構文
    • ショートコーディングに役立つ拡張構文
    • 条件演算子
    • デジタル根
    • 拡張左辺値
    • 関係演算子の拡張
  • 3-4 マクロでコードは短縮できるのか
    • ショートコーディングにおけるマクロ
    • while文による可能性
    • 配列による可能性
  • 3-5 神業main再帰
    • main再帰がコードを極限まで短縮する
    • 単純ループからmain再帰へ
    • 難問で活きるmain再帰
    • 再帰的アルゴリズムによるmain再帰
    • 伝説の1145
    • 最後に
  • 3-6 Quick Sort HackⅡ
    • バイナリを制する者はショートコードを制す
    • アンセンブリコードの短縮
    • さらなる短縮へ
  • 3-7 チートコードとセキュリティ
    • 危険なチートコード
  • 3-8 難問に挑む
    • ショートコーディング魂にかけて
    • 最強チームを作れ!

Chapter4 言語対決
4-1 ショートコーダーは言語を選ばず

  • 多くのプログラミング言語
  • 本章の構成

4-2 Java vs C

  • Javaは不利な言語
  • Javaの使いどころ
  • 多倍長はJavaにおまかせ
  • それでもC言語は強し

4-3 Pascal vs C

  • 困った言語Pascal
  • PascalでC言語より短いコードを
  • 複利計算

4-4 C++ vs C

  • あまり利用されなかったC++
  • 基本テクニック
  • 順列を調べる
  • G++拡張演算子 vs 変態GCCコード

4-5 さらなる挑戦

  • 真のショートコーダーになるために
  • 世界のショートコーディング事情
  • Code Golfにチャレンジ!
  • 何でもGolf

Chapter5 自分を磨け!

  • 5-1 読者の皆さんへ
    • ショートコーディングから学ぶもの
    • ソースコードの可読性
    • バグの少ないプログラムを書きたい
    • 自分をより高めるために
    • 人間的に、魅力的に
  • 5-2 貴重な参考資料
    • 貴重な書籍
    • Webサイト紹介
  • 5-3 凄腕ショートコーダーたち
    • 感謝を込めて
    • 凄腕ショートコーダーの皆さん
  • 5-4 最後に
    • 本書の執筆を終えて

Appendix 付録

  • A-1 掲載問題リスト
  • A-2 ASCIIコード表
  • A-3 演算子の優先順位と結合規則

索引
謝辞