このディレクトリの索引
#   「留神-リュウジン-」いくす @ikuth  ?  2 時間
#  リスト[か,ど,か,わ,ど,わ,ん,ご]の部分集合を求めてこう
#  
#  subset([],[]).
#  subset([Head|Tail], [Head|L]) :-
#           subset(Tail,L).
#  subset([Head|Tail],L) :-
#           subset(Tail,L).
#  
#  ?- subset([か,ど,か,わ,ど,わ,ん,ご],L).
#  これで新しい会社名を決められるな!
#  
#  あー調子にのって書くんじゃなかったくっそ不安になってきたし間違ってたら恥ずかしいわwww
#  
#  要は対象リストの先頭を取り出して、部分集合リストに入れるか入れないかことだし…でもこれだと「角ドワンゴ川」とかはつくれない
#  


会社名候補(_文字ならび,_会社名候補) :-
subset(_文字ならび,_部分文字ならび),
atomic_list_concat(_部分文字ならび,_会社名候補).

subset([],[]).
subset(L1,L) :-
'置換候補を参照して、L1を順に文字置換可能なものは、置換することも許して、Lを得る'(L1,L).

'置換候補を参照して、L1を順に文字置換可能なものは、置換することも許して、Lを得る'(L1,L) :-
置換候補(L1,L,Tail,L2),
subset(Tail,L2).

置換候補([か|R1],[カ|R2],R1,R2).
置換候補([ど|R1],[ド|R2],R1,R2).
置換候補([わ|R1],[ワ|R2],R1,R2).
置換候補([ど|R1],[ド|R2],R1,R2).
置換候補([ん|R1],[ン|R2],R1,R2).
置換候補([ご|R1],[ゴ|R2],R1,R2).
置換候補([か,ど|R1],[角|R2],R1,R2).
置換候補([か,わ|R1],[川|R2],R1,R2).
置換候補([A|R1],[A|R2],R1,R2).


% 
%  ?- 会社名候補([か,ど,か,わ,ど,わ,ん,ご],L).
%  L = カドカワドワンゴ ;
%  L = カドカワドワンご ;
%  L = カドカワドワン ;
%  L = カドカワドワんゴ ;
%  L = カドカワドワんご ;
%  L = カドカワドワん ;
%  L = カドカワドワゴ ;
%  L = カドカワドワご ;
%  L = カドカワドワ ;
%     ・・・・・
%     ・・・・・
%  L = 角カんゴ ;
%  L = 角カんご ;
%  L = 角カん ;
%  L = 角カゴ ;
%  L = 角カご ;
%  L = 角カ ;
%  L = 角川ドワンゴ ;
%  L = 角川ドワンご ;
%  L = 角川ドワン ;
%  L = 角川ドワんゴ ;
%  L = 角川ドワんご ;
%     ・・・・・
%     ・・・・・
%