「ハノイの塔」の解法です。
n枚のハノイの塔の解法は再帰的に定義できます。
解法
- n = 1 の場合
- 移動元 (Source) の1枚を移動先 (Destination) に移動
- 1 < n の場合
- (n – 1)枚を移動元 (Source) から空き場所 (Temporary) に移動
- 移動元 (Source) の1枚を移動先 (Destination) に移動
- (n – 1)枚を空き場所 (Temporary) から移動先 (Destination) に移動
「ハノイの塔」の解法です。
n枚のハノイの塔の解法は再帰的に定義できます。
解法
Scheme を深く理解するために、「計算機プログラムの構造と解釈」を購入しました。「SICP」という略称や「魔術師本」という俗称でも知られているこの本は、かつて MIT のコンピューター科学科におけるプログラミングの入門講義で教科書として使用されていました。読み進めるにあたり、問題に解答するためにプログラミング環境が必要になったので、その環境を Mac OS X 上で構築する方法を記事にまとめました。
Xcode 4.4.1 の Interface Builder は、iPhone 5 の画面に対応したサイズになっていません。しかし、Autosizing を活用することで、ソースコードで場合分けすることなく、iPhone 5 にも対応したデザインをある程度作成できます。
iPhone 3G と iPhone 5 の両方で動作するアプリを開発する方法を記事にまとめました。
開発環境としては、下記を想定しています。
また、各 iPhone の iOS バージョンは、下記を想定しています。
文字列が Amazon S3 のバケット名の命名規則に従っているかを検証する PHP の関数は下記のように記述します。
/** * Validate bucket name of Amazon S3. * * @param string $name * @return bool */ function validate_bucket_name($name) { // Bucket names must be at least 3 and no more than 63 characters long $length = strlen($name); if ($length < 3 || 63 < $length) { return false; } // Bucket names must not be formatted as an IP address (e.g., 192.168.5.4) $pattern = '/^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$/'; if (preg_match($pattern, $name)) { return false; } // Bucket name must be a series of one or more labels separated by a period (.), where each label: // - Must start with a lowercase letter or a number // - Must end with a lowercase letter or a number // - Can contain lowercase letters, numbers and dashes $pattern = '/^[0-9a-z]([0-9a-z\\-]*[0-9a-z])?(\\.[0-9a-z]([0-9a-z\\-]*[0-9a-z])?)*$/'; if (!preg_match($pattern, $name)) { return false; } return true; }
Xcode 4 のプロジェクトで、NSLog 関数を Release ビルドで無効化するには、ProjectName-Prefix.pch に次の3行を追記します。
#ifndef DEBUG #define NSLog(...) #endif
VHDL を勉強するために、「改訂版 FPGA ボードで学ぶ論理回路設計」を購入しました。付録基板を動作させながら勉強できてよさそうですが、実際に動作させるためには準備が必要だったので、その準備の内容を記事にまとめました。