From 0b65dd864a804a6b96ca1b8aeacd947eeb361538 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Thu, 3 Apr 2014 21:07:06 +1100 Subject: Moving some clauses around to more appropriate modules --- map.prolog | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'map.prolog') diff --git a/map.prolog b/map.prolog index 84ec8c4..f5bb863 100644 --- a/map.prolog +++ b/map.prolog @@ -1,5 +1,10 @@ -:- module(map, [roomList/1, connects/3]). +:- module(map, [roomList/1, isConnected/1, connects/3]). + + +:- consult('misc.prolog'). + + % map has 20 rooms, labelled a through t @@ -11,6 +16,24 @@ roomList(X) :- X = [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t]. +isConnected([]) :- true. +isConnected(X) :- + head(Y,X), + tail(Z,X), + connectTail([Y],Z). + +connectTail(_,[]) :- true. +connectTail([],_) :- false. +connectTail(Open,G) :- + head(X,Open), + tail(Y,Open), + findall(N, connects(X,N,_), Ns), + subtract(G,Ns,Gx), + subtract(G,Gx,Nx), + append(Y,Nx,Yx), + connectTail(Yx,Gx). + + % loop around the middle connects(a,b,northeast). -- cgit