(57)【特許請求の範囲】
【請求項１】
英数字を表す２進文字の入力文字列をエンコードするためのシステムであって、
開始エンプティ・セルを含む２次元セル形状の定義を格納するためのレジスタと、
前記開始エンプティ・セルから始まる、エンプティ・セルへの２進文字の書き込みを実行するための文字書き込みエンジンと、
エンプティ・セルを見つけるまで前記２次元形状内の隣接するセルを規則的に移動することによって、次のエンプティ・セルを決定するための次セル決定エンジンと、
データ文字が存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、前記文字書き込みエンジン及び前記次セル決定エンジンにループバックするためのループ・支援部と、
前記２次元形状内のセルを、エンコードされた英数字文字列を表す１次元の２進文字列にシリアル化するためのシリアル化エンジンと、
を含む、システム。
【請求項２】
前記規則的に移動することは、現在セルから新しいセルまで現在方向に移動することを含み、前記新しいセルがエンプティ・セルである場合には、前記新しいセルが前記次のエンプティ・セルとなり、前記新しいセルがエンプティ・セルでない場合には、エンプティ・セルを見つけるまで再び移動する、請求項１に記載のシステム。
【請求項３】
エンプティ・セルを見つけるために移動の方向を変更することをさらに含む、請求項１ 又は請求項２に記載のシステム。
【請求項４】
次のエンプティ・セルを見つけるために隣接するセルに移動するが、隣接するセルがエンプティではない場合には、エンプティ・セルを見つけるために隣接していないセルに移動することをさらに含む、請求項１から請求項３のいずれかに記載のシステム。
【請求項５】
特定の２進文字が書き込まれた場合、現在方向を変更することをさらに含む、請求項１から請求項４のいずれかに記載のシステム。
【請求項６】
現在方向への移動が前記２次元形状の境界を越える場合、異なる方向を用いる、請求項１から請求項５のいずれかに記載のシステム。
【請求項７】
エンコードされた英数字文字列を表す２進文字の入力文字列をデコードするためのシステムであって、
開始現在セルを含むセルの２次元形状の定義を格納するためのレジスタと、
各々のセルが充填されるようにするために、定められた変換を用いて前記セルに前記２ 進文字を書き込むためのシリアル化／ デシリアル化エンジンと、
現在セルから２進文字を読み出し、前記２進文字を出力文字列に書き込み、現在セルをエンプティに設定するための文字読み出し／ 書き込みエンジンと、
充填セルを見つけるまで現在セルから前記２次元形状内の隣接するセルへ規則的に移動することによって、次の充填セルを決定するための次セル決定エンジンと、
データ文字が存在しなくなるまで、又は、次の充填セルが決定されなくなるまで、前記文字を読み出すこと及び前記次の充填セルを決定することにループバックするためのループ・支援部と、
を含み、前記出力文字列は、エンコードされた英数字文字列を表す文字の１次元の２ 進文字列となる、システム。
【請求項８】
英数字を表す２進文字の入力文字列をエンコードする方法であって、
開始エンプティ・セルを含む規則的セルの２次元形状を定義することと、
前記開始エンプティ・セルから始まる、エンプティ・セルへの２進文字の書き込みを実行することと、
エンプティ・セルを見つけるまで前記２次元形状内の隣接するセルを規則的に移動することによって、次のエンプティ・セルを決定することと、
データ文字が存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、前記文字の書き込み及び前記次のエンプティ・セルの決定にループバックすることと、
前記２次元形状内のセルを、エンコードされた英数字文字列を表す１次元の２進文字列にシリアル化することと、
を含む、方法。
【請求項９】
前記規則的に移動することは、現在セルから新しいセルまで現在方向に移動することを含み、前記新しいセルがエンプティ・セルである場合には、前記新しいセルが前記次のセルとなり、前記新しいセルがエンプティ・セルでない場合には、エンプティ・セルを見つけるまで再び移動する、請求項８に記載の方法。
【請求項１０】
エンプティ・セルを見つけるために移動の方向を変更することをさらに含む、請求項８又は請求項９に記載の方法。
【請求項１１】
次のエンプティ・セルを見つけるために隣接するセルに移動するが、隣接するセルがエンプティではない場合には、エンプティ・セルを見つけるために隣接していないセルに移動することをさらに含む、請求項８から請求項１０のいずれかに記載の方法。
【請求項１２】
特定の２進文字が書き込まれた場合、現在方向を変更することをさらに含む、請求項８から請求項１１のいずれかに記載の方法。
【請求項１３】
現在方向への移動が前記２次元形状の境界を越える場合、異なる方向を用いる、請求項８から請求項１２のいずれかに記載の方法。
【請求項１４】
前記２次元形状は、幅及び高さを有する矩形であるか、又は、六角セルのハニカム・マトリックスである、請求項８から請求項１３のいずれかに記載の方法。
【請求項１５】
前記２次元形状内のセルは初期充填パターンを有し、前記初期充填パターンでは、前記２次元形状内のセルがエンプティである請求項８から請求項１４のいずれかに記載の方法。
【請求項１６】
前記２次元形状内のセルは初期充填パターンを有し、前記初期充填パターンでは、前記２次元形状の前記セルが「０」及び「１」のパターンで埋められる、請求項８から請求項１４のいずれかに記載の方法。
【請求項１７】
エンコードされた英数字文字列を表す２進文字の入力文字列をデコードする方法であって、
開始現在セルを含むセルの２次元形状を定義することと、
各々のセルが充填されるようにするために、定められた変換を用いて前記セルに前記２ 進文字を書き込むことと、
現在セルから２進文字を読み出し、前記２進文字を出力文字列に書き込み、現在セルをエンプティに設定することと、
充填セルを見つけるまで前記現在セルから前記２次元形状内の隣接するセルへ規則的に移動することによって、次の充填セルを決定することと、
データ文字が存在しなくなるまで、又は、次の充填セルが決定されなくなるまで、前記文字を読み出すこと及び前記次の充填セルを決定することにループバックすることと、
を含む、方法。
【請求項１８】
前記２次元セルを、エンコードされた英数字の文字列を表す１次元の２進文字列に規則的にシリアル化することをさらに含む、請求項１７に記載の方法。
【請求項１９】
請求項８から請求項１８のいずれかの方法の各ステップを実施するように構成されたコンピュータ可読プログラム・コードを有する、コンピュータ・プログラム。
【請求項２０】
コンピュータ可読媒体上に格納され、デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき、請求項８から請求項１８のいずれかの方法の各ステップを実施するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをエンコード及びデコードするための方法及び装置に関する。具体的には、本発明は、２次元パッドを用いてデータをエンコード及びデコードするための方法及び装置に関する。
【背景技術】
【０００２】
テキストのエンコード及びデコードは、さらに一層複雑なアルゴリズムを用いる傾向にある。従って、エンコード及びデコードのために処理能力の向上が必要とされている。この論理的帰結は、専用ハードウェア・コンポーネントを使用することである。しかし、これは依然として、多大なコンピュータ・リソース（メモリ、コンピュータ処理サイクル）及びより大きなエネルギー源を用いるものである。
【０００３】
モバイル装置は、対応するデスクトップのものと比べてリソースが制約されていることが多い。しかし、モバイル・アプリケーションは、例えば、遠隔の場所からの伝送間のユーザ・データの難読化（obscurification）といった低レベルのエンコードしか必要としないことが多い。例えば、フィールド・センサ及びアクチュエータは、消費電力の削減、コンピュータ・リソース、及びセキュリティ強度との間の良好なトレードオフを提供するシステムから利益を得ている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的の１つは、データをエンコード及びデコードするためのシステム、方法、及びコンピュータ・プログラム製品を提供することである。
【課題を解決するための手段】
【０００５】
本発明の第１の態様において、英数字を表す２進文字の入力文字列をエンコードするためのシステムが提供される。システムは、開始エンプティ・セルを含む２次元セル形状の定義を格納するためのレジスタと、開始エンプティ・セルから始まるエンプティ・セルへの２進文字の書き込みを実行するための文字書き込みエンジンと、エンプティ・セルを見つけるまで２次元形状内の隣接するセルを規則的に（methodically）トラバースすることによって、次のエンプティ・セルを決定するための次セル決定エンジンと、データ文字がそれ以上存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、文字書き込みエンジン及び次セル決定エンジンにループバックするためのループ・ファシリテータと、２次元形状内のセルを、エンコードされた英数字文字列を表す１次元の２進文字列に規則的に（methodically）シリアル化するためのシリアル化エンジンとを含む。
【０００６】
提案される解決策は、所定の規則に従って２次元形状（パッドと呼ばれる）のセルを入力数字（input digits）の文字列で埋め（fill）、次いで、２次元形状のセルを（例えば行ごとに）読み出すことによって、エンコードされた出力文字列を得ることを含む。
【０００７】
２次元形状を埋めるために用いられる論理は、従来の要求の多いエンコード技術を求めることのない簡単な論理テストを伴うものであり、多大なメモリ空間も必要としない。
【０００８】
提案されるスキームは、所与の入力文字列について膨大な数の可能な出力文字列が存在するという意味でロバストである。
【０００９】
本発明の第２の態様において、英数字を表す２進文字の入力文字列をエンコードするための方法であって、開始エンプティ・セルを含む規則的セル（regular cells）の２次元形状を定義することと、開始エンプティ・セルから始まる、エンプティ・セルへの２進文字の書き込みを実行することと、エンプティ・セルを見つけるまで２次元形状内の隣接するセルを規則的にトラバースすることによって、次のエンプティ・セルを決定することと、データ文字がそれ以上存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、文字の書き込み及び次のエンプティ・セルの決定にループバックすることと、２次元形状内のセルを、エンコードされた英数字文字列を表す１次元の２進文字列に規則的に（methodically）シリアル化することとを含む、方法が提供される。
【００１０】
エンプティ・セルの概念は、「０」も又は「１」も保持しないセル、及び／又は、値を書き込める状態になっているセルである。エンプティ・セルは、アイドル・セルとも呼ばれる。充填セル（full cell）の概念は、「０」又は「１」のような値を保持するセルであり、ビジー・セルとも呼ばれる。
【００１１】
好ましくは、規則的にトラバースすることは、現在セルから新しいセルまで現在方向に移動することを含み、新しいセルがエンプティ・セルである場合には、その新しいセルが次のセルとなり、新しいセルがエンプティ・セルでない場合には、エンプティ・セルを見つけるまで再びトラバースする。再びトラバースすることは、現在セルから移動すること、又は、新しいセルから移動することを意味し得る。
【００１２】
より好ましくは、方法は、エンプティ・セルを見つけるためにトラバースする方向を変更することをさらに含む。
【００１３】
さらにより好ましくは、方法は、次のセルを見つけるために隣接するセルにトラバースするが、隣接しているエンプティ・セルが存在しない場合には、エンプティ・セルを見つけるために隣接していないセルにトラバースすることをさらに含む。このようなトラバースは、方向エスケープ（escape direction）を使用する。
【００１４】
さらにより好ましくは、方法は、特定の２進文字が書き込まれた場合、現在方向を変更することをさらに含む。例えば、好ましい実施形態において、方向は、北、東、南、及び西のうちの１つであり、書き込まれた２進文字が「１」である場合、新しい方向に変更され得る。現在方向が「０」又は「１」のいずれかの書き込みにより変更されることを含む、現在方向を変更するための任意の規則を含ませることができる。好ましい実施形態において、次の方向は、北、東、南、及び西のコンパスの周りの回転である。他の実施形態においては、他の方向は、中間の斜め方向を含むことができる。
【００１５】
有利なことに、現在方向へのトラバースが２次元形状の境界を越える場合、異なる方向が用いられる。
【００１６】
さらに有利なことに、現在方向が２次元形状のエッジにぶつかった場合、現在方向は反対方向に変更される。これは好ましい実施形態である。
【００１７】
さらにより有利なことに、２次元形状は、幅及び高さを有する矩形である。このような矩形は、パッドとしても知られる。２次元形状は、六角セルのハニカム・マトリックスとすることができる（図１５を参照されたい）。定められた境界が存在する限り、規則的形状又は不規則的形状を含むいずれの他の形状も用いることも可能である。不規則形状は、多くの経路が可能になるように定めるべきである。例えば、２セルの幅を有する「Ｌ形状」パッドは、近隣セルへの経路を１つしか含むことができないので、回避されるべきである。
【００１８】
さらにより有利なことに、セルは初期充填パターン（initial filled in pattern）を有する。好ましい実施形態においては、初期充填パターンでは、セルは空である。他の実施形態においては、初期充填パターンでは、２次元形状のセルの一部を不規則に生成された及び／又はバランスの取れた「０」及び「１」のパターンで埋めることができる。
【００１９】
本実施形態の第３の態様において、エンコードされた英数字文字列を表す２進文字の入力文字列をデコードする方法が提供される。方法は、開始現在セルを含む規則的セルの２次元形状を定義することと、各々のポピュレートされたセルが充填されるように、定められた変換を用いてセルを前記２進文字でポピュレートすることと、現在セルから２進文字を読み出し、２進文字を出力文字列に書き込み、現在セルをエンプティに設定することと、充填セルを見つけるまで現在セルから２次元形状内の隣接するセルへ規則的にトラバースすることにより、次の充填セルを決定することと、データ文字がそれ以上存在しなくなるまで、又は、次の充填セルが決定されなくなるまで、文字を読み出すこと及び次の充填セルを決定することにループバックすることを含む。方法は、さらに２次元セルを、エンコードされた英数字文字列を表す１次元の２進文字列に規則的にシリアル化することとを含む。
【００２０】
入力文字列は、長さ≪文字列サイズ≫（ＳＳ：String Size）を有し、矩形のパッドの寸法は≪パッド幅≫（ＰＷ:PadWidth）及び≪パッド高さ≫（ＰＨ：Pad Height）によって指定される。矩形形状に関し、文字列サイズ（ＳＳ）は、パッド幅（ＰＷ）にパッド高さ（ＰＨ）を乗算したものを下回るか又はそれに等しい。
【００２１】
各セルの位置は、索引テーブル（ＩＴ：Index Table）において指定される索引により識別される。
【００２２】
セル構造は、初期位置（ＩＰ：InitialPosition）及び初期方向（ＩＤ：Initial Direction）から開始し、入力ビットの順番に従って、１ビットずつ埋められる。各ステップにおいて、ｎ番目の入力ビットは、「現在方向」（ＣＤ：Current Direction）に関連付けられたｎ番目の「現在位置」（ＣＰ：CurrentPosition）内に埋められる。
【００２３】
好ましい実施形態において、ＣＰが「１」で埋められた場合、「方向転換」（ＴＤ：Turn Direction）がＣＤに適用される。ＣＰを埋めた後、本方法は、次のＣＰを探す。存在する場合には、これは、ＣＤに続く最初のアイドル位置である（必要に応じて、パッドのエッジでループする）。他の場合には、≪方向エスケープ≫（ＥＤ:Escape Direction）がＣＤに適用され、前の論理を再開する。依然として見つからない場合、次のＣＰは、索引の順番に従った次のアイドル位置に対応する（必要に応じて、ループする）。プロセスの最後に、全ての残ったアイドル位置は無視される（文字列サイズが、パッド幅にパッド高さを乗算したものを下回る場合にのみ適用する）。
【００２４】
本発明の第４の態様において、英数字を表す２進文字の入力文字列をエンコードするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、具体化されたコンピュータ可読プログラム・コードを有し、コンピュータ可読プログラム・コードは、方法の請求項の全てのステップを実施するように構成される。
【００２５】
コンピュータ・プログラム製品は、例えば、光ディスク、磁気ディスク、ソリッド・ステート・ドライブなどの、コンピュータ可読媒体のような有形媒体上に固定された、又は、これらに限定されるものではないが、光又はアナログ通信回線を含む有形媒体によって、又はこれらに限定されるものではないが、マイクロ波、赤外線、若しくは他の伝送技術を含む無線技術を使用して非有形に、モデル又は他のインターフェース・デバイスを通じて、コンピュータ・システムに伝送可能である、一連のコンピュータ可読命令を含む。一連のコンピュータ可読命令は、前述した機能の全て又は一部を具体化する。
【００２６】
当業者であれば、こうしたコンピュータ可読命令は、多くのコンピュータ・アーキテクチャ又はオペレーティング・システムで使用するための幾つかのプログラミング言語で記述できることを認識するであろう。さらに、こうした命令は、半導体、磁気、又は光を含むがこれに限定されない、現在又は将来の任意のメモリ技術を使用して格納し、又は、光、赤外線、又はマイクロ波を含むがこれに限定されない、現在又は将来の任意の通信技術を使用して伝送することができる。コンピュータ・プログラム製品は、シュリンク・ラップ・ソフトウェアのような印刷又は電子文書を添付するリムーバブル・メディアとして配布し、例えばコンピュータ・システムのシステムＲＯＭ又は固定ディスク上に予めロードし、或いは、例えばインターネット又はワールド・ワイド・ウェブのようなネットワーク上でサーバ又は電子掲示板から配布することが企図される。
【００２７】
本発明の第５の態様において、コンピュータ可読媒体上に格納され、コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムが提供される。プログラムは、コンピュータ上で実行されたとき、方法の請求項の全てのステップを実施するためのソフトウェア・コード部分を含む。
【００２８】
本発明の第６の態様において、コンピュータ・システム内にロードされ、それによって動作するときに、コンピュータ・システムが方法の請求項の全てのステップを実行することを可能にするための機能的コンピュータ・データ構造を含む、好ましい実施形態のデータ・キャリアの態様が提供される。好適なデータ・キャリアは、ソリッド・ステート・メモリ、磁気ドライブ、又は光ディスクとすることができる。データの伝送のためのチャネルは、同様に、あらゆる記載のストレージ媒体、並びに、有線又は無線の信号支持媒体のような信号支持媒体を含み得る。
【００２９】
ここで本発明の好ましい実施形態を、単なる例として添付図面を参照して説明する。
【図面の簡単な説明】
【００３０】
【図１】好ましい実施形態の配置図である。
【図２】好ましい実施形態のコンポーネント図である。
【図３】好ましい実施形態のエンコード方法のプロセスのフロー図である。
【図４】好ましい実施形態のエンコードのプロセスの例のフロー図である。
【図５】好ましい実施形態のエンコードのプロセスの例のフロー図である。
【図６】好ましい実施形態のデコード方法のプロセスのフロー図である。
【図７】好ましい実施形態のデコード方法の例示的なプロセスのフロー図である。
【図８】好ましい実施形態のデコード方法の例示的なプロセスのフロー図である。
【図９】生のストリーム文字及びコード化されたストリーム文字の例示的な図である。
【図１０】図９の例をコード化するのに使用される初期パラメータの例示的な図である。
【図１１】生のストリームを図９のコード化されたストリームにコード化するために使用される際の、例示的なパッドの状態図である。
【図１２】生のストリームを図９のコード化されたストリームにコード化するために使用される際の、例示的なパッドの状態図である。
【図１３】図１０のコード化されたストリームをデコードするために使用される際の、例示的なパッドの状態図である。
【図１４】図１０のコード化されたストリームをデコードするために使用される際の、例示的なパッドの状態図である。
【図１５】ハニカム型２次元形状の形状図である。
【発明を実施するための形態】
【００３１】
図１を参照すると、コンピュータ処理システム１０における好ましい実施形態の配置（deployment）が説明される。コンピュータ処理システム１０は、多数の他の汎用又は専用コンピューティング・システム環境又は構成と共に動作可能である。コンピュータ処理システム１０と共に用いるのに適した周知のコンピューティング処理システム、環境、及び／又は構成の例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステム又はデバイスのいずれかを含む分散型コンピューティング環境が挙げられる。分散型コンピュータ環境は、例えば、コンピュータ処理システムが、複数のコンピュータ処理システムの１つ又は複数によって実施される第三者サービスであるクラウド・コンピューティング環境を含む。また、分散型コンピュータ環境は、例えば、コンピュータ処理システムが、コンピューティング・サービスと相互作用することができるオブジェクトのネットワークにおいて分散される、モノのインターネット（Internet of things）のコンピューティング環境を含む。
【００３２】
コンピュータ処理システム１０は、コンピュータ・プロセッサによる実行されている、プログラム・モジュールのようなコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施する、又は、特定の抽象的データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、及びデータ構造を含むことができる。コンピュータ処理システム１０は、通信ネットワークを通じてリンクされる遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境において具体化することができる。分散型クラウド・コンピューティング環境においては、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔の両方のコンピュータ・システム・ストレージ媒体内に配置され得る。
【００３３】
コンピュータ処理システム１０は、汎用コンピュータ・サーバ１２、並びに、コンピュータ・サーバ１２に直接取り付けられた１つ又は複数の入力デバイス１４及び出力デバイス１６を含む。コンピュータ処理システム１０は、ネットワーク２０に接続される。コンピュータ処理システム１０は、入力デバイス１４及び出力デバイス１６を用いて、ユーザ１８と通信する。入力デバイス１４は、キーボード、スキャナ、マウス、トラックボール又は別のポインティング・デバイスの１つ又は複数を含む。出力デバイス１６は、ディスプレイ又はプリンタの１つ又は複数を含む。コンピュータ処理システム１０は、ネットワーク２０上でネットワーク・デバイス（図示せず）と通信する。ネットワーク２０は、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、又はインターネットとすることができる。
【００３４】
コンピュータ・サーバ１２は、中央演算処理ユニット（ＣＰＵ）２２、ネットワーク・アダプタ２４、デバイス・アダプタ２６、バス２８、及びメモリ３０を含む。
【００３５】
ＣＰＵ２２は、メモリ３０からマシン命令をロードし、命令に応答してマシン演算を実施する。こうしたマシン演算は、レジスタにおいて値をインクリメント又はデクリメントすること、値をメモリ３０からレジスタに又はその逆に転送すること、条件が真又は偽である場合にメモリ内の異なる位置に分岐すること（条件分岐命令としても知られる）、及び２つの異なるレジスタ内の値を加算又は減算し、結果を別のレジスタ内にロードすることを含む。典型的なＣＰＵは、多数の異なるマシン演算を実施することができる。マシン命令のセットは、マシン・コード・プログラムと呼ばれ、マシン命令は、低レベル言語と呼ばれるマシン・コード言語で書かれる。高レベル言語で書かれたコンピュータ・プログラムは、これを実行する前にマシン・コード・プログラムにコンパイルする必要がある。代替的に、仮想マシン又はインタープリタなどのマシン・コード・プログラムは、マシン演算に関して高レベル言語を解釈することができる。
【００３６】
ネットワーク・アダプタ２４は、コンピュータ・サーバ１２とネットワーク・デバイスとの間の通信を可能にするために、バス２８及びネットワーク２０に接続される。
【００３７】
デバイス・アダプタ２６は、コンピュータ・サーバ１２と入力デバイス１４及び出力デバイス１６との間の通信を可能にするために、バス２８、並びに入力デバイス１４及び出力デバイス１６に接続される。
【００３８】
バス２８は、メモリ３０を含む主システム・コンポーネントを一緒にＣＰＵ２２に結合する。バス２８は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いたプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの１つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【００３９】
メモリ３０は、一実施形態においては、読み出し専用メモリ（ＲＯＭ）を含むことができる、揮発性メモリ３２及び不揮発性又は永続的メモリ３４の形態のコンピュータ・システム可読媒体を含む。揮発性メモリ３２の例は、ランダム・アクセス・メモリ（ＲＡＭ）３６及びキャッシュ・メモリ３８である。一般に、揮発性メモリは、これがより高速であるために使用され、一般に、不揮発性メモリは、これがより長期間データを保持するために使用される。コンピュータ処理システム１０は、他の取り外し可能及び／又は取り外し不能、揮発性及び／又は不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体（図示されておらず、典型的には磁気ハード・ディスク又はソリッド・ステート・ドライブ）との間の読み出し及び書き込みのために永続的メモリ３４を設けることができる。図示されていないが、取り外し可能な不揮発性ソリッド・ステート・メモリのための外部ポートと、コンパクト・ディスク（ＣＤ）、デジタル・ビデオ・ディスク（ＤＶＤ）、又はブルーレイなどの取り外し可能な不揮発性光ディスクとの間の読み出し又は書き込みのための光ディスク・ドライブとを含む、更に別のストレージ媒体を設けることができる。こうした場合、１つ又は複数のデータ媒体インターフェースによって、各々をバス２８に接続することができる。以下でさらに示され、説明されるように、メモリ３０は、本発明の実施形態の機能を実施するように構成されたプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００４０】
好ましい実施形態の機能を実施するように構成されたプログラム・モジュールの組は、パッド・エンコード及びデコード・モジュール２００を含む。一実施形態において、メモリ３０内のＲＯＭは、コンピュータ・サーバ１２がモジュール２００に特有の専用コンピュータとして機能することを可能にするモジュール２００を格納する。好ましい実施形態をサポートするが、図示されていない更に別のプログラム・モジュールは、ファームウェア、ブート・ストラップ・プログラム、オペレーティング・システム、及びサポート・アプリケーションを含む。オペレーティング・システム、サポート・アプリケーション、他のプログラム・モジュール、及びプログラム・データ、又はそれらの幾つかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。
【００４１】
コンピュータ処理システム１０は、ネットワーク・アダプタ２４を介して、少なくとも１つのネットワーク２０（例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又は、インターネットのようなパブリック・ネットワーク）と通信する。ネットワーク・アダプタ２４は、バス２８を介して、コンピュータ・サーバ１２の他のコンポーネントと通信する。図示されないが、コンピュータ処理システム１０と共に、他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例として、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋ（ＲＡＩＤ）、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムが挙げられる。
【００４２】
図２を参照すると、パッド・エンコード及びデコード・モジュール２００が、次のコンポーネント、すなわち、２次元形状定義データを格納するためのレジスタ２０２、文字読み出し及び書き込みエンジン２０４、次セル決定エンジン２０６、ループ・ファシリテータ２０８、シリアル化／デシリアル化エンジン２１０、パッド・エンコード方法３００、及びパッド・デコード方法４００を含む。
【００４３】
レジスタ２０２は、エンコード方法及びデコード方法のために使用される２次元形状を定義するためのものである２次元形状定義データを格納するためのものである。
【００４４】
文字読み出し及び書き込みエンジン２０４は、２次元形状から文字を読み出し、また、これに文字を書き込むためのものである。
【００４５】
次セル決定エンジン２０６は、２次元形状における次のセルを決定するためのものである。
【００４６】
ループ・ファシリテータ２０８は、文字読み出し及び書き込みエンジン２０４と次セル決定エンジン２０６との間をループさせるためのものである。
【００４７】
シリアル化／デシリアル化エンジン２１０は、２次元形状を、シリアル・データにシリアル化するため、及び、シリアル・データからデシリアル化するためのものである。
【００４８】
パッド・エンコード方法３００は、好ましい実施形態のメイン・コード化プロセスを制御する。
【００４９】
パッド・デコード方法４００は、好ましい実施形態のメイン・デコード・プロセスを制御する。
【００５０】
図３を参照すると、パッド・エンコード方法３００は好ましい実施形態の論理プロセス・ステップ３０１乃至３１０を含み、図４及び図５に関連して、対応する論理プロセス・サブステップ３０２．２乃至３１０．２は好ましい実施形態の更なる詳細を説明する。パッド・エンコード方法３００は、ユーザが何らかのテキスト又はデータを選択し、次いで、選択されたテキストに対してパッド・エンコード方法３００が実行されることを選択したときに開始する。
【００５１】
ステップ３０１は、英数字の文字列を表す２進文字の入力文字列を取得するためのものである。
【００５２】
ステップ３０２は、方法の初期化において、定められたセル初期位置（ＩＰ）（開始セル）、及び初期方向（ＩＤ）などの他の開始パラメータを有する２次元セル形状を定めるためのものである。好ましい実施形態において、この形状は、セル幅（パッド幅（ＰＷ））及びセル高さ（パッド高さ（ＰＤ））を有するパッドと呼ばれる。このステップの例は、ステップ３０２．２である。
【００５３】
ステップ３０４は、最初にセル初期位置（ＩＰ）において、２進文字を、２次元形状内のエンプティ・セルすなわちアイドル・セルに書き込むためのものである。プロセスの開始時には全ての位置は状態≪アイドル≫を有しており、ひとたび位置が入力ビットにより埋められると≪ビジー≫になる。このステップの例は、ステップ３０４．２である。
【００５４】
例えば、パッド形状の２次元形状は、初期位置（ＩＰ）及び初期方向（ＩＤ）から開始し、入力ビットのシーケンスに従い、ビット単位で埋められる。各ステップにおいて、ｎ番目の入力ビットは、「現在方向」（ＣＤ）に関連付けられたｎ番目の「現在位置」（ＣＰ）内に埋められる。
【００５５】
ステップ３０６は、次のアイドル・セルを決定し、そして、まず一般的に、現在方向を変更する入力文字列における条件を探すためのものである。詳細な実施形態において、方向は１で転換する。このステップの例は、ステップ３０６．２乃至ステップ３０６．３８である。
【００５６】
例えば、ＣＰが「１」で埋められた場合、「方向転換」（ＴＤ：Turn Direction）がＣＤに適用される。ＣＰを埋めた後、本方法は、アイドル位置が存在する場合には、ＣＤに続く最初のアイドル位置である次のＣＰを探す（パッドのエッジでは、ループする）。存在しない（アイドル・セル又は位置がない）場合には、≪方向エスケープ≫（ＥＤ）がＣＤに適用され、前の論理に復帰する。依然として見つからなかった場合、次のＣＰは、必要に応じてループを用いた索引シーケンスに従う続くアイドル位置に対応する。
【００５７】
ステップ３０８は、それ以上データ・セルが存在しなくなるまで又は一定の時間内に次のセルが決定されなくなるまで、セル書き込みステップ及び次セル決定ステップにループバックするためのものであり、この場合、プロセスはステップ３１０に進み、シリアル化された出力ストリームを構築する。このステップの例は、ステップ３０８．２及びステップ３０８．４である。
【００５８】
ステップ３１０は、出力ストリームを構築するためのものであり、ステップ３１０．２を含む。例えば、プロセスの最後に、残った全てのアイドル位置を無視する（ＳＳ＜ＰＷ＊ＰＨの場合にのみ適用する）。暗号化された≪出力文字列≫（ＯＳ：Output String）は、パッド行のシーケンスにより作成される。
【００５９】
図４及び図５を参照して、好ましい実施形態の例示的な論理プロセス・ステップ３０２．２乃至３１０．２が説明される。
【００６０】
ステップ３０２．２は、初期位置（ＩＰ）、初期方向（ＩＤ）、方向転換（ＴＤ）、方向エスケープ（ＥＤ）、索引テーブル（ＩＴ）、及び文字列サイズ（ＳＳ）についての初期値を含む２次元形状の詳細を定義するためのものである。入力文字列（ＩＳ：Input String）の長さが測定され、測定値は≪文字列サイズ≫（ＳＳ）として格納される。パッドの寸法は、≪パッド幅≫（ＰＷ）及び≪パッド高さ≫（ＰＨ）によって指定される。ＳＳは、２次元形状内のセル数を下回るか又はこれと等しくなる必要があり、幅及び高さを有する矩形形状においては、ＳＳは、ＰＷにＰＨを乗算したものを下回るか又はこれと等しくなる必要がある。２次元形状の各位置は、≪索引テーブル≫（ＩＴ：Index Table）において指定された索引により識別される。入力文字列の各位置は、ｎによって索引付けされ、ｎの初期値は１である。次は、ステップ３０４．２である。
【００６１】
ステップ３０４．２は、現在位置（ＣＰ）の値を入力文字列のｎ番目の文字に設定するためのものである。現在位置ＣＰの状態は、アイドルからビジーに設定される。
【００６２】
ステップ３０６．２は、入力文字列の文字ＩＳ（ｎ）が「１」であるかどうかをチェックするためのものである。そうである場合、ステップ３０６．４に進む。そうでない場合、ステップ３０６．６及びステップ３０６．８に進む。詳細な実施形態における例は２進文字列であるが、方向の変更を可能にする条件が存在する限り、どのような数ベースの文字又は文字列の文字を用いることもできる。
【００６３】
ステップ３０６．４は、方向ユニット（この場合は、ＴＤ）を現在方向（ＣＤ）に付加することによって方向を変更するためのものである。
【００６４】
ステップ３０６．６は、次の位置を探すためのものであり、ステップ３０６．８乃至ステップ３０６．１４を含む。
【００６５】
ステップ３０６．８は、次の位置（ＮＰ：Next Position）を現在位置（ＣＰ）に設定するためのものである。
【００６６】
ステップ３０６．１０は、次の位置を既存の次の位置及び現在方向の関数として設定するためのものである。
【００６７】
ステップ３０６．１２は、次の位置の状態がアイドル状態であるかどうかをチェックするためのものである。そうであればステップ３０８．６に進む。そうでない場合にはステップ３０６．１４に分岐する。
【００６８】
ステップ３０６．１４は、次の位置が現在位置に戻ったかどうかをチェックするためのものである。そうであればステップ３０６．１６及びステップ３０６．１８に分岐する。そうでない場合には分岐してステップ３０６．１０に戻る。
【００６９】
ステップ３０６．１６は、多すぎる転換が、アイドル状態の又はまだ使用されていない新しいセルを見つけることなくループする連続的ループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものである。ステップ３０６．１６は、ステップ３０６．１８乃至ステップ３０６．２４を含む。
【００７０】
ステップ３０６．１８は、方向エスケープ（ＥＤ）によって現在方向（ＣＤ）を変更するためのものである。
【００７１】
ステップ３０６．２０は、位置及び現在方向（方向エスケープによって変更されている）の関数として、次の位置を変更するためのものである。
【００７２】
ステップ３０６．２２は、次の位置がアイドル状態であった場合にはステップ３０８．６に進むためのものであり、そうでない場合には、方法はステップ３０６．２４に続く。
【００７３】
ステップ３０６．２４は、次の位置が現在位置である場合にはステップ３０６．２８に分岐するためのものであり、他の場合には、方法はステップ３０６．１８に続く。
【００７４】
ステップ３０６．２６は、多すぎる転換が、アイドル状態の又はまだ使用されていない新しいセルを見つけることなく連続的にループする連続的ループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものである。ステップ３０６．２６は、３つのサブステップ３０６．２８、３０６．３０、及び３０６．３２を含む。
【００７５】
ステップ３０６．２８は、現在索引（ＣＩ：Current Index）を現在位置（ＣＰ）及び文字列サイズの関数に設定するためのものである。例えば、ＣＩ＝１＋ＣＰ．ｉｎｄｅｘ  ｍｏｄ  ＳＳである。
【００７６】
ステップ３０６．３０は、現在索引ＣＩについてのセルの状態がアイドルである場合にステップ３０８．４に分岐するためのものである。そうでない場合には、方法はステップ３０６．３２に続く。
【００７７】
ステップ３０６．３２は、現在索引をインクリメントし、次いで、アイドルであり、書き込める状態になっているセルを見つけるために、ステップ３０６．２８にループバックするためのものである。
【００７８】
ステップ３０６．３４は、現在位置を更新するためのものであり、ステップ３０６．３６及びステップ３０６．３８を含む。
【００７９】
ステップ３０６．３６は、方法がステップ３０６．２０から移るとき、現在位置を、現在索引を有するセルに設定するためのものである。次のステップは、３０８．２である。
【００８０】
ステップ３０６．３８は、方法がステップ３０６．１２又はステップ３０６．２２から移るとき、現在位置を新しい位置に設定するためのものである。次は、ステップ３０８．２である。
【００８１】
ステップ３０８．２は、文字列内の文字数に達した場合にステップ３１０．２に分岐し、そうでない場合には、ステップ３０８．４に分岐するためのものである。
【００８２】
ステップ３０８．４は、文字カウンタｎをインクリメントするためのものである。次は、ステップ３０４．２である。
【００８３】
ステップ３１０．２は、２次元形状内の各セルを通って所定の順序でトラバースし、各セルの値を線形出力文字列（ＯＳ）に書き込むためのものである。例えば、これは、ｏｕｔｐｕｔ  ｓｔｒｉｎｇ（ｉ）＝ｃｅｌｌ（ｉｎｄｅｘ＝ｉ）．ｖａｌｕｅによって表すことができる。
【００８４】
図６を参照すると、パッド・デコード方法４００は、好ましい実施形態の論理プロセス・ステップ４０１乃至４１０を含む。図７及び図８に関連して、対応する論理プロセスのサブステップ４０２．２乃至４１０．２は好ましい実施形態の例を説明する。パッド・デコード方法４００は、ユーザが何らかのテキスト又はデータを選択し、次いで、選択されたテキストに対してデコード方法４００が実行されることを選択したときに開始する。
【００８５】
ステップ４０１は、英数字のコード化された文字列を表す２進文字の２進入力文字列を取得するためのものである。
【００８６】
ステップ４０２は、方法の初期化において、セル幅（パッド幅（ＰＷ））及びセル高さ（パッド高さ（ＰＤ））を有するパッドと呼ばれる、好ましい実施形態における２次元形状を取得するためのものである。このステップの例は、ステップ４０２．２である。
【００８７】
ステップ４０３は、出力ストリームを読み出し、２次元形状を埋めるためのものである。このステップの例は、ステップ４０３．２である。
【００８８】
ステップ４０４は、最初に初期位置（ＩＰ）において２次元形状内のセルから文字を読み出すためのものである。プロセスの開始時に、全ての位置は状態≪アイドル≫を有し、ひとたび入力ビットによって埋められると≪ビジー≫になる。このステップの例は、ステップ４０４．２である。
【００８９】
ステップ４０６は、次のセルを決定し、まず一般的に、現在方向を変更する入力文字列における条件を探すためのものである。詳細な実施形態において、方向は１で転換する。このステップの例は、ステップ４０６．２乃至ステップ４０６．３８である。
【００９０】
ステップ４０８は、それ以上データ・セルが存在しなくなるまで又は一定の期間内に次のセルが決定されなくなるまで、セルを読み出すステップ及び次セル決定ステップにループバックするためのものである。この場合、プロセスはステップ４１０に進み、シリアル化された出力ストリームを構築する。このステップの例は、ステップ４０８．２及びステップ４０８．４である。
【００９１】
図７及び図８を参照して、より詳細な実施形態の例示的な論理プロセス・ステップ４０２．２乃至４１４．４が説明される。
【００９２】
ステップ４０２．２は、初期位置（ＩＰ）、初期方向（ＩＤ）、方向転換（ＴＤ）、方向エスケープ（ＥＤ）、索引テーブル（ＩＴ）、及び文字列サイズ（ＳＳ）についての初期値を含む２次元形状（例えば、矩形のパッド）の更なる詳細を取得するためのものである。入力文字列（ＩＳ）の長さが測定され、計測値は≪文字列サイズ≫（ＳＳ）として格納される。パッドの寸法は、≪パッド幅≫（ＰＷ）及び≪パッド高さ≫（ＰＨ）によって指定される。ＳＳは、２次元形状内のセルの数を下回るか又はこれと等しくなる必要があり、幅及び高さを有する矩形形状においては、ＳＳは、ＰＷ＊ＰＨを下回るか又はこれと等しくなる必要がある。２次元形状の各位置は、≪索引テーブル≫（ＩＴ）において指定された索引により識別される。入力文字列の各位置は、ｎによって索引付けされ、ｎの初期値は１である。次は、ステップ４０３．２である。
【００９３】
ステップ４０３．２は、出力文字列（ＯＳ）内の各文字を読み出し、次いで、２次元形状内の各セルを通って所定の順序でトラバースし、トラバースしたセル内に文字を書き込むためのものである。例えば、これは、Ｃｅｌｌ（ｉｎｄｅｘ＝１）＝Ｏｕｔｐｕｔｓｔｒｉｎｇ（ｉ）．ｖａｌｕｅにより表すことができる。次は、ステップ４０４．２である。
【００９４】
ステップ４０４．２は、現在位置（ＣＰ）の値を入力文字列のｎ番目の文字から読み出すためのものである。現在位置ＣＰの状態は、ビジーからアイドルに設定される。次は、ステップ４０６．２である。
【００９５】
ステップ４０６．２は、入力文字列の文字ＩＳ（ｎ）が「１」である場合にはステップ４０６．４に進み、そうでなければステップ４０６．６及びステップ４０６．８に進むためのものである。詳細の実施形態における例は２進文字列であるが、方向の転換を可能にする条件が存在する限り、どのような数ベースの文字又は文字列の文字を用いることもできる。
【００９６】
ステップ４０６．４は、方向ユニット（この場合は、ＴＤ）を現在方向（ＣＤ）に付加することによって方向を変更するためのものである。次は、ステップ４０６．８である。
【００９７】
ステップ４０６．６は、次の位置を探すためのものであり、ステップ４０６．８乃至ステップ４０６．１４を含む。
【００９８】
ステップ４０６．８は、次の位置（ＮＰ）を現在位置（ＣＰ）に設定するためのものである。次は、ステップ４０６．１０である。
【００９９】
ステップ４０６．１０は、次の位置を既存の次の位置（ＮＰ）及び現在方向（ＣＤ）の関数として設定するためのものである。次は、ステップ４０６．１２である。
【０１００】
ステップ４０６．１２は、次の位置の状態がビジーである場合にはステップ４０６．３６に進み、そうでない場合にはステップ４０６．１４に分岐するためのものである。
【０１０１】
ステップ４０６．１４は、次の位置が現在位置に戻った場合にはステップ４０６．１６及びステップ４０６．１８に分岐し、そうでない場合にはもとのステップ４０６．１０に分岐するためのものである。
【０１０２】
ステップ４０６．１６は、多すぎる転換が、アイドル状態の又はまだ使用されていない新しいセルを見つけることなく連続的に転換するループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものであり、ステップ４０６．１８乃至４０６．２４を含む。
【０１０３】
ステップ４０６．１８は、方向エスケープ（ＥＤ）によって現在方向（ＣＤ）を変更するためのものである。次は、ステップ４０６．１２である。
【０１０４】
ステップ４０６．２０は、位置及び現在方向（方向エスケープによって変更されている）の関数として、次の位置を変更するためのものである。
【０１０５】
ステップ４０６．２２は、次の位置がビジーであった場合にはステップ４０６．３６に進むためのものであり、そうでない場合には、方法はステップ４０６．２４に続く。
【０１０６】
ステップ４０６．２４は、次の位置が現在位置であった場合にはステップ４０６．２８に分岐するためのものであり、そうでない場合には、方法はステップ４０６．１８に続く。
【０１０７】
ステップ４０６．２６は、多すぎる転換がアイドル状態又はまだ使用されていない新しいセルを見つけることなく連続的に転換するループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものである。ステップ４０６．２６は、３つのサブステップ４０６．２８、４０６．３０、及び４０６．３２を含む。
【０１０８】
ステップ４０６．２８は、現在索引（ＣＩ）を現在位置（ＣＰ）及び文字列サイズの関数に設定するためのものである。例えば、ＣＩ＝１＋ＣＰ．ｉｎｄｅｘ  ｍｏｄ  ＳＳとする。次は、ステップ４０６．３０である。
【０１０９】
ステップ４０６．３０は、現在索引ＣＩについてのセルの状態がアイドル状態である場合にはステップ４０６．３８に分岐するためのものであり、そうでない場合には、方法はステップ４０６．３２に続く。
【０１１０】
ステップ４０６．３２は現在索引をインクリメントし、次いで、アイドル状態であり、書き込める状態になっているセルを見つけるために、ステップ４０６．２８にループバックするためのものである。
【０１１１】
ステップ４０６．２４は、現在位置を更新するためのものであり、ステップ４０６．３６及びステップ４０６．３８を含む。
【０１１２】
ステップ４０６．３６は、方法がステップ４０６．３０から移るとき、現在位置を新しい位置に設定するためのものである。次は、ステップ４０８．２である。
【０１１３】
ステップ４０６．３８は、方法がステップ４０６．１２又はステップ４０６．２２から移るときに、現在位置を、現在索引を有するセルに設定するためのものである。次は、ステップ４０８．２である。
【０１１４】
ステップ４０８．２は、文字列内の文字数に達した場合にはステップ４０８．４に分岐し、そうでない場合にはステップ４０８．６に分岐するためのものである。
【０１１５】
ステップ４０８．４はデコード方法４００の終了である。
【０１１６】
ステップ４０８．６は、文字カウンタｎをインクリメントするためのものである。次は、ステップ４０４．２である。
【０１１７】
図９を参照して、生ストリーム（raw stream）及びコード化されたストリームの例が説明される。生ストリームは、１６進法の０からＦまで及び２進法の００００から１１１１までの一連の昇順の数として図の左側に見ることができる。図面の右側には、数のコード化されたストリームが２進法及び１６進法で示される。
【０１１８】
図１０は、図９の例をコード化するのに用いられる初期パラメータの例示的な組である。初期位置（ＩＰ）＝１、初期方向（ＩＤ）＝東、方向転換（ＴＤ）＝東、方向エスケープ（ＥＤ）＝東、パッド幅（ＰＷ）＝８、パッド高さ（ＰＨ）＝８、及び文字列サイズ（ＳＳ）＝６４である。
【０１１９】
図１１及び図１２は、生ストリームを図９の例のコード化されたストリームにコード化するために用いられる例示的なパッドの状態を示す。１から１６まで番号が付けられた１６個のパッド状態が示される。コンパスは、ページの上が北を指し示す。２次元形状は、図１０におけるように定められ、パッド幅及びパッド高さが８セルに設定されている。
【０１２０】
入力文字列は、次のように２進法で表される０から１５までの数列である。
「0000000100100011010001010110011110001001101010111100110111101111」
【０１２１】
第１のパッド状態は、初期位置１から東へ始まり、ラインの最後でカーソルが東を指し示す、水平ラインの２進文字「００００」を有する、ほとんどがエンプティ（空）のパッドを示す。これは、初期位置（ＩＰ）＝１から始まるパッド上に２進数の最初の２進文字「０」を書き込み、東の初期方向（図示されるように、北はパッドの真上として定められる）に移動することに対応する。東を解析し、東にアイドル・セルを見つけることによって、次のセルを決定する。この方法は、書き込みステップにループバックし、それにより、２番目の文字「０」を隣接する東のセルに書き込む。これがさらに２回繰り返されて、アイドル・セルが、東、そして再び東に決定され、その結果、東に向かう連続ラインに「００００」が書き込まれる。次のアイドル・セルも東として決定され、方向転換（ＴＤ）（パッド１の矢印を参照されたい）は東に設定されたままである。
【０１２２】
第２のパッドは、最後の位置から東に４セル進む水平ブロック・ライン「０００１」を示す。これは、初期位置（ＩＰ）＝５から始まるパッド上に数「０００１」の第１の文字を書き込み、東の初期方向に移動することに対応する。再び東を解析し、アイドル・セルを直接東に見つけることによって、次のセルが決定される。この方法は、書き込みステップにループバックし、それにより、隣接する東のセルに第２の文字「０」が書き込まれる。これがさらに２回繰り返されて、アイドル・セルが東、そして再び東に決定され、その結果、東に向かう連続ラインに「０００１」が書き込まれる。しかしながら、最後の書き込みが「１」であり、例示的規則は、「１」が書き込まれると方向を時計回りに変更するというものなので（さらに境界が存在する）、次の２進文字のシーケンスを求めての最初のアイドル・セルの探索は、東方向に開始されない。従って、ＴＤ方向（矢印を参照されたい）は、（方向ポインタをインクリメントすることにより）境界が存在しない南に変更される。同時に、境界のエッジに達し、この例では境界を回避するために、方向はまた時計回りに変更される。
【０１２３】
第３のパッドは、南に３セル、西に１セルだけトラバースする、２進文字「００１０」を示す（図１２を参照されたい）。これは、方向を南に設定した状態で文字列「００１０」の第１、第２及び第３の文字を書き込み、１を書き込むとすぐに、方向を西にインクリメントすることに対応する。解析を行い、解析の方向にアイドル・セルを見つけることにより、次のセルが決定される。この方法は、書き込みステップにループバックし、それにより、隣接する西のセルに第４の文字「０」が書き込まれ、ＴＤは西を指し示したままである。
【０１２４】
第４のパッドは、２進文字「００１１」が、アイドル・セル内に書き込まれ、西に３セル、北に１セルだけトラバースし、ＴＤを東に変更することを示す。
【０１２５】
第５のパッドは、２進文字「０１」が２つの東のアイドル・セル内に書き込まれ、文字「１」によってＴＤを南にインクリメントし、南の単一のビジー・セルをスキップし、２進文字「００」が２つの南のアイドル・セルに書き込まれ、ＴＤは南に設定されたままであることを示す。
【０１２６】
第６のパッドは、２進文字「０１０１」が、最後に書き込まれたセルから、南、南、西、及び西にトラバースして、隣接するセル内に書き込まれることを示す。最後の２進文字「１」が書き込まれた後、ＴＤは北に変更される。
【０１２７】
第７のパッドは、２進文字「０１１０」が、最後に書き込まれたセルから、北、北、東、南にトラバースして、セル内に書き込まれることを示す。最後の２進文字「１」が書き込まれた後、ＴＤは南に変更され、次のアイドル・セルは、境界を通って南ラインに沿って選択される（南を指し示す矢印で示されるように）。
【０１２８】
第８のパッドは、２進文字「０１１１」が、次のように、すなわち、次のアイドル・セル内に「０」が書き込まれ、南に３セルだけトラバースして「１」を書き込み、ＴＤを西に変更し、西に１セルだけトラバースして「１」を書き込み、ＴＤを北に変更して３セルだけトラバースして「１」を書き込み、ＴＤを東に変更して２セルだけトラバースし、次のアイドル・セルを見つけるように、書き込まれることを示す。
【０１２９】
第９のパッドは、２進文字「１０００」が、次のように、すなわち、次のアイドル・セル内に「１」が書き込まれ、ＴＤを南に変更するように、書き込まれることを示す。しかしながら、セルの南北ラインにはアイドル・セルが存在しないので、ＴＤは再び西に変更される。西に２セルだけトラバースされて「０」が書き込まれ、西に１セルだけトラバースして「０」が書き込まれる。西にトラバースすると境界に接触するので、東西のラインの東側から開始して、西に２セルだけトラバースし、新しいアイドル・セルを見つける。
【０１３０】
第１０のパッドは、２進文字「１００１」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを北に変更するように、書き込まれることを示す。北にトラバースすると境界に接触するので、列の南側から北に１セルだけトラバースし、「０」を書き込むためのアイドル・セルを見つけるように、書き込まれることを示す。北に１セルだけトラバースして「０」が書き込まれる。北に１セルだけトラバースして「１」が書き込まれ、ＴＤが東に変更され、東を指し示す矢印で示されるように、新しいアイドル・セルは、１セル東にある。
【０１３１】
第１１のパッドは、２進文字「１０１０」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを南に変更し、南に１セルだけトラバースするように、書き込まれることを示す。「０」が書き込まれ、南に１セルだけトラバースされる。「１」が書き込まれ、ＴＤが西に変更され、西に５セルだけトラバースする。「０」が書き込まれ、新しいアイドル・セルまで西に１セルだけトラバースされる。新しいアイドル・セル内で西を指し示す矢印により示されるように、ＴＤは西である。
【０１３２】
第１２のパッドは、２進文字「１０１１」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを北に変更し、１セルだけトラバースするように、書き込まれることを示す。「０」が書き込まれ、北に１セルだけトラバースされる。「１」が書き込まれ、ＴＤが東に変更され、東に１セルだけトラバースされ、「１」が書き込まれ、ＴＤが南に変更され、新しいアイドル・セルまで南に１セルだけトラバースされる。新しいアイドル・セル内の南を指し示す矢印により示されるように、ＴＤは南である。
【０１３３】
第１３のパッドは、２進文字「１１００」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを西に変更し、西に２セルだけトラバースするように、書き込まれることを示す。「１」が書き込まれ、ＴＤが北に変更され、北に１セルだけトラバースされる。「０」が書き込まれ、北に１セルだけトラバースされる。「０」が書き込まれ、新しいアイドル・セルまで北に１セルだけトラバースされる。新しいアイドル・セル内の北を指し示す矢印により示されるように、ＴＤは北である。
【０１３４】
第１４のパッドは、２進文字「１１０１」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを東に変更し、東に１セルだけトラバースするように、書き込まれることを示す。「１」が書き込まれ、ＴＤが南に変更され、南に１セルだけトラバースされる。「０」が書き込まれ、列の北端から南に３セルだけトラバースされる。「１」が書き込まれ、ＴＤが西に変更され、新しいアイドル・セルまで西に１セルだけトラバースされる。新しいアイドル・セル内の西を指し示す矢印により示されるように、ＴＤは西である。
【０１３５】
第１５のパッドは、２進文字「１１１０」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを北に変更し、南北のラインの南にある唯一のアイドル・セルまでトラバースするように、書き込まれることを示す。「１」が書き込まれ、ＴＤが東に変更され、行の東に探索してアイドル・セルが見つからず、列の南を探索してもアイドル・セルが見つからない。西に１セルだけトラバースし、列を北に探索し、北に４セルだけトラバースする。「１」が書き込まれ、ＴＤが西に変更され、西に１セルだけ移動する。「０」を書き込み、新しいアイドル・セルまで西に４セルだけトラバースする。新しいアイドル・セル内の西向き矢印で示されるように、ＴＤは西である。
【０１３６】
第１６のパッドは、２進文字「１１１１」が、次のように、すなわち、新しいアイドル・セル内に「１」が書き込まれ、ＴＤを北に変更し、北に１セルだけトラバースし、「１」が書き込まれ、ＴＤが東に変更されるが、東のラインにはアイドル・セルが見つからないように、書き込まれることを示す。ＴＤが南に変更され、列内の唯一のアイドル・セルまでトラバースする。「１」が書き込まれ、ＴＤが西に変更され、行内の唯一のアイドル・セルまでトラバースする。「１」が書き込まれ、書き込むべき２進文字はそれ以上存在しない。
【０１３７】
２進文字を上から下（北から南）、かつ、左から右（西から東）へシリアル化することにより、エンコードされた文字列
「0000000100010110111101101111000100111001011110111010000011010101」
が得られる。
【０１３８】
図１３及び図１４は、エンコードされたストリームを、図９の例のストリームにデコードするために用いられるような、例示的なパッド状態を示す。１から１６までの番号が付けられた１６個のパッドが示される。コンパスは、ページの上が北を指し示す。
【０１３９】
第１の段階は、エンコードされた文字列を、パッド内に書き込むことによってデシリアル化することである。図１３のパッド状態１に見られるように、エンコードされた文字列は、左から右及び上から下に書き込まれている。
【０１４０】
デコードは、エンコードとは反対の方法を用いる。エンコード方法は、パッド内のセルを、アイドル・セルに達するまでトラバースし、それにより、２進文字がアイドル・セル内に書き込まれ、その状態をビジーに変更する。対照的に、デコード方法は、パッドを、ビジー・セルに達するまでトラバースし、文字を読み出し、セルの状態をアイドルに変更する。
【０１４１】
第１のパッド状態は、初期位置１（上部左コーナー部）から読み出された２進文字「００００」の水平ラインを有し、ラインの最後でカーソルが東を指し示している、ほとんど充填されている（full）のパッドを示す。これは、初期位置（ＩＰ）＝１から始まるパッド上の２進数の最初の文字「０」を読み出し、東の初期方向（図示されるように、北はパッドの真上として定められる）に移動することに対応する。東へトラバースしてビジー・セルを見つけることによって、次のセルが決定される。この方法は、読み出すステップにループバックし、それにより、２番目の文字「０」が読み出される。これがさらに２回繰り返されて、ビジー・セルが東、そして再び東に決定されその結果、東に向かう連続ラインに「００００」が読み出される。ＴＤ方向（パッド１の矢印を参照）は東に設定されたままである。
【０１４２】
第２のパッド状態において、次のビジー・セルは、東のセルとして決定される。第２のパッド状態は、水平ブロック・ライン「０００１」が、最後の位置（第１のパッド状態からのカーソルにより参照される）から東に４セルだけ読み出されることを示す。これは、初期位置（ＩＰ）＝５から始まるパッド上の数「０００１」の第１の文字を読み出し、東の初期方向に移動することに対応する。東にトラバースし、ビジー・セルを見つけることによって、次のセルが決定される。この方法は、読み出すステップにループバックし、それにより、セルから第２の文字「０」を読み出す。これがさらに２回繰り返されて、ビジー・セルが東、そして再び東に決定され、その結果、東に向かう連続ラインにおいて「０００１」が読み出される。しかしながら、最後の読み出しが「１」であり、例示的規則は、「１」が読み出されると、方向を時計回りに変更するというものなので、次の２進文字のシーケンスを求めての最初のビジー・セルの探索は、東方向に開始されない。従って、ＴＤ方向（矢印を参照されたい）は、方向ポインタをインクリメントすることにより、南に変更される。同時に、境界のエッジに達し、この例では境界を回避するために、方向はまた時計回りに変更される。
【０１４３】
第３のパッド状態において、次のビジー・セルは、１セルだけ南である。第３のパッドは、２進文字「００１０」が、南に３セル、西に１セルだけトラバースすることによって読み出されることを示す（図１４を参照されたい）。これは、文字列「００１０」の第１、第２及び第３の文字を読み出し、１を読み出すとすぐに方向を南に設定し、方向を西にインクリメントすることに対応する。トラバースし、トラバース方向にビジー・セルを見つけることにより、次のセルが決定される。この方法は、読み出すステップにループバックし、それにより、第４の文字「０」が読み出され、ＴＤは西を指し示したたままである。
【０１４４】
第４のパッド状態において、次のビジー・セルは、１セル西にある。第４のパッドは、２進文字「００１１」が、ビジー・セルから読み出され、西に３セル、北に１セルだけトラバースし、ＴＤを東に変更することを示す。
【０１４５】
第５のパッド状態において、次のビジー・セルは、１セルだけ東にある。第５のパッドは、２進文字「０１」が、２つの東のビジー・セルから読み出され、「１」の文字のためにＴＤを南にインクリメントし、南の単一のアイドル・セルをスキップして、南の２つのビジー・セルから２進文字「００」を読み出し、ＴＤは南に設定されたままであることを示す。
【０１４６】
第６のパッドは、２進文字「０１０１」が、最後に読み出されたセルから南、次に南、西、及び西にトラバースして、隣接するセルから読み出されることを示す。最後の２進文字「１」が読み出された後、ＴＤは北に変更される。
【０１４７】
第７のパッドは、２進文字「０１１０」が、最後に読み出されたセルから北、次に北、東、及び南にトラバースして、セルから読み出されることを示す。最後の２進文字「１」が読み出された後、ＴＤは南に変更される。
【０１４８】
第８のパッドにおいて、次のビジー・セルは、南ラインに沿い、境界を通って選択される（第７のパッド内の南を指し示す矢印で示されるように）。第８のパッドは、２進文字「０１１１」が、次のように、すなわち、次のビジー・セルにおいて「０」として読み出され、南に３セルだけトラバースし、「１」を読み出し、ＴＤを西に変更し、西に１セルだけトラバースして「１」を読み出し、ＴＤを北に変更して３セルだけトラバースして「１」を読み出し、ＴＤを東に変更するように、読み出されることを示す。
【０１４９】
第９のパッドにおいて、この方法は、２セルだけトラバースして、次のビジー・セルを見つける。第９のパッドは、２進文字「１０００」が、次のように、すなわち、次のビジー・セルにおいて「１」が読み出され、ＴＤを南に変更するように、読み出されることを示す。しかしながら、セルの南北ラインにはビジー・セルが存在しないので、ＴＤは再び西に変更される。西に２セルだけトラバースされ、「０」が読み出され、西に１セルだけトラバースし、「０」が読み出される。
【０１５０】
第１０のパッドにおいて、この方法は、西にトラバースすると境界に接触するので、東西のラインの東側から開始して、西に２セルだけトラバースし、新しいビジー・セルを見つける。第１０のパッドは、２進文字「１００１」が、次のように、すなわち、新しいビジー・セルにおいて「１」が読み出され、ＴＤを北に変更するように、読み出されることを示す。北にトラバースすると境界に接触するので、列の南側から開始して北に１セルだけトラバースし、「０」を読み出す。北に１セルだけトラバースして「０」が読み出される。北に１セルだけトラバースして「１」が読み出され、ＴＤが東に変更される。
【０１５１】
第１１のパッドにおいて、新しいビジー・セルは、第１０のパッドからの最後の矢印（東を指し示す）により示されるように、１セル東にある。第１１のパッドは、２進文字「１０１０」が、次のように、すなわち。新しいビジー・セルにおいて「１」が読み出され、ＴＤを南に変更し、１セルだけ南にトラバースするように、読み出されることを示す。「０」が読み出され、南に１セルだけトラバースされる。「１」が読み出され、ＴＤが西に変更され、西に５セルだけトラバースする。「０」が読み出され、新しいビジー・セルまで西に１セルだけトラバースされる。西を指し示す矢印で示されるように、ＴＤは西である。
【０１５２】
第１２のパッドは、２進文字「１０１１」が、次のように、すなわち、新しいビジー・セルから「１」が読み出され、ＴＤを北に変更し、１セルだけトラバースするように、読み出されることを示す。「０」が読み出され、北に１セルだけトラバースされる。「１」が読み出され、東にＴＤが変更され、東に１セルだけトラバースされる。「１」が読み出され、ＴＤが南に変更され、新しいビジー・セルまで南に１セルだけトラバースされる。南を指し示す矢印で示されるように、ＴＤは南である。
【０１５３】
第１３のパッドは、２進文字「１１００」が、次のように、すなわち、新しいビジー・セルにおいて「１」が読み出され、ＴＤを西に変更し、西に２セルだけトラバースするように、読み出されることを示す。「１」が読み出され、ＴＤが北に変更され、北に１セルだけトラバースされる。「０」が読み出され、北に１セルだけトラバースされる。「０」が読み出され、新しいビジー・セルまで北に１セルだけトラバースされる。ＴＤは北である。
【０１５４】
第１４のパッドは、２進文字「１１０１」が、次のように、すなわち、新しいビジー・セルにおいて「１」が読み出され、ＴＤを東に変更し、東に１セルだけトラバースするように、読み出されることを示す。「１」が読み出され、ＴＤが南に変更され、南に１セルだけトラバースされる。「０」が読み出され、列の北端から南に３セルだけトラバースされる。「１」が読み出され、ＴＤが西に変更される。
【０１５５】
第１５のパッドは、２進文字「１１１０」が、次のように、すなわち、新しいビジー・セルにおいて「１」が読み出され、ＴＤを北に変更し、南北のラインの南にある唯一のビジー・セルまでトラバースするように、読み出されることを示す。「１」が読み出され、ＴＤが東に変更され、行を東に探索してビジー・セルが見つからず、列を南に探索してビジー・セルが見つからない。西に１セルだけトラバースし、列を北に探索し、北に４セルだけトラバースする。「１」が読み出され、ＴＤが西に変更され、西に１セルだけ移動する。「０」が読み出され、その後、新しいビジー・セルまで４セルだけ西にトラバースする。ＴＤは西である。
【０１５６】
第１６のパッドは、２進文字「１１１１」が、次のように、すなわち、新しいビジー・セルにおいて「１」が読み出され、ＴＤを北に変更し、北に１セルだけトラバースし、「１」が読み出され、ＴＤが東に変更されるが、東のラインにはビジー・セルが見つからないように、読み出されることを示す。ＴＤが南に変更され、列内の唯一のビジー・セルまでトラバースする。「１」が読み出され、ＴＤが西に変更され、行内の唯一のビジー・セルまでトラバースする。「１」が読み出され、読み出すべき２進文字はそれ以上存在しない。
【０１５７】
最初の時点において、出力文字列は、デコーダによって提示される特別な順序での全ての読み出された文字を収容しており、これは、最初にコード化されたオリジナルの入力文字列と同一である。
【０１５８】
ここで、本発明の更に別の実施形態が説明される。好ましい実施形態の論理プロセス・ステップの全て又は一部は、本方法の論理プロセス・ステップを実施するように構成された論理要素を含む論理装置又は複数の論理装置において代替的に具体化できること、及び、このような論理要素はハードウェア・コンポーネント、ファームウェア・コンポーネント、又はそれらの組み合わせを含み得ることは、当業者には明らかであろう。
【０１５９】
好ましい実施形態の論理コンポーネントの全て又は一部は、本方法のステップを実施するための論理要素を含む論理装置において代替的に具体化できること、及び、このような論理要素は、例えば、プログラマブル論理アレイ又は特定用途向け集積回路内の論理ゲートなどのコンポーネントを含み得ることも、当業者には等しく明らかであろう。このような論理構成は、例えば、固定された又は伝送可能なキャリア媒体を用いて格納及び伝送することができる仮想ハードウェア記述子言語を用いて、こうしたアレイ又は回路内の論理構造を一時的又は恒久的に確立するための要素を可能にする際にさらに具体化することができる。
【０１６０】
更に別の代替的な実施形態において、本発明は、コンピュータ・インフラストラクチャ内に配備され、そこで実行されるときに、コンピュータ・システムに本方法の全てのステップを実施させるように動作可能なコンピュータ・プログラム・コードを配備するステップを含むサービスを配備するコンピュータ実装方法の形態で実現することができる。
【０１６１】
本方法及び好ましい実施形態のコンポーネントは、代替的に、並列ソフトウェアを実行するための２つ又はそれ以上のプロセッサを含む並列コンピューティング・システムにおいて完全に又は部分的に具体化できることが理解されるであろう。
【０１６２】
本発明の更に別の実施形態は、システム及び方法に関して定められたコンピュータ・プログラム製品である。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をそこに有する、コンピュータ可読ストレージ媒体を含むことができる。
【０１６３】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持及び格納することができる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光記憶装置、磁気記憶装置、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＰＲＡＭ）、ポータブル・コンパクト・ディスク型読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令がそこに記録された溝内の隆起構造などの機械的エンコード・デバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で用いられるとき、コンピュータ可読ストレージ媒体は、無線波又は他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体（例えば、光ファイバ・ケーブルを通る光パルス）を通して伝搬する電磁波、又は配線を通じて伝送される電気信号などの、それ自体が一時的信号として解釈されるべきではない。
【０１６４】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング装置／処理装置自体に、又は、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ若しくは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウオール、スイッチ、ゲートウェイ・コンピュータ及び／又はエッジ・サーバを含むことができる。各コンピューティング装置／処理装置内のネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送し、それぞれのコンピューティング装置／処理装置内のコンピュータ可読ストレージ媒体に格納することができる。
【０１６５】
本発明の操作を実行するためのコンピュータ・プログラム命令は、アセンブラ命令、命令−セット−アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又はＳｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、及びＣプログラミング言語のような従来の手続き型プログラミング言語、又は同様のプログラミング言語を含む１つ又は複数のプログラミング言語のいずれかの組み合わせで記述されるソース、・コード又はオブジェクト・コードとすることができる。コンピュータ・プログラム・コードは、全体がユーザのコンピュータ上で実行される場合もあり、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続（例えば、インターネット・サービス・プロバイダを用いるインターネットを通じた）がなされる場合もある。幾つかの実施形態においては、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することにより、コンピュータ可読プログラム命令を実行することができる。
【０１６６】
実施形態の態様は、方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して以下で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。
【０１６７】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラマブル・データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラマブル・データ処理装置、及び／又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、そのコンピュータ可読ストレージ媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【０１６８】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにさえることもできる。
【０１６９】
図中のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、及び動作を示す。これに関して、フローチャート又はブロック図中の各ブロックは、指定された論理機能を実施するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の部分を表すことができる。さらに、幾つかの代替的実施において、ブロック内に記述された機能は、図中に示したのとは別の順序で実行することができることに留意されたい。例えば、連続して示した２つのブロックは、実際には、実質的に並列に実行することができ、又はブロックは場合により、関与する機能性に応じて逆の順序で実行することができる。さらに、ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図中のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェアをベースとするシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実施できることにも留意されたい。
【０１７０】
当業者には、本発明の範囲から逸脱することなく、上記の例示的な実施形態に対して多くの改善及び変更をなし得ることが明らかであろう。
【符号の説明】
【０１７１】
１０：コンピュータ処理システム
１２：汎用コンピュータ・サーバ
１４：入力デバイス
１６：出力デバイス
１８：ユーザ
２０：ネットワーク
２２：中央演算処理ユニット（ＣＰＵ）
２４：ネットワーク・アダプタ
２６：デバイス・アダプタ
２８：バス
３０：メモリ
３２：揮発性メモリ
３４：永続的メモリ
３６：ランダム・アクセス・メモリ（ＲＡＭ）
３８：キャッシュ・メモリ
２００：パッド・エンコード及びデコード・モジュール
２０２：レジスタ
２０４：文字読み出し及び書き込みエンジン
２０６：次セル決定エンジン
２０８：ループ・ファシリテータ
２１０：シリアル化／デシリアル化エンジン
３００：パッド・エンコード方法
４００：パッド・デコード方法
【図１】
0006624915.tif 000002
【図２】
0006624915.tif 000003
【図３】
0006624915.tif 000004
【図４】
0006624915.tif 000005
【図５】
0006624915.tif 000006
【図６】
0006624915.tif 000007
【図７】
0006624915.tif 000008
【図８】
0006624915.tif 000009
【図９】
0006624915.tif 000010
【図１０】
0006624915.tif 000011
【図１１】
0006624915.tif 000012
【図１２】
0006624915.tif 000013
【図１３】
0006624915.tif 000014
【図１４】
0006624915.tif 000015
【図１５】
0006624915.tif 000016