木情報から指定した深さの条件に該当するnode情報を抽出する
Perlスクリプトを作成してみます。
作成するプログラムのアウトライン
アイディアとしては、nodeを再帰的に巡る過程で、解析対象のnodeが位置する
”木の深さ”を、与えられた検査条件で検査し、合格すれば、標準出力に出力。単純なもんです。
検査の種類
以下の演算子に対応します。
==
!=
>
>=
<
<=
ex.
==2、で深さ2のnode情報が抽出されます。
!=2で、深さ2以外のnode情報が抽出されます。
>2で、深さ2より深いnode情報が抽出されます。
...後は、想像のとおり。
プログラム
上の動作を実現するPerlスクリプト( depth_tree.pl )を⬇に貼付けます。
あと、木情報( tree:深さ4)も貼付けておきます。
下記の環境で動作してます。
Mac OS X 10.9
perl --version
This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-thread-multi-2level
$cat tree | perl depth_tree.pl ">=" "2" > depth_tree
で、ファイルdepth_treeに、深さレベル1以上に位置するnodeを抽出した情報が出力されます。
その他、
$cat tree | perl depth_tree.pl "==" "3" > depth_tree
などで、深さレベル3のnodeを抽出出来ます。
treeは、木構造をもつデータファイル
depth_listは、抽出対象のnodeを記載したファイル