タグ:「prolog」がつけられたコード

「prolog」のタグがつけられたコード一覧

[Prolog]論理パズル/正直者は誰? (失敗例)

非常に素直に実装してみたら解けてない。 「嘘つきは1人いる」か否かをチェックするために、「嘘つきは1人いる」か否かをチェックするため、無限再帰に陥る。
非常に素直に実装してみたら解けてない。 「嘘つきは1人いる」か否かをチェックするために、「嘘つきは1人いる」か否かをチェックするため、無限再帰に陥る。
% 嘘つき問題
/*
	正直者は誰?
	A1「ここに、嘘つきは1人いる。」
	A2「ここに、嘘つきは2人いる。」
コードを見る

[Prolog]論理パズル/条件から住人と部屋の位置を推定する問題

【論理パズル4】http://twitter.com/puzzlegiver_bot/status/274468300510089216 ベタ書き。部屋は行列にした方が「右側」などを綺麗に実装できる。...
【論理パズル4】http://twitter.com/puzzlegiver_bot/status/274468300510089216 ベタ書き。部屋は行列にした方が「右側」などを綺麗に実装できる。...
:- op(700, xfx, ∈).
∈(X, Y) :- contains(Y, X).

contains([Val|_], Val).
contains([_|Tail], Val) :- contains(Tail, Val).
コードを見る

[Prolog]各部分の和が等しいように輪を分割するパズル

元ネタ:https://twitter.com/puzzlegiver_bot/status/217544145630281729 ただし、解はアルファベットではなく、与えたリストの中での位置を返す。...
元ネタ:https://twitter.com/puzzlegiver_bot/status/217544145630281729 ただし、解はアルファベットではなく、与えたリストの中での位置を返す。...
append([], List, List).
append([Head|Tail], List, [Head|TailR]) :- append(Tail, List, TailR).

部分リスト(List, (I, I), []).
部分リスト(List, (0, End), SubList) :-
コードを見る

[Prolog]魔法陣<4×4> (入る値が与えられている場合)

【魔法陣1】https://twitter.com/puzzlegiver_bot/status/278001662394777600 先ほどのコード(http://codetter.com/?p=8...
【魔法陣1】https://twitter.com/puzzlegiver_bot/status/278001662394777600 先ほどのコード(http://codetter.com/?p=8...
% 4×4 行列分解
groups_4x4(
	[
		[M00, M01, M02, M03],	% 行ベクトルのリスト
		[M10, M11, M12, M13],
コードを見る

[Prolog]魔法陣 (入る値が与えられている場合)

【魔法陣1】https://twitter.com/puzzlegiver_bot/status/278001662394777600 パズルの定番。列、行、対角線の成分の総和がすべて等しくなるように...
【魔法陣1】https://twitter.com/puzzlegiver_bot/status/278001662394777600 パズルの定番。列、行、対角線の成分の総和がすべて等しくなるように...
append([], List, List).
append([Head|Tail], List, [Head|TailR]) :- append(Tail, List, TailR).

at([Val|Tail], 0, Val).
at([Head|Tail], Idx, Val) :- number(Idx), Idx > 0, Idx1 is Idx - 1, at(Tail, Idx1, Val).
コードを見る

[Prolog]十字型にライトをスイッチしてすべてのライトを点けるパズル

【ライツアウト2】https://twitter.com/puzzlegiver_bot/status/277035208719609856 ルール: ・ライトを on/off して、すべてのライトを...
【ライツアウト2】https://twitter.com/puzzlegiver_bot/status/277035208719609856 ルール: ・ライトを on/off して、すべてのライトを...
% 0 = 点灯(on), 1 = 消灯(off)とする。
% 解答として、すべて点灯させるためにスイッチすべきライトの成分のリストを返す。

% リスト・行列に関する諸述語
append( [], List, List ).
コードを見る

特定のマスを特定の歩数目で踏んで迷路を抜けるパズル

【迷路5】https://twitter.com/puzzlegiver_bot/status/277296210212163584 課題: ・入口が左上(0,0)であることをルールに入れているのがイ...
【迷路5】https://twitter.com/puzzlegiver_bot/status/277296210212163584 課題: ・入口が左上(0,0)であることをルールに入れているのがイ...
append( [], List, List ).
append( [Head|Tail], List, [Head|TailR] ) :- append(Tail, List, TailR).

at( [Head|Tail], (0, Y), Val ) :- at(Head, Y, Val).
at( [Head|Tail], (X, Y), Val ) :- X > 0, X1 is X - 1, at( Tail, (X1, Y), Val ).
コードを見る