このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/699
#  ../test/read.cgi/tech/1311089619/682について内容が不足していたので再投稿します。 
#  [1] 授業単元:C言語演習 
#  [2] 問題文:引数argvに以下の3種類がある。 
#  組み合わせて使用した場合にNGを出力しなさい。 
#  [3] フラグ・判定にビット演算を使用してください。
#  例) 
#  0 ... 指定なし 
#  1 ... 指定あり 
#  引数 | --a | --b | --c | 
#  -----+-----+-----+-----+------ 
#  | 0 | 0 | 0 | OK 
#  | 0 | 0 | 1 | OK 
#  | 0 | 1 | 0 | OK 
#  | 0 | 1 | 1 | NG 
#  | 1 | 0 | 0 | OK 
#  | 1 | 0 | 1 | NG 
#  | 1 | 1 | 0 | NG 
#  | 1 | 1 | 1 | NG 
#  

'引数argvに以下の3種類がある。組み合わせて使用した場合にNGを出力する。判定はビット演算を使う' :-
        current_prolog_flag(argv,ParameterList),
        パラメータ解析(ParameterList,_a,_b,_c),
                組み合わせて使用した場合にNGを出力する(_a,_b,_c,_診断),
        writef('%t\n',[_診断]).

パラメータ解析([_プログラム名|L],_a,_b,_c) :-
        findall(Y,(
                    member(X,[a,b,c]),
                    member(A,L),
                    split(A,['--','='],[X,Y])),
                [_a,_b,_c]).

組み合わせて使用した場合にNGを出力する(_a,_b,_c,'OK') :-
        0 is (_a /\ _b) \/ (_a /\ _c) \/ (_b /\ _c),!.
組み合わせて使用した場合にNGを出力する(_a,_b,_c,'NG') :-
        1 is (_a /\ _b) \/ (_a /\ _c) \/ (_b /\ _c),!.