diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2016-09-30 16:57:23 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2016-09-30 16:59:06 +0200 |
commit | 724cc003460ec67eda269911da85c9f9e40aa6cf (patch) | |
tree | 14e27b45e04279516e4be546b15dcf6fafe17268 /prolog/topographie | |
download | eumel-src-724cc003460ec67eda269911da85c9f9e40aa6cf.tar.gz eumel-src-724cc003460ec67eda269911da85c9f9e40aa6cf.tar.bz2 eumel-src-724cc003460ec67eda269911da85c9f9e40aa6cf.zip |
Add extracted sources from floppy disk images
Some files have no textual representation (yet) and were added as raw
dataspaces.
Diffstat (limited to 'prolog/topographie')
-rw-r--r-- | prolog/topographie | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/prolog/topographie b/prolog/topographie new file mode 100644 index 0000000..c0924cf --- /dev/null +++ b/prolog/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]). + |