home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix CD 2.0
/
Phoenix_CD.cdr
/
02a
/
pctj1186.zip
/
HILBERT.PRO
< prev
next >
Wrap
Text File
|
1986-09-19
|
1KB
|
53 lines
predicates
turn(symbol)
opposite(symbol,symbol)
hilbert(symbol,integer,integer,integer)
two_to_the(integer,integer)
clauses
turn(left) :- !, left(90).
turn(right) :- !, right(90).
opposite(left,right).
opposite(right,left).
hilbert(_,Order,MaxOrder,_) :-
Order = MaxOrder,
!,
left(180).
hilbert(Sense,Order,MaxOrder,SegSize) :-
!,
NewOrder = Order + 1,
opposite(Sense,OppSense),
turn(Sense),
hilbert(OppSense,NewOrder,MaxOrder,SegSize),
turn(Sense),
forward(SegSize),
hilbert(Sense,NewOrder,MaxOrder,SegSize),
turn(OppSense),
forward(SegSize),
turn(OppSense),
hilbert(Sense,NewOrder,MaxOrder,SegSize),
forward(SegSize),
turn(Sense),
hilbert(OppSense,NewOrder,MaxOrder,SegSize),
turn(Sense).
two_to_the(0,1).
two_to_the(Exponent,Result) :-
!,
N = Exponent-1,
two_to_the(N,R),
Result = R+R.
goal
write("Enter desired order (1-10):"),
readint(MaxOrder),
two_to_the(MaxOrder,N),
SegSize = 24000 / N,
clearwindow,
graphics(2,0,2),
penpos(30000,30000,180),
hilbert(left,0,MaxOrder,SegSize),
write("Press RETURN..."),
readln(_),
text.