predicates
test(string)
goal
makewindow(1,7,7,"interaction window",0,2,11,43),
shiftwindow(1),
clearwindow,
write("
0. Enter
0 to end\n"
), write("
1. Enter
1 to create a window and input\n a new string\n"
), write("
2. Enter
2 to remove the window and text\n"
), write("
3. Enter
3 to
write to existing window\n\n"
), action(Int,Text),
Int = 0,!, /* this cut will prevent backtracking even if you have not created a string */
test(Text).
clauses
action(0,"EXIT"):-!, /* this cut prevents Turbo Prolog from looking at other options. */
exit.
action(1,Str):-
existwindow(2),
write("You have a window that already exists
.\n"
), write("Do you wish to clear it
.(y
,n
) "
), readchar(Ans),!,
Ans='y', /* If you answer yes to the question this cut prevents the backtracking to the second action(1) clause. */
shiftwindow(2),
clearwindow,
write("Enter your string\n"
), readln(Str).
action(1,Str):- !, /* this cut prevents Turbo Prolog from looking at other options. */
makewindow(2,7,7," simple window control ", 12, 3, 12, 40),
write("Enter your string\n"
), readln(Str).
action(2,"window removed"):-
existwindow(2),
!, /* If the window has been input, this cut will prevent the second action(2) clause from executing */
shiftwindow(2),
removewindow,
clearwindow.
action(2,"ERROR"):-
clearwindow,
write("You must first create a window\n"
), write("Press any key to continue "
), readchar(_).
action(3,Str):-
existwindow(2),!,
shiftwindow(2),
clearwindow,
write("Enter your string\n"
), readln(Str).
action(3,Str):-
write("There
is no window
. Do you\n"
), write("want to create one?
(y
/n
) "
), readchar(ANS),
makewindow(2,7,7," simple window control ",12,3,12,40),
write("Enter your string\n"
), readln(Str).
action(_,"ERROR"):-
write("not a valid option\n"
), write("press any key to continue"
).
test(Text):-
cHJlZGljYXRlcwogICByZXBlYXQKICAgYWN0aW9uKGludGVnZXIsc3RyaW5nKQogICB0ZXN0KHN0cmluZykKICAgCmdvYWwKICAgbWFrZXdpbmRvdygxLDcsNywiaW50ZXJhY3Rpb24gd2luZG93IiwwLDIsMTEsNDMpLAogICByZXBlYXQsCiAgIHNoaWZ0d2luZG93KDEpLAogICBjbGVhcndpbmRvdywKICAgd3JpdGUoIjAuIEVudGVyIDAgdG8gZW5kXG4iKSwKICAgd3JpdGUoIjEuIEVudGVyIDEgdG8gY3JlYXRlIGEgd2luZG93IGFuZCBpbnB1dFxuICAgYSBuZXcgc3RyaW5nXG4iKSwKICAgd3JpdGUoIjIuIEVudGVyIDIgdG8gcmVtb3ZlIHRoZSB3aW5kb3cgYW5kIHRleHRcbiIpLAogICB3cml0ZSgiMy4gRW50ZXIgMyB0byB3cml0ZSB0byBleGlzdGluZyB3aW5kb3dcblxuIiksCiAgIHdyaXRlKCJTZWxlY3Rpb24/ICIpLAogICByZWFkaW50KEludCksbmwsCiAgIGFjdGlvbihJbnQsVGV4dCksCiAgIEludCA9IDAsISwgICAgICAgICAgICAgICAvKiB0aGlzIGN1dCB3aWxsIHByZXZlbnQgYmFja3RyYWNraW5nIGV2ZW4gaWYgeW91ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgbm90IGNyZWF0ZWQgYSBzdHJpbmcgKi8KICAgdGVzdChUZXh0KS4KICAgICAgICAKY2xhdXNlcwogICBhY3Rpb24oMCwiRVhJVCIpOi0hLCAgICAgICAgICAgICAgLyogdGhpcyBjdXQgcHJldmVudHMgVHVyYm8gUHJvbG9nIGZyb20gbG9va2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0IG90aGVyIG9wdGlvbnMuICovCiAgICAgIGV4aXQuCgogICBhY3Rpb24oMSxTdHIpOi0gCiAgICAgIGV4aXN0d2luZG93KDIpLAogICAgICB3cml0ZSgiWW91IGhhdmUgYSB3aW5kb3cgdGhhdCBhbHJlYWR5IGV4aXN0cy5cbiIpLAogICAgICB3cml0ZSgiRG8geW91IHdpc2ggdG8gY2xlYXIgaXQuKHksbikgIiksCiAgICAgIHJlYWRjaGFyKEFucyksISwKICAgICAgQW5zPSd5JywgICAgLyogSWYgeW91IGFuc3dlciB5ZXMgdG8gdGhlIHF1ZXN0aW9uIHRoaXMgY3V0IHByZXZlbnRzIHRoZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrdHJhY2tpbmcgdG8gdGhlIHNlY29uZCBhY3Rpb24oMSkgY2xhdXNlLiAqLwogICAgICBubCwKICAgICAgc2hpZnR3aW5kb3coMiksCiAgICAgIGNsZWFyd2luZG93LAogICAgICB3cml0ZSgiRW50ZXIgeW91ciBzdHJpbmdcbiIpLAogICAgICByZWFkbG4oU3RyKS4KCiAgIGFjdGlvbigxLFN0cik6LSAhLCAgICAgICAgIC8qIHRoaXMgY3V0IHByZXZlbnRzIFR1cmJvIFByb2xvZyBmcm9tIGxvb2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCBvdGhlciBvcHRpb25zLiAqLwogICAgICBubCwKICAgICAgbWFrZXdpbmRvdygyLDcsNywiIHNpbXBsZSB3aW5kb3cgY29udHJvbCAiLCAxMiwgMywgMTIsIDQwKSwKICAgICAgd3JpdGUoIkVudGVyIHlvdXIgc3RyaW5nXG4iKSwKICAgICAgcmVhZGxuKFN0cikuCgogICBhY3Rpb24oMiwid2luZG93IHJlbW92ZWQiKTotCiAgICAgIGV4aXN0d2luZG93KDIpLAogICAgICAhLCAgICAvKiBJZiB0aGUgd2luZG93IGhhcyBiZWVuIGlucHV0LCB0aGlzIGN1dCB3aWxsIHByZXZlbnQgdGhlIHNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24oMikgY2xhdXNlIGZyb20gZXhlY3V0aW5nICovCiAgICAgIHNoaWZ0d2luZG93KDIpLAogICAgICByZW1vdmV3aW5kb3csCiAgICAgIGNsZWFyd2luZG93LgoKICAgYWN0aW9uKDIsIkVSUk9SIik6LSAKICAgICAgY2xlYXJ3aW5kb3csCiAgICAgIHdyaXRlKCJZb3UgbXVzdCBmaXJzdCBjcmVhdGUgYSB3aW5kb3dcbiIpLAogICAgICB3cml0ZSgiUHJlc3MgYW55IGtleSB0byBjb250aW51ZSAiKSwKICAgICAgcmVhZGNoYXIoXykuCiAgICAgIAogICBhY3Rpb24oMyxTdHIpOi0gCiAgICAgIGV4aXN0d2luZG93KDIpLCEsCiAgICAgIHNoaWZ0d2luZG93KDIpLAogICAgICBjbGVhcndpbmRvdywKICAgICAgd3JpdGUoIkVudGVyIHlvdXIgc3RyaW5nXG4iKSwKICAgICAgcmVhZGxuKFN0cikuCgogICBhY3Rpb24oMyxTdHIpOi0gCiAgICAgIHdyaXRlKCJUaGVyZSBpcyBubyB3aW5kb3cuIERvIHlvdVxuIiksCiAgICAgIHdyaXRlKCJ3YW50IHRvIGNyZWF0ZSBvbmU/KHkvbikgIiksCiAgICAgIHJlYWRjaGFyKEFOUyksCiAgICAgIEFOUyA9ICd5JyxubCwKICAgICAgbWFrZXdpbmRvdygyLDcsNywiIHNpbXBsZSB3aW5kb3cgY29udHJvbCAiLDEyLDMsMTIsNDApLAogICAgICB3cml0ZSgiRW50ZXIgeW91ciBzdHJpbmdcbiIpLAogICAgICByZWFkbG4oU3RyKS4KCiAgIGFjdGlvbihfLCJFUlJPUiIpOi0KICAgICAgd3JpdGUoIm5vdCBhIHZhbGlkIG9wdGlvblxuIiksCiAgICAgIHdyaXRlKCJwcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlIikuCgogICB0ZXN0KFRleHQpOi0KICAgICAgd3JpdGUoVGV4dCkuCiAgICAgIAogICByZXBlYXQuCiAgIHJlcGVhdDotcmVwZWF0Lg==