Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 11.03.2011
Откуда: г. Пенза
Необходимо состряпать лабораторку мне, одна вот осталась, никак не сляпаю.
Пользователь вводит список. Программа удаляет из этого списка все палиндромы. Причем удаляет ВСЕ палиндромы НАЧАЛЬНОГО списка.
Т.е. 123432520 - тут пересекающиеся палиндромы 23432 и 252, в ответе 10. (вот этого не было у меня, т.к. сперва удалился бы 23432, соответственно 252 поломался)
А если, например 123431, то в ответе будет палиндром 121, его не надо удалять, т.к. его НЕ было в ПЕРВОНАЧАЛЬНОМ списке.

Почему так напираю на ПЕРВОНАЧАЛЬНЫЙ список? Потому, то сам сделал неправильную, она не работала с пересекающимися палиндромами, ломая один из них. Пришел сдавать, а мне - гуляйте, батенька. Теперь вот что-то совсем не думается.

код моей неверной, вроде финальная версия (я еще в инсте немного правил, сейчас дописал по памяти)
Код:
domains
   list=integer*
predicates
   prefix(list,list,list)
   reverse(list,list,list)
   delete1(list,list)
   read_list(list)
   result
clauses
   read_list([H|T]):-
      readint(H),
      read_list(T).
   read_list([]).
   prefix([A|L],[A|P],R):-
      prefix(L,P,R).
   prefix(L,[],L).
   reverse([A|L],S,R):-
      reverse(L,[A|S],R).
   reverse([],L,L).
   delete1(L,Res):-
      prefix(L,P,R),
      P=[_,_,_|_],
      reverse(P,[],P),!,
      delete1(R,Res).
   delete1([A|L],[A|Res]):-
      delete1(L,Res).
   delete1([],[]).
   result:-
      write("Elements of list:"),nl,
      read_list(L1),
      delete1(L1, L2),
      write("Without polyndroms: "),
      write(L2).
goal
   result.


Надо сдать в следующий четверг, но конечно бы увидеть ответ пораньше. Сам еще посмотрю в воскресенье и вторник, но не расстроюсь, если мне не придется этого делать, т.к. кто-то напишет мне заранее.

Спасибо всем откликнувшимся!



Партнер
 

Member
Статус: Не в сети
Регистрация: 07.01.2010
я бы делал так:
1. построить список всех палиндромов, которые есть в исходной строке
2. искать палиндромы, проверять их на то, что есть в списке из п.1 и вырезать, если нашлись
3. если на предыдущем шаге был найден хоть 1 палиндром - то возвращаться на второй шаг


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan