- プログラミングのお題スレ Part3
906 :デフォルトの名無しさん[sage]:2014/06/09(月) 14:19:44.15 ID:2ms5Efhd - >>902 Prolog
文字列にあるn個の文字からなる集合を要素とする集合をつくる(_文字列,_n,_文字列集合要素) :- atom_chars(_文字列,_文字ならび), 文字列の要素の重複を取り除いた文字ならび(_文字ならび,_要素に重複のない文字ならび), 組合せ(_要素に重複のない文字ならび,_n,_組合せ), atom_chars(_文字列集合要素,_組合せ). 文字列の要素の重複を取り除いた文字ならび(_文字ならび,_要素に重複のない文字ならび) :- findall(_文字,( append(L1,[_文字|_],_文字ならび), \+(member(_文字,L1))), _要素に重複のない文字ならび). 組合せ(L,1,[A]) :- member(A,L). 組合せ([A|R1],N,[A|R2]) :- N > 1, N_1 is N - 1, 組合せ(R1,N_1,R2). 組合せ([_|R1],N,X) :- N > 1, 組合せ(R1,N,X).
| - プログラミングのお題スレ Part3
907 :906[sage]:2014/06/09(月) 14:33:28.06 ID:2ms5Efhd - atom_chars(_文字列,_文字ならび),
文字列の要素の重複を取り除いた文字ならび(_文字ならび,_要素に重複のない文字ならび), ここですが、「文字ならびの要素の重複を取り除いた文字ならび」ですね。 最初は atom_chars が「文字列の要素の重複を取り除いた文字ならび」の中にあったので、 この述語名でよかったのですが、外に出したので変えないといけません。最終的に、 atom_chars のサンドイッチにしたくなったのです。
| - プログラミングのお題スレ Part3
908 :906[sage]:2014/06/09(月) 14:41:50.50 ID:2ms5Efhd - >>902 Prolog すみません。もう一度書き直します。
文字列にあるn個の文字からなる集合を要素とする集合をつくる(_文字列,_n,_文字列集合要素) :- atom_chars(_文字列,_文字ならび), 要素の重複を取り除いた文字ならび(_文字ならび,_要素に重複のない文字ならび), 組合せ(_要素に重複のない文字ならび,_n,_組合せ), atom_chars(_文字列集合要素,_組合せ). 要素の重複を取り除いた文字ならび(_文字ならび,_要素に重複のない文字ならび) :- findall(_文字,( append(L1,[_文字|_],_文字ならび), \+(member(_文字,L1))), _要素に重複のない文字ならび). 組合せ(L,1,[A]) :- member(A,L). 組合せ([A|R1],N,[A|R2]) :- N > 1, N_1 is N - 1, 組合せ(R1,N_1,R2). 組合せ([_|R1],N,L) :- N > 1, 組合せ(R1,N,L).
|
|