あるエントリーを渡されて、いくつかのキーで判別し、解を得るというお話。
具体的に言うと、図の右側では0から9までである画像を取ってきて、
画像のある部分を見て、そこの色を調べ、それが何かを判別してます。
コードがこんな感じ。
実際はDelphiですが、一部仮想言語で書き換えています。
function NumberAnalysis: Integer;
begin
Range := 8;
無限ループ{
if そこが指定の色か(XKey[Index], YKey[Index]){
Index++;
}else{
Index += Range;
Answer += Range;
}
Range := Range >> 1;
if (分岐がない) or (Range = 0) { Break; };
};//ループ
解 := NumResult[Answer];
end;
XKey,YKeyは判別するための鍵の配列、NumResultは導きだされる答えの配列。
簡単に解説すると、問題を配列に線形に入れておき、
先頭から確かめてみて、YESなら一歩、NOならサイズの半分だけ進む。
解答の方は上から順に配列に入れておけばいい。
当然各分岐をクラス化して木をクラスにすることもできるわけですが、
探索するものが有限で固定ですからその必要もありません。
まぁ、なんとなく木検索の構造に似てて面白いなぁと思っただけの話。