解法:ハノイの塔 [C]

「ハノイの塔」の解法です。

n枚のハノイの塔の解法は再帰的に定義できます。

解法

  1. n = 1 の場合
    1. 移動元 (Source) の1枚を移動先 (Destination) に移動
  2. 1 < n の場合
    1. (n – 1)枚を移動元 (Source) から空き場所 (Temporary) に移動
    2. 移動元 (Source) の1枚を移動先 (Destination) に移動
    3. (n – 1)枚を空き場所 (Temporary) から移動先 (Destination) に移動

Continue reading

Posted in Solution | Tagged , , | Leave a comment

データ構造:リスト:単方向連結リスト #1 [C]

データ構造「リスト」の中で、もっともシンプルな「単方向連結リスト」です。

リストを型定義し、リストを操作する基本的な手続きを記述します。

Continue reading

Posted in Data Structure | Tagged , , , | Leave a comment

「計算機プログラムの構造と解釈」のためのプログラミング環境

Scheme を深く理解するために、「計算機プログラムの構造と解釈」を購入しました。「SICP」という略称や「魔術師本」という俗称でも知られているこの本は、かつて MIT のコンピューター科学科におけるプログラミングの入門講義で教科書として使用されていました。読み進めるにあたり、問題に解答するためにプログラミング環境が必要になったので、その環境を Mac OS X 上で構築する方法を記事にまとめました。

Continue reading

Posted in Scheme | Tagged , | Leave a comment

Xcode 4.4.1 で Interface Builder を使用した iPhone 5 対応のデザイン #1 Autosizing 編

Xcode 4.4.1 の Interface Builder は、iPhone 5 の画面に対応したサイズになっていません。しかし、Autosizing を活用することで、ソースコードで場合分けすることなく、iPhone 5 にも対応したデザインをある程度作成できます。

Continue reading

Posted in Xcode | Tagged , , , | Leave a comment

MY ARM ブレッドボード実験セットの製作

トランジスタ技術2012年10月号の付録である ARM マイコンで実験するために、マルツパーツ館で購入した MY ARM ブレッドボード実験セットを製作しました。(付録マイコンと実験セット以外に、LPCXpresso LPC1114 Development Board を使用しています。)

my-arm-breadboard-experiment-set

MY ARM ブレッドボード実験セット

Continue reading

Posted in ARM | Tagged , | Leave a comment

iPhone 3G と iPhone 5 の両方で動作するアプリを開発

iPhone 3G と iPhone 5 の両方で動作するアプリを開発する方法を記事にまとめました。

開発環境としては、下記を想定しています。

  • Mac OS X Lion
  • Xcode 4.4.1

また、各 iPhone の iOS バージョンは、下記を想定しています。

  • iPhone 3G: iOS 4.2.1
  • iPhone 5: iOS 6.0.1

Continue reading

Posted in Xcode | Tagged , , | Leave a comment

PHP で Amazon S3 のバケット名を検証

文字列が 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;
}

Continue reading

Posted in Amazon S3 | Tagged , , | Leave a comment

NSLog を Release ビルドで無効化

Xcode 4 のプロジェクトで、NSLog 関数を Release ビルドで無効化するには、ProjectName-Prefix.pch に次の3行を追記します。

#ifndef DEBUG
#define NSLog(...)
#endif

Continue reading

Posted in Xcode | Tagged , , | Leave a comment

「改訂版 FPGA ボードで学ぶ論理回路設計」で学ぶための準備

VHDL を勉強するために、「改訂版 FPGA ボードで学ぶ論理回路設計」を購入しました。付録基板を動作させながら勉強できてよさそうですが、実際に動作させるためには準備が必要だったので、その準備の内容を記事にまとめました。

Continue reading

Posted in FPGA | Tagged , , , , | Leave a comment

WordPress をデバッグ #2 NetBeans と Xdebug

WordPress でプラグイン開発をするときにデバッグする方法についてです。

第2回目は、PHP での Web アプリケーション開発でよく利用される Xdebug というデバッガーでデバッグする方法です。

Continue reading

Posted in WordPress | Tagged , , , , , , , , | Leave a comment