write_output_data([], Solution, N).
write_row_with_solution(List, Solution, N) :- write_row_with_solution(List, Solution, N, 0). write_row_with_solution([], Solution, N).
write_row_with_solution([Head|Tail], Solution, N, M) :-
Head = 32, contains(Solution, pair(M, N)), % Если пробел и есть в решении, записываем + write("+"), M1 = M + 1, write_row_with_solution(Tail, Solution, N, M1), !; write(Head), M1 = M + 1, % Иначе просто записываем исходный символ write_row_with_solution(Tail, Solution, N, M1).
write_row_with_solution([], Solution, N, M).
Результаты тестирования представлены в табл. 3. Таблица 3 — Результаты тестирования
|
Входные данные |
Выходные данные |
||||||||||||
|
|
|
|
|
||||||||||
|
############### |
|
############### |
|
||||||||||
|
#S |
|
# |
|
|
# |
|
#S+++++# |
|
+++# |
|
|||
|
# |
# |
# |
|
|
*# |
|
# |
|
#+# |
|
++*# |
|
|
|
# |
# # |
|
|
*F# |
|
# |
|
#+# |
|
+*F# |
|
||
|
# |
# |
|
|
|
*# |
|
# |
|
#+++++++*# |
|
|||
|
############### |
|
############### |
|
||||||||||
|
|
|||||||||||||
##################### |
##################### |
|||||||||||||
# |
|
|
|
# |
|
# |
# |
# |
|
|
|
# |
# |
# |
### ##### |
# |
### |
### # |
### ##### |
# |
### ### # |
||||||||
# |
|
|
# S |
|
# # # |
# |
|
|
# |
|
S++# # # |
|||
# |
# # ## |
# ### |
# # # |
# # # ## |
# |
###+# # # |
||||||||
# # # # |
# # # # |
# |
# # # # |
|
# # #+# |
# |
||||||||
### # # |
*## |
# |
# ### |
### # #+++*## #+# ### |
||||||||||
# # # |
# |
|
|
# |
# |
# |
# # #+++# |
++++#+# |
# |
|||||
# #* |
# # |
### |
# |
# # # |
# #*++# # |
###+#+# # # |
||||||||
#F |
|
*# # |
|
# |
|
|
# # |
#F+++*# # |
|
#+++ |
# # |
|||
##################### |
##################### |
|||||||||||||
|
|
|||||||||||||
##################### |
##################### |
|||||||||||||
#F |
|
|
|
|
# |
|
# |
#F++++ |
|
+++++# |
# |
|||
# ###*###*### |
### ### |
# ###*###*###+### ### |
||||||||||||
# |
|
|
|
# |
|
|
# |
# |
+++++ # +++ |
# |
||||
# # # *###### |
# |
# # # |
# # #+*###### #+# # # |
|||||||||||
# |
# |
# # |
|
# # # # |
# |
# |
# # |
|
#+# # # |
|||||
### # # # |
# ### |
### # |
### # # # |
# |
###+### # |
|||||||||
# # |
# |
# |
|
# |
|
# |
# # |
# |
|
# |
|
#+++ |
# |
|
# ####### |
### |
### ### |
# ####### |
### ###+### |
||||||||||
# |
|
|
# |
|
# |
|
S# |
# |
|
|
# |
|
# ++S# |
|
##################### |
##################### |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6
|
Входные данные |
Выходные данные |
||||||||
|
|
|||||||||
##################### |
##################### |
|||||||||
# |
|
|
|
|
# |
# |
# |
|
# |
# |
# ### |
### |
#### ## ### |
# ### ### #### ## ### |
|||||||
# |
*S |
# |
# |
|
|
# # |
#++*S # # |
|
# # |
|
# ##### |
# |
### |
##### # |
#+##### # ### ##### # |
||||||
# |
|
|
# |
|
|
# # |
#+++ +++# |
|
# # |
|
# # # |
# |
# |
## ###### # |
# #+#+#+# ## ###### # |
||||||
# # * |
# |
|
|
|
# |
# #+*+#+++++++ +++ |
# |
|||
# # # |
# |
# |
# # |
# # ### |
# # # # # # #+#+#+### |
|||||
# |
|
|
|
# # |
* # |
F# |
# |
|
# #+*+#++F# |
|
##################### |
##################### |
|||||||||
|
|
|||||||||
##################### |
##################### |
|||||||||
# # |
|
# |
|
# |
# |
# # |
# |
#+++++# |
||
# # ### |
# |
### |
# ### # |
# # ### # ### #+###+# |
||||||
# #* |
#F |
|
# |
*# |
# |
# #*++#F |
|
#++++*#+++# |
||
# # # |
# |
### ##### # # |
# #+#+#+###+#####+# # |
|||||||
# |
*# |
|
# |
|
#* |
# # |
#++*#+++#+++ #*++# # |
|||
# # # |
### |
### |
# ### # |
#+# # ###+### #+### # |
||||||
# # # |
|
|
# # |
# |
# |
#+# # |
|
+# # #+ +++# |
||
#*# # |
### |
# # |
# # # # |
#*# # ###+# # #+#+#+# |
||||||
# |
* |
|
|
* # |
* |
#S# |
#++*+++++* # *++#S# |
|||
##################### |
##################### |
|||||||||
Более интересный лабиринт приведен в табл. 4. Таблица 4 — Лабиринт 95x25
###############################################################################################
#S |
|
# |
# # |
|
|
|
|
# |
|
|
# |
# |
|
# |
|
|
|
# |
# |
|
# |
|
# |
# # |
# |
|
####### |
# |
### |
# |
####### |
### ### |
### # # ### |
### # ### |
### ##### |
### ### |
### ##### ##### # # ### |
||||||||||||||||
# |
|
# |
|
# # # |
|
|
|
# |
|
# |
# # |
|
# |
# # |
# # |
|
|
# |
|
# # |
|
# |
# # # |
|||
# ### |
# |
# |
##### |
# ### |
##### # |
### |
# # ####### ##### |
### # # ### |
##### ### |
# # |
####### |
### # # # |
||||||||||||||
# # |
# # |
|
|
|
# # # |
# # # # # |
|
# # |
# # |
# # |
# |
|
# # |
|
# |
# |
|
# |
# |
|||||||
### ###*### ### |
### |
# |
# |
##### |
# |
# # ####### |
# # |
### |
# |
######### |
# ##### |
### ######### |
# # # ### |
|||||||||||||
# # |
|
|
# # |
# # # # |
# |
|
# # |
# |
# # |
|
# |
# # # # # |
|
# # # |
# # # # |
# |
||||||||||
# ##### |
##### |
# |
####### |
# |
# # |
################# ####### # # # |
# |
# # # # |
# |
# # ##### |
# # ##### # |
|||||||||||||||
# |
# # |
|
# |
|
# |
|
|
# |
|
# |
# # |
|
# |
|
|
# # # # |
|
# |
# # # |
# |
# # # |
# |
||||
####### |
##### |
# |
####### |
######### # ### # |
##### ### |
# |
##### ######### ### |
### |
# ### ### ####### |
|||||||||||||||||
# |
|
# # |
# # |
|
|
# |
|
|
|
# |
# |
|
# |
# # # # |
# |
|
# |
# # |
# # # |
|
# # # |
# |
||||
# ### |
### |
### |
# |
### |
##### |
### |
########### |
# |
######### |
# # # ### |
# ##### |
# |
### |
### ### |
# # ### # |
|||||||||||
# # # |
|
|
|
# # |
# |
|
# # # |
|
|
# # # |
|
# # # # # |
# # |
|
# # |
|
# |
# |
# |
# |
# |
|||||
# # # |
### |
# ##### ##### |
### # |
##### ### ##### # # # |
# |
### ######### ### |
### # |
# ##### |
##### # # |
|||||||||||||||||
# # # # |
|
# # # |
# |
|
|
# # |
# |
|
|
|
|
# |
# # # |
|
# # |
# # # # |
|
# # # # |
||||||||
### # ### |
# # |
##### |
# |
### |
########### ### |
# |
####### |
# |
### # # |
### # # ### |
# ########### # # ### |
|||||||||||||||
# # |
|
# # |
# # # # |
|
# # # |
|
|
# # |
# |
|
# |
# # |
|
# # # # # |
|
|
# |
# |
||||||||
# ### # |
# |
### |
# |
# # |
# |
# |
# |
# # |
# |
######### |
# |
##### ####### ### |
# |
##### # |
# |
################### # |
||||||||||
# |
# # |
# # |
|
# # |
|
# |
# # # |
# # |
# |
|
# |
# |
|
# |
# # # |
|
|
* # # |
||||||||
### ####### ### |
### |
### |
######### # ####### |
# # ### |
####### ### |
### ##### |
# # ####### |
### # # # |
||||||||||||||||||
# # |
|
|
# |
|
# # # # |
# # |
|
# # |
|
# # |
|
# # |
# |
|
# |
|
# |
# |
|
# # |
# |
|||||
# ####### |
####### # |
# |
### |
### |
# |
####### # |
##### ### |
# |
# # ### |
####### # |
# |
# # |
### ####### # # # |
|||||||||||||
# # |
|
|
|
|
# |
|
# |
|
|
|
# |
|
|
# |
|
# |
# # |
|
# |
|
# |
# # |
|
# # #F# |
||
###############################################################################################
Решение этого лабиринта приведено в табл. 5.
7
Таблица 5 — Найденный кратчайший путь в лабиринте 95x25
###############################################################################################
#S++++++# |
# |
#+++++++++++++# |
+++++++# |
|
#+++++#+++++++++++++++# |
# |
|
# |
|
# |
# |
# |
# |
|||||||||||||||
#######+# |
### |
#+####### |
###+###+### #+# ###+###+#+### |
### #####+### ### |
### ##### ##### |
# # ### |
||||||||||||||||||||||
# |
|
+# |
|
#+# # |
|
|
|
#+++++# |
#+# |
|
+++#+++# |
# |
|
# # |
|
+ |
|
# |
|
# # |
|
# |
|
# # # |
||||
# ### |
#+# |
#####+# ### |
##### # |
### # |
#+#######+##### |
### # # |
###+##### ### |
# # |
####### ### # # # |
|||||||||||||||||||
# # |
|
#+# |
+++++ |
|
# |
# |
# |
# |
# # # |
#+++++++#+# # |
# |
|
# # |
|
#+++ |
# # |
|
# |
# |
|
# |
|
# |
|||||
### ###*###+### |
### |
# |
# |
##### |
# # # |
#######+#+# ### |
# |
######### |
#+##### |
### ######### # |
# # ### |
|||||||||||||||||
# |
# |
+++++# |
# |
# |
# |
# |
# |
# |
# # |
|
|
#+++# # |
|
# |
|
|
# |
#+# # # |
|
# # |
# |
# # |
# # |
# |
||||
# ##### ##### |
# |
####### |
# |
# # |
################# ####### # # |
# |
# |
#+# # # |
# |
# # |
##### |
# # |
##### # |
|||||||||||||||
# |
|
# # |
|
# |
|
# |
|
|
# |
# |
# |
# |
|
# |
|
# # # |
# |
|
#+++++# |
# |
# |
# |
# # |
|
# |
# |
||
####### ##### |
# |
####### |
######### # |
### # |
##### ### |
# |
##### |
#########+### |
### |
# ### ### |
####### |
|||||||||||||||||
# |
|
# |
# |
# |
# |
|
|
# |
|
# |
|
|
# |
# |
# |
# # # |
|
# |
# |
+++# |
# |
# # # |
# |
# # |
# |
|||
# ### |
### |
### |
# |
### |
##### |
### |
########### |
# ######### |
# # # |
### |
# #####+# |
### |
### ### # |
# ### # |
||||||||||||||
# # # |
|
|
# # |
# |
|
# # # |
# |
# # |
# # # # # |
|
# |
# |
|
# # + |
|
# |
# |
# |
|
# |
# |
|||||||
# # # |
### |
# ##### ##### |
### # |
##### |
### ##### # # # |
# |
### ######### ###+### # |
# ##### ##### # # |
||||||||||||||||||||
# # # |
# |
# # # |
# |
|
|
# # |
# |
|
|
|
# |
# |
# |
# |
|
|
# |
#+++# |
# # # |
|
# # # # |
|||||||
### # |
### |
# # |
##### |
# |
### |
########### ### |
# ####### |
# |
### # # |
### # #+### |
# ########### |
# # ### |
||||||||||||||||
# # |
|
# # |
# # # # |
|
# # # |
|
|
# # # |
# |
|
|
# # |
# #+# # # |
|
# |
|
|
# |
||||||||||
# ### |
# # |
### |
# |
# # |
# |
# |
# |
# # |
# ######### |
# ##### ####### ### |
# |
#####+# |
# |
################### # |
||||||||||||||
# |
|
# # |
# |
# |
|
# |
# |
|
# |
# # |
# |
|
# # |
# |
|
|
# |
|
# |
#+++ |
# |
# #+++++++++++++*+# # |
||||||
### ####### ### |
### |
### |
######### # |
####### # # ### |
####### |
### |
###+##### |
# #+####### ### #+# # |
||||||||||||||||||||
# |
# |
|
# |
|
# |
# |
# |
# |
# |
# |
# |
# |
|
# # |
|
# |
# |
|
# |
|
+++#+++#+++ |
# |
|
# #+++# |
||||
# ####### |
####### # |
# |
### |
### |
# ####### # |
##### ### |
# |
# # ### |
#######+#+#+#+# |
### ####### # #+# |
||||||||||||||||||
# |
# |
|
|
|
# |
|
# |
|
|
# |
|
|
# |
|
# |
|
# # |
|
|
# |
+++#+++# |
# |
# |
|
# #F# |
|||
###############################################################################################
Выводы В результате выполнения лабораторной работы мы разработали
программу на языке Turbo Prolog 2.0 для нахождения кратчайшего маршрута между двумя ячейками в лабиринте через заданные ячейки-монеты. Было проведено тестирование отдельных предикатов и всей программы в целом. Программа полностью удовлетворяет заданным требованиям.
8