0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
||||||
1 | ||||||
работа со списками(дописать задание)18.12.2011, 15:34. Показов 1419. Ответов 12
Метки нет (Все метки)
Здравствуйте. Помогите дописать задачку. Понимаю, что такая задача наверняка уже рассматривалась и я находила решения, но только на турбо-прологе или SWI, а я программирую через приложение PIE-32...
Задание: Из списка символов S1, S2, ..., SN исключить все символы между круглыми скобками. Сами скобки тоже должны быть отброшены. Од-нако, если внутри круглых скобок есть другая пара круглых скобок, то она и содержащиеся в ней символы должны быть сохранены. И так далее рекурсивно. Например, последовательность "ab(c(d(ef(gh)z)fg)r)dd(ik(l))" преобразуется в "ab(d(gh)fg)dd(l)". Вот то, что написала, но надо отредактировать, чтобы нормально работала...
0
|
18.12.2011, 15:34 | |
Ответы с готовыми решениями:
12
Работа со списками Работа со списками Работа со списками. Работа со списками |
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
18.12.2011, 17:39 | 2 | |||||
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
|
18.12.2011, 18:35 [ТС] | 3 |
Спасибо огромное!!!! Только напишите пожалуйста, как сделать запрос. что-то не получается...
0
|
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
18.12.2011, 19:28 | 4 |
Ну как это может быть не понятно? Есть предикат с двумя параметрами.
?- del([a,'(',b,')',c],Ans),write(Ans).
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
|
18.12.2011, 19:53 [ТС] | 5 |
Я программирую в Prolog Inference Engine и тот запрос, который вы написали не работает.
В том коде, который я написала, запрос был следующим : например, просто del([1,2], X) и потом выдавался результат.
0
|
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
18.12.2011, 20:18 | 6 |
Ну сделайте просто del, в чем проблема? Если не работает, то что выдает?
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
|
18.12.2011, 20:25 [ТС] | 7 |
Ну, разумеется, я уже по разному писать пробовала и в итоге просто выдаёт No solutions.
Вот ещё, что пишет: Сначала пишу запрос, например: del([a,'(',b,f,')',d,d], X) No solutions После этого снова компилирую и после этого он ещё выдаёт: del([(|B],D,L) :- D mod 2 Syntax error in parser
0
|
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
18.12.2011, 20:45 | 8 |
2й вариант точно не верен, скобки надо в кавычках писать.
Кстати, ошибку нашла, 3е правило надо изменить на del([')'|B],D,L):- D mod 2=:=1,!,D1 is D-1,del(B,D1,L). Наверно в Вашем диалекте нету mod или is или =:=, проверьте это.
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
|
18.12.2011, 21:04 [ТС] | 9 |
всё равно ничего не работает, видимо действительно в диалекте нету mod или is или =:=. А что тогда делать, как модифицировать...
0
|
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
18.12.2011, 21:06 | 10 |
Я же сказала, проверьте чего именно нет. И замените на аналог, который есть.
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
|
18.12.2011, 21:14 [ТС] | 11 |
а вот это =:= что значит?
0
|
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
18.12.2011, 21:19 | 12 |
Это равенство значений алгебраических выражений.
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 10
|
|
18.12.2011, 21:53 [ТС] | 13 |
я исправила =:= на ==, теперь он просто работает хотя бы, но только выдаёт тот же список, который я ввожу, но не удаляет скобки.
Пример запросов: del([1,2], X) X= [1,2] 1 Solution del([a,b,'(',v,d,')',d,s], X) X= [a,b,(,v,d,),d,s] 1 Solution А как можно mod заменить?
0
|
18.12.2011, 21:53 | |
18.12.2011, 21:53 | |
Помогаю со студенческими работами здесь
13
Работа со списками... Работа со списками Работа со списками Работа со списками. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |