Prolog

Prologに投稿されたコード一覧

(蛇足) can_unify/2を使って、定義3のremoveを定義1,2とよく似た形で定義する。

元:「remove 述語の定義―リスト[a:1, a:2]から「a:_」をすべて取り除いた結果は?」(http://codetter.com/?p=1077) 特にメリットはない。
元:「remove 述語の定義―リスト[a:1, a:2]から「a:_」をすべて取り除いた結果は?」(http://codetter.com/?p=1077) 特にメリットはない。
% can_unify/2
% 「can_unify(X, Y) が成功する」⇔「X = Y が成功する」、ただし単一化は行われない。
can_unify(X, Y) :-
	setof(Z, (Z = X, X = Y), [_|_]).
	
コードを見る
  • タグ:
  • タグはありません

remove 述語の定義―リスト[a:1, a:2]から[a:_ をすべて取り除いた結果は?

リストからある値の要素をすべて除去する述語 removeを使って、 [a:1, a:1, a:2, b:2] から「a:_」を取り除く場合。 定義1、定義2 では a:2 が残る。(a:1 を除去する...
リストからある値の要素をすべて除去する述語 removeを使って、 [a:1, a:1, a:2, b:2] から「a:_」を取り除く場合。 定義1、定義2 では a:2 が残る。(a:1 を除去する...
% テストデータ
ls([a:1, a:1, a:2, b:2]).

% 定義1 - 等号の失敗を使って排除
remove_v1(_, [], []).
コードを見る
  • タグ:
  • タグはありません

非決定性の述語 単位行列/2 (「添字」を用いるバージョン)

【目標】述語 単位行列/2 を“うまく”定義する。 【出典】http://codetter.com/?p=902 「添字」を考えて、単位行列 E_n := [ δ_i,j ]_n×n として定義する。...
【目標】述語 単位行列/2 を“うまく”定義する。 【出典】http://codetter.com/?p=902 「添字」を考えて、単位行列 E_n := [ δ_i,j ]_n×n として定義する。...
natural(0).
natural(s(N)) :- natural(N).

natural(0, 0).
natural(s(N), X) :- number(X), !, X > 0, X1 is X - 1, natural(N, X1).	% N によって変項 X を単一化させる場合
コードを見る
  • タグ:
  • タグはありません

非決定性の述語 単位行列/2

【出典】https://twitter.com/TakaoOzaki/status/306175708726706177 【要約】述語 単位行列/2 を“うまく”定義する。 単位行列 E_n := [...
【出典】https://twitter.com/TakaoOzaki/status/306175708726706177 【要約】述語 単位行列/2 を“うまく”定義する。 単位行列 E_n := [...
mylength([], 0).
mylength([_|T], N) :- mylength(T, N1), N is N1 + 1.

零リスト([]).
零リスト([0|T]) :- 零リスト(T).
コードを見る
  • タグ:
  • タグはありません

21世紀における0~3の数字を2個ずつ使ってできる年月日の個数 (「禁則」によって表現するバージョン)

【前回】http://codetter.com/?p=898 【着想】http://nojiriko.asia/prolog/twitter_by_c_oi_20130213.html     (ht...
【前回】http://codetter.com/?p=898 【着想】http://nojiriko.asia/prolog/twitter_by_c_oi_20130213.html     (ht...
順列(Y,0,[]).
順列(Y,N,[A|X]) :- del(A,Y,Z), M is N - 1, 順列(Z,M,X).
del(A,[A|X],X).
del(A,[B|X],[B|Y]) :- del(A,X,Y).

コードを見る
  • タグ:
  • タグはありません

21世紀における0~3の数字を2個ずつ使ってできる年月日の個数

【出典】https://twitter.com/c_oi/status/301346035094126593 https://twitter.com/c_oi/status/3013460395904...
【出典】https://twitter.com/c_oi/status/301346035094126593 https://twitter.com/c_oi/status/3013460395904...
remove1(E, [E|Tail], Tail).
remove1(E, [X|Tail], [X|List]) :- remove1(E, Tail, List).

permutation([], []).
permutation(List, [H|Tail]) :- remove1(H, List, List1), permutation(List1, Tail).
コードを見る
  • タグ:
  • タグはありません

マッチ棒を動かして10を3つ作るパズル

出典:【マッチ棒パズル1】https://twitter.com/puzzlegiver_bot/status/298325496985448449 「棒を3本動かして3つの式の答えをそれぞれ10にし...
出典:【マッチ棒パズル1】https://twitter.com/puzzlegiver_bot/status/298325496985448449 「棒を3本動かして3つの式の答えをそれぞれ10にし...
一要素置換([Bef|Tail], [Aft|Tail], (Bef, Aft)).
一要素置換([X|BefTail], [X|AftTail], Replace) :-
	一要素置換(BefTail, AftTail, Replace).

% デジタル文字の定義
コードを見る