このディレクトリの索引
#  
#  図.1のような。格子状の経路があるとします。
#  (1) このときPからQまでいくのに何通りの経路があるか数えてください。
#  (2) (1)と条件は同じで、図.2のように経路の一部がない(通れない)場合に、PからQまでいくのに何通りの経路があるか数えてください。
#   P-+-+-+    P-+-+-+ 
#   | | | |    | | | | 
#   +-+-+-+    +-+-+-+ 
#   | | | |    |   | | 
#   +-+-+-+    +-+-+ + 
#   | | | |    | | | | 
#   +-+-+-+    +-+ +-+ 
#   | | | |    | | | | 
#   +-+-+-Q    +-+-+-Q 
#     図.1       図.2 
#  経路の表現の仕方、記憶の仕方は自由とします。上記のようなキャラクタでの表現でもよいですし、最初からプログラムで扱いやすいデータとして持っていてもOKです。入力も外部からの入力でもよいですし、プログラム中にコーディングされていてもOKです。
#  

出発点(あ).

終着点(と).

接続(あ,い).
接続(あ,お).
接続(い,う).
接続(い,か).
接続(う,え).
接続(う,き).
接続(え,く).
接続(お,か).
接続(お,け).
接続(か,き).
接続(き,く).
接続(き,さ).
接続(く,し).
接続(け,こ).
接続(け,す).
接続(こ,さ).
接続(こ,せ).
接続(さ,そ).
接続(し,た).
接続(す,せ).
接続(す,ち).
接続(せ,つ).
接続(そ,た).
接続(ち,つ).
接続(つ,て).
接続(て,と).
接続(い,あ).
接続(お,あ).
接続(う,い).
接続(か,い).
接続(え,う).
接続(き,う).
接続(く,え).
接続(か,お).
接続(け,お).
接続(き,か).
接続(く,き).
接続(さ,き).
接続(し,く).
接続(こ,け).
接続(す,け).
接続(さ,こ).
接続(せ,こ).
接続(そ,さ).
接続(た,し).
接続(せ,す).
接続(ち,す).
接続(つ,せ).
接続(た,そ).
接続(つ,ち).
接続(て,つ).
接続(と,て).

通れない通路ありの全方向移動可の道順は何通り(_何通り) :-
        度数(道順(_),_何通り).

道順(_道順) :-
        出発点(_出発点),
        終着点(_終着点),
        道順(_出発点,_終着点,[],_道順).

道順(_点,_隣接点,_履歴,[_点,_隣接点]) :-
        接続(_点,_隣接点),
        \+(member([_点,_隣接点],_履歴)),
        \+(member([_隣接点,_点],_履歴)).
道順(_点,_終着点,_履歴,[_点|R]) :-
        接続(_点,_隣接点),
        \+(member([_点,_隣接点],_履歴)),
        \+(member([_隣接点,_点],_履歴)),
        道順(_隣接点,_終着点,[[_点,_隣接点]|_履歴],R).


%  度数/2