プログラマのためのコードパズル
JavaScriptで挑むコードゴルフとアルゴリズム

書籍の概要

この本の概要

本書は,プログラマによる,プログラマのための『コードの短さを競う「コードゴルフ」や,「アルゴリズム」の思考トレーニング集』。
設問を解いていくことで,プログラミングの考え方やおもしろさを実感できる一冊です。
好評を博しているリクルート運営のエンジニア向けWebサイト「CodeIQ」における著者作成問題を中心に,新規書き下ろしの設問も収録。「ミノタウロスもびっくり 迷路の自動生成」「自己相似な世界 フラクタルな図形を描く」等々挑戦したくなるような問題の数々&解説付きで,スキルアップ,トレーニングにも役立ちます。

こんな方におすすめ

  • 力試しをしたいプログラマ,エンジニアの方
  • パズルや頭の体操が好きな方

この書籍に関連する記事があります!

コードパズルに挑戦して,論理的思考を養おう!
本書は,「コードゴルフ」と「アルゴリズム」で,プログラミングの考え方や面白さを体験していく書籍です。

目次

  • はじめに
  • introduction 「コードゴルフ」と「アルゴリズム」
  • コードゴルフとは
  • アルゴリズムとは
  • プレイグラウンドとは
  • Web ブラウザ+ JavaScript のプレイグラウンドで遊ぶ/ JavaScript の特徴/プレイグラウンドの仕様とコード/コードゴルフの文字数/コードゴルフ問題の基本コード/アルゴリズム問題の基本コード/共通コード

第1 部 まずは雰囲気を知ろう

1.1 コードゴルフ 問題1  アスキーアートで円を描こう①

  • ヒント 言語使用面から文字を削る
  • 解答例 
  • 成績をみよう

1.2 コードゴルフ 問題2  アスキーアートで円を描こう②

  • 解答例
  • プレイグラウンド

第2 部 シンプルな手順をコードに変換

2.1 アルゴリズム 問題1  素数をみつける不思議な“ ふるい”

  • ヒント 図説エラトステネスの篩
  • ヒント ループ処理と配列
  • 解答例 
  • プレイグラウンド

2.2 アルゴリズム 問題2  山あり谷あり最短経路を探せ

  • ヒント 図説地形コスト付きマップの最短経路
  • ヒント 再帰(的)処理の実装
  • 解答例 
  • ヒント 別解答・スタック処理の実装
  • 解答例
  • プレイグラウンド 

第3 部 短く書くテクニックを知ろう

3.1 コードゴルフ コードを削減するテクニック 

  • JavaScript の言語仕様に沿ったテクニック

3.2 コードゴルフ 短縮化ツール  

  • 短縮化ツールを使ってみよう 

3.3 コードゴルフ 問題3  ミノタウロスもびっくり 迷路の自動生成

  • ヒント ボトルネックを探す
  • ヒント 迷路を作るアルゴリズム 
  • ヒント コードゴルフ問題とランダム
  • ヒント ランダムのアルゴリズム
  • 解答例
  • 番外編・迷路全体を文字列で持つというアプローチ
  • 成績をみよう 
  • プレイグラウンド 

第4 部 同じ目的を実現する様々な手法

4.1 アルゴリズム 問題3  計算式をコンピュータに理解させよ

  • ヒント 計算式を整理する
  • 解答例 
  • プレイグラウンド

4.2 アルゴリズム 問題4  画像を“ びよ~ん” と拡大しよう

  • ヒント 画像の拡大縮小アルゴリズム 
  • 解答例 
  • プレイグラウンド

第5 部 短いコードで複雑な世界を出力

5.1 コードゴルフ 問題4  自己相似な世界 フラクタルな図形を描く

  • ヒント 「for」文に注目
  • ヒント フラクタルな図形
  • 成績をみよう 
  • プレイグラウンド

5.2 コードゴルフ 問題5  山・平地・海 ワールドマップを生成する

  • ヒント 変数と「for」文 
  • ヒント ワールドマップ生成 
  • 成績をみよう
  • プレイグラウンド 

第6 部 限られた情報から全体を想像する  

6.1 アルゴリズム 問題5  燃料を節約して未知の地形を踏破せよ 

  • ヒント マップを言語化する 
  • ヒント マップ生成のアルゴリズムを読み解く 
  • プレイグラウンド 

6.2 アルゴリズム 問題6  暗黒惑星での戦い 敵を索敵して撃滅せよ

  • ヒント 砲撃の場所を考える
  • ヒント マップ生成のアルゴリズムを確認する
  • ヒント 計算量を削減する
  • プレイグラウンド

第7 部 問題を作ってみよう  

7.1 コードゴルフ問題を作成する

7.2 アルゴリズム問題を作成する

  • おわりに
  • 参考資料

著者プロフィール

柳井政和(やないまさかず)

クロノス・クラウン合同会社代表社員。「めもりーくりーなー」などのPC 向けオンラインソフト,パッケージソフト開発から,Web アプリ,Android アプリやゲームの開発,記事の執筆,マンガ連載など,活動の場は多種多様。著書に『マンガでわかるJavaScript』『マンガでわかるJava プログラミング』『マンガでわかるAndroid プログラミング』『HTML5&JavaScript 本格ゲームプログラミング』( 以上,秀和システム刊) など。

クロノス・クラウン合同会社
URL:http://crocro.com/