summaryrefslogtreecommitdiff
path: root/lang/prolog/1.8.7/src/topographie
diff options
context:
space:
mode:
Diffstat (limited to 'lang/prolog/1.8.7/src/topographie')
-rw-r--r--lang/prolog/1.8.7/src/topographie59
1 files changed, 59 insertions, 0 deletions
diff --git a/lang/prolog/1.8.7/src/topographie b/lang/prolog/1.8.7/src/topographie
new file mode 100644
index 0000000..c0924cf
--- /dev/null
+++ b/lang/prolog/1.8.7/src/topographie
@@ -0,0 +1,59 @@
+member(X,[X|_]).
+member(X,[_|Y]):-
+ member(X,Y).
+
+append([],L,L).
+append([X|A],B,[X|C]):-
+ append(A,B,C).
+
+efface(A,[A|L],L):-
+ !.
+efface(A,[B|L],[B|M]):-
+ efface(A,L,M).
+efface(_,[],[]).
+
+
+nol(N):-
+ read(N).
+
+input(_,_,N,N,L,L).
+input(X,Y,R,N,L,O):-
+ read(X),
+ read(Y),
+ append([[X,Y]],L,M),
+ C IS R+1,
+ input(_,_,C,N,M,O).
+
+enter(L):-
+ nol(N),
+ input(X,Y,0,N,[],L).
+
+
+searchnext(X,Y,[H|T]):-
+ H=[X,Y];
+ H=[Y,X];
+ searchnext(X,Y,T).
+
+onemove(_,_,[],L):-
+ write(L).
+onemove(X,Y,L,H):-
+ searchnext(X,Y,L),
+ efface([X,Y],L,N),
+ L<>N,
+ write(N),elan(line),
+ append(H,[Y],F),
+ onemove(Y,Z,N,F).
+onemove(X,Y,L,H):-
+ searchnext(X,Y,L),
+ efface([Y,X],L,N),
+ L<>N,
+ write(N),elan(line),
+ append(H,[Y],F),
+ onemove(Y,Z,N,F).
+
+
+
+go:-
+ enter(L),!,
+ onemove(X,Y,L,[X]).
+