Материал: ЛиФП. Лабораторная работа 5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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