Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 29
1

Перестановка фишек

04.05.2016, 22:38. Просмотров 878. Ответов 2
Метки нет (Все метки)

Дано задание.
Пешки.
На горизонтальной доске состоящей из 7 ячеек расположены три белые и три черные пешки с одной свободной ячейкой между ними:

A,A,A,_,N,N,N

Найти последовательность преобразований начальной конфигурации для получения конечной конфигурации в которой белые пешки меняются с черными местами:

N,N,N,_,A,A,A

применяя следующие правила:

- черная пешка может быть передвинута в лево на соседнюю ячейку если она свободна, например

A,N,A,_,N,N,A → A,N,A,N,_,N,A

- черная пешка может перепрыгнуть в лево через белую если там находится свободная ячейка, например

A,N,_,A,N,N,A → A,N,N,A,_,N,A

- белая пешка может быть передвинута в право на соседнюю ячейку если она свободна, например

A,N,A,_,N,N,A → A,N,_,A,N,N,A

- белая пешка может перепрыгнуть в право через черную если там находится свободная ячейка, например

A,A,N,_,N,N,A → A,_,N,A,N,N,A

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Domains 
   element = x;p;o 
   spisok = element* 
   protokol = spisok* 
Predicates 
nondeterm igra(spisok,protokol,spisok) 
nondeterm dvinuti(spisok,spisok) 
Goal 
   start = [x,x,x,p,o,o,o], 
   finish = [o,o,o,p,x,x,x], 
   igra(start,protokol,finish),!. 
Clauses 
  igra(finish,[],finish):-!. 
  igra(poloj,[novpoloj|podspis],finish):- 
   dvinuti(poloj,novpoloj), 
   igra(novpoloj,podspis,finish). 
 
  dvinuti([x,p|pospis],[p,x|pospis]).    % Двинуть х вправо 
  dvinuti([x,o,p|L],[p,o,x|L]).          % Двинуть х через о 
  dvinuti([p,o|L],[o,p|L]).              % Двинуть о влево 
  dvinuti([p,x,o|L],[o,x,p|L]).          % Двинуть о через х 
  dvinuti([A|L],[A|L1]):- dvinuti(L,L1).
Вопрос - в разделе GOAL пишет, что после start = [..] Type error.... Что там неправильно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2016, 22:38
Ответы с готовыми решениями:

Перемещение фишек
помогите мне пожалуйста, очень нужно, осталась одна задача до зачета. если что, есть вебмани. ...

Одна из фишек гугла
Здравствуйте! Подскажите, пожалуйста, как мне ссылку на гугл что бы при переходе по ней открывалась...

Гексагональная сетка, перемещение фишек.
Есть гексагональная сетка на паинтбоксе, на ней фишки (по сути это картинки и булевы переменные,...

Несколько фишек с Active Directory
Доброго времени суток. Хотелось бы узнать, существуют ли в принципе решения следующих проблем: ...

2
Фрилансер
3419 / 2020 / 558
Регистрация: 31.05.2009
Сообщений: 6,636
06.05.2016, 20:13 2
Цитата Сообщение от Саня228 Посмотреть сообщение
Что там неправильно?
Нужно аккуратнее с регистром букв.
Все имена переменных должны начинаться с большой буквы: Start, Finish, Protocol
Вот в строках 19-22 - правильно.
А уже в 18 - неправильно, pospis. Должно быть Pospis

И этот код ничего не выведет.
Надо добавить к цели хотя бы write(Protocol)

Добавлено через 46 минут
В общем всё работает:
Код
[[x,x,p,x,o,o,o],[x,x,o,x,p,o,o],[x,x,o,x,o,p,o],[x,x,o,p,o,x,o],[x,p,o,x,o,x,o],[p,x,o,x,o,x,o],[o,x,p,x,o,x,o],[o,x,o,x,p,x,o],[o,x,o,x,o,x,p],[o,x,o,x,o,p,x],[o,x,o,p,o,x,x],[o,p,o,x,o,x,x],[o,o,p,x,o,x,x],[o,o,o,x,p,x,x],[o,o,o,p,x,x,x]]
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 29
07.05.2016, 13:20  [ТС] 3
Да, я доделал сразу после вашего ответа, спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2016, 13:20

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

30-я опера, не хватает пары старых фишек
поставил 30-ю оперу (до этого мучал 12-ю) не хватает парочки функций: возврат на предыдущую...

Нужно добавить в код пару фишек!
2. Имеются классы Cat и Pole. В классе Pole созданы 3 объекта класса Cat. Добавить в классе Pole 2...

Игра, подобная Go. Проверка расположения фишек
Мне надо создать игру для экзамена, но у меня возникли трудности... Я решил создать игру на...

Ряд фишек в Xiaomi Redmi Note 4A
В общем хочу узнать как сделать/есть ли такое/как правильно называется следующие штуки: 1)Лёгкое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.