このディレクトリの索引

http://pc8.2ch.net/test/read.cgi/tech/1136768567/
#  [1] 授業単元:情報処理 
#  [2] 問題文(含コード&リンク): 
#    2つのグラフが同型であるかどうかを判定するプログラムを作成しなさい。ただし、入力データは講義で配布した形式(mat4,mat5,...)のものとする。また、次の条件を守ること。 
#  
#  * プログラムはC言語で作成して下さい。 
#  * 同型の場合はその対応(全単射)も出力すること。 
#  * 可能な限り速いプログラムを作成しなさい。例えば、各頂点の次数に着目したり、木を探索する際途中で探索しても無意味だと判明した時点でそれ以下の探索を中止するなど枝刈りを行うことで高速化できます。 
#  [3] 環境 
#   [3.1] OS: Linux 
#   [3.2] コンパイラ名とバージョン: gcc 
#   [3.3] 言語:どちらでも可 
#  [4] 期限: 2006年01月11日16:00 
#  
#  入力データ 
#  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1426.zip 

'2つのグラフが同型であるかどうかを判定する'(_第一グラフ,_第二グラフ) :-
        functor(_第一グラフ,_第一関数,_引数の数),
        functor(_第二グラフ,_第二関数,_引数の数),
        引数のすべてがグラフとして同型である(0,_引数の数,_第一グラフ,_第二グラフ).

引数のすべてがグラフとして同型である(_引数の数,_引数の数,_,_) :- !.
引数のすべてがグラフとして同型である(_nth0,_引数の数,_第一グラフ,_第二グラフ) :-
        _nth1 is _nth0 + 1,
        '_nth1番目の引数が同型である'(_nth1,_第一グラフ,_第二グラフ),
        引数のすべてがグラフとして同型である(_nth1,_引数の数,_第一グラフ,_第二グラフ).

'_nth1番目の引数が同型である'(_nth1,_第一グラフ,_第二グラフ) :-
        arg(_nth1,_第一グラフ,_第一グラフの引数),
        arg(_nth1,_第二グラフ,_第二グラフの引数),
        '2つのグラフが同型であるかどうかを判定する'(_第一グラフの引数,_第二グラフの引数).