このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1263824755/31
#  [1] プログラミング実習 
#  [2] http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10397.txt 
#  
# 以下に示すプログラムは、リストを操作するプログラムの一部である。この
# プログラムに、リストの指定した位置(末尾以外)にノードを挿入する関数insert_nodeと、
# リストの指定した位置のノードを削除する関数delete_nodeを追加し、プログラムを完成させよ。
# insert_nodeは引数として挿入位置の情報(リストの何番目かという情報)とデータ(文字列)を受け取るものとする。
# また、挿入位置にもともとあったノードは、新しく挿入するノードの次の要素となるものとする。
# リストの先頭ノードとして挿入される場合も正しく動作するようにすること。
# delete_nodeは、引数として削除位置の情報を受け取る。リストの先頭のノード、
# 最後のノード、途中のノードが削除されたときにそれぞれ正しく動くようにすること。
# また、ノードが一個しかない場合も正しく動くようにすること。  */

insert_node(_挿入位置,_挿入要素,_挿入前ならび,_挿入後ならび) :-
        Len is _挿入位置 - 1,
        length(_挿入位置より前のならび,Len),
        append(_挿入位置より前のならび,_挿入位置より後のならび,_挿入前ならび),
        append(_挿入位置より前のならび,[_挿入要素|_挿入位置より後のならび],_挿入後ならび).

delete_node(_削除位置,_削除前ならび,_削除後ならび,_削除された要素) :-
        Len is _削除位置 - 1,
        length(_削除位置より前のならび,Len),
        append(_削除位置より前のならび,[_削除された要素|_削除位置より後のならび],_削除前ならび),
        append(_削除位置より前のならび,_削除位置より後のならび,_削除後のならび).