このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1351769173/599
#  2進数3桁のパスワードロックのプログラムを作るのですが、パスワード変更の機能も追加しなければなりません。どのようにプログラムを組めば良いのかわかりません。なにかアドバイス頂けませんか? 
# 
# 

:- dynamic(パスワード/4).

パスワードの変更([],_ID) :- !,fail.
パスワードの変更(Ln,_ID) :-
        パスワードを変更の手続き(_ID),!.
パスワードの変更([_|Ln],_ID) :-
        パスワードの変更(Ln,_ID).

パスワードを変更の手続き(_ID) :-
        現在のパスワードの確認(_ID,_入力1,_入力2,_入力3),
        新しいパスワードの入力(_入力1_2,_入力2_2,_入力3_2),
        新しいパスワードの再入力(_入力1_2,_入力2_2,_入力3_2),
        パスワードの書き換え(_ID,_入力1_2,_入力2_2,_入力3_2),!.

新しいパスワードの再入力(_入力1_2,_入力2_2,_入力3_2) :-
        write('念のためもう一度新しいパスワードを入力してください : '),
        パスワードを入力する(_入力1_2,_入力2_2,_入力3_2).

現在のパスワードの確認(_ID,_入力1,_入力2,_入力3) :-
        write('現在のパスワードを入力してください : '),
        パスワードを入力する(_入力1,_入力2,_入力3),
        パスワード検査(_ID,_入力1,_入力2,_入力3,諾).

新しいパスワードの入力(_入力1_2,_入力2_2,_入力3_2) :-
        write('新しいパスワードを入力してください : '),
        パスワードを入力する(_入力1_2,_入力2_2,_入力3_2),!.

新しいパスワードの再入力(_入力1_2,_入力2_2,_入力3_2) :-
        write('念のため、もう一度、新しいパスワードを入力してください : '),
        パスワードを入力する(_入力1_2,_入力2_2,_入力3_2),!.

パスワードの書き換え(_ID,_入力1_2,_入力2_2,_入力3_2) :-
        retract(パスワード(_ID,_,_,_)),
        assertz(パスワード(_ID,_入力1_2,_入力2_2,_入力3_2)).

パスワード検査(_ID) :-
        パスワードを入力する(_入力1,_入力2,_入力3),
        パスワード検査(_ID,_入力1,_入力2,_入力3,_診断),
        パスワード検査表示(_ID,_診断).

パスワードを入力する(_入力1,_入力2,_入力3) :-
        整数を得る('0か1',between(0,1,_入力1),_入力1),
        整数を得る('0か1',between(0,1,_入力2),_入力2),
        整数を得る('0か1',between(0,1,_入力3),_入力3).

パスワード検査(_ID,_入力1,_入力2,_入力3,諾) :-
        パスワード(_ID,_入力1,_入力2,_入力3),!.
パスワード検査(_ID,_入力1,_入力2,_入力3,拒) :-
        \+(パスワード(_ID,_入力1,_入力2,_入力3)).

パスワード検査表示(_ID,拒) :-
        writef('パスワードが違います\n'),!.
パスワード検査表示(_ID,諾) :- !.