Определите, на каких маршрутах можно добраться от остановки X до остановки Y - Prolog

Формулировка задачи:

Я новичок в прологе. Пытаюсь что-то сделать, но ничего не компилится) Скоро сдавать. Задание: Создайте базу данных городского транспорта: название транспорта, номер маршрута, список остановок. Определите, на каких маршрутах можно добраться от остановки X до остановки Y без пересадок. Среда разработки - SWI prolog. (на турбо прологе не принимают) Начальная база данных должна храниться в файле. В программе должно присутствовать меню с пунктами: просмотр базы данных; добавление записи; удаление записи; запрос к базе данных по заданию; выход. После завершения работы программы, все выполненные изменения базы должны сохраняться в файле базы данных. Моя бд, не знаю правильно ли оформил:
Кликните здесь для просмотра всего текста
(Транспорт, Номер_маршрута, Остановки) :-dynamic information/3. information('Троллейбус', 2, ['улица Аэропорт','Мочищенское шоссе', 'улица Жуковского', 'Плановая улица', 'Нарымская улица', 'проспект Димитрова', 'Вокзальная магистраль', 'улица Ленина', 'площадь Гарина-Михайловского']). information('Троллейбус', 8 ['улица Зорге', 'улица Громова', 'улица Зорге', 'улица Сибиряков-Гвардейцев', 'улица Покрышкина', 'площадь Карла Маркса', 'проспект Карла Маркса', 'Октябрьский мост', 'улица Восход', 'улица Кирова', 'улица Воскова', 'Ленинградская улица']). information('Трамвай', 10, ['Оловозаводская улица', 'улица Мира', 'улица Сибиряков-Гвардейцев', 'улица Вертковского', 'Троллейная улица', 'улица 9-й Гвардейской Дивизии', 'Волховская улица', 'улица Связистов', 'Широкая улица', 'Демьяновская улица', 'Троллейная улица', 'Вертковская улица', 'улица Сибиряков-Гвардейцев', 'улица Мира', 'Оловозаводская улица']). information('Автобус', 43, [ 'Белые росы', 'Малое Кривощеково', 'Магазин №14', 'Союзная', 'Пионерская', 'Прокопьевская', 'Путепровод (ул. Комсомольская)', 'ж/м Северо-Чемской', 'Комсомольская', 'Сержанта Коротаева', ]). information('Автобус', 79, [ 'Обогатительная', 'Аникина', 'Рабочая', 'Прокатная', 'Строительная', 'пл. Сибиряков-Гвардейцев', 'Советская Сибирь', 'Гвардейская', 'Площадь Маркса', 'Метро Площадь Маркса',]). information('Автобус', 119, [ 'Телецентр', 'пл. Станиславского', 'Монумент Славы', 'ПКиО им. Кирова', 'ГПТУ-50', 'Вокзал Новосибирск-западный', 'Ленинский ЗАГС', 'Пархоменко', 'Озёрная']). information('Автобус', 337, [ 'ж/м Троллейный', 'Новосибирская', 'Широкая', 'Дюканова', 'Невельского', 'Школа №90', 'Филатова', 'Халтурина', 'Колхидская', 'ДК завода Сибтекстильмаш', 'ж/м Западный', 'Микрорайон Чистая Слобода']). information('Троллейбус, 5, [ 'Ленинградская', 'Воскова', 'Дунайская', 'Коммунстроевская', 'Никитина', 'Октябрьский универмаг', 'ГПНТБ', 'Метро Октябрьская', 'Театр Глобус', 'Дом Ленина', 'Площадь Ленина', 'Муниципальный банк', 'Метро Красный проспект', 'Достоевского', 'Метро Гагаринская', 'Кропоткина', 'Метро Заельцовская', 'Дом Культуры Энергия', 'Северная', 'Сибирский Кадетский Корпус', 'Городской аэропорт']). information('Автобус', 98, [ 'Виталия Потылицына', 'Детский сад №100', 'Сквер', 'ж/м Плющихинский', 'Высоцкого', 'ж/м Восточный', 'Детский сад', 'Лазурная', 'ж/м Волочаевский', 'Доватора', 'Автопарк', 'Есенина', 'Кафе Лада', 'Магазин Золотая Нива', 'Молодёжная', 'Гаранина', 'Воинская', 'Красноармейская', 'Белинского', 'Октябрьский рынок', 'ГПНТБ', 'Метро Октябрьская', 'Театр Глобус', 'Дом Ленина', 'Площадь Ленина', 'Муниципальный банк', 'Метро Красный проспект', 'Достоевского', 'Метро Гагаринская', 'Кропоткина', 'Метро Заельцовская', 'Дом Культуры Энергия', 'Дачная', 'ж/м Ботанический']).
План действий у меня был такой: проверять принадлежность элементов X и Y(остановки, подаваемые на вход программе) с помощью предиката member спискам остановок. И если оба элемента найдены в списке, то вывести номер маршрута и тип транспорта на экран. Правда не получается это реализовать на практике) Меню приблизительно я вижу вот так:
Кликните здесь для просмотра всего текста
show_menu:-repeat, writeln('1 – Добавить запись в БД'), writeln('2 – Удалить запись из БД'), writeln('3 – Найти маршрут'), writeln('4 – Выход'),nl, write('Введите Ваш выбор: (1-4) '), read(X), nl, X<5, process(X),nl, X=4,!. process(4). ... ... process(1).
Добавлено через 4 часа 53 минутыНе обязательно использовать мою базу. Мне хотя бы нужен пример, и знать в правильном ли направлении я мыслю?

Код к задаче: «Определите, на каких маршрутах можно добраться от остановки X до остановки Y - Prolog»

textual
process(1):-writeln('Тип Транспорта:'),
read(Transport),
writeln('Номер маршрута: '),
read(Nomer),
write('Остановки: '), read(Ost),
assertz(information(Transport,Number,[Ost])).

7   голосов, оценка 3.714 из 5


СОХРАНИТЬ ССЫЛКУ