Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

конец_ответов( Копия),

конкретизация( Копия, Цель), !, % Уже все сказано

fail.

% Попросить пользователя дать (еще) решения

ответпольз( Цель, _, Трасса, Ответ, N) :-

спросить_польз( Цель, Трасса, Ответ, N).

спросить_польз( Цель, Трасса, Ответ, N) :-

можно спросить( Цель, ВнешФормат),

формат( Цель, ВнешФормат, Вопрос, [ ], Перем),

% Получить формат вопроса

спросить( Цель, Вопрос, Перем, Трасса, Ответ, N).

спросить( Цель, Вопрос, Перем, Трасса, Ответ, N) :-

nl,

( Перем = [ ], !, % Сформулировать вопрос

write( 'Это правда: ');

write( 'Есть (еще) решения для :' )),

write( Вопрос), write( '?'),

принять( Ответ1), !, % Ответ1 - да/нет/почему

обработать( Ответ1, Цель, Вопрос, Перем,

Трасса, Ответ, N).

обработать( почему, Цель, Вопрос, Перем,

Трасса, Ответ, N):-

выд_трассу( Трасса),

спросить( Цель, Вопрос, Перем, Трасса, Ответ, N).

обработать( да, Цель,_, Перем, Трасса, правда, N) :-

след_индекс( Инд),

% Получить новый индекс для "сказано"

Инд1 is Инд + 1,

( запрос_перем( Перем),

assertz( сказано( Цель, правда, Инд) );

% Запись решения

копия( Цель, Копия), %

Копирование цели

ответпольз( Цель, Копия, Трасса, Ответ, Инд1) ).

% Есть еще решения?

обработать( нет, Цель, _, _, _, ложь, N) :-

копия( Цель, Копия),

сказано( Копия, правда, _), !,

% 'нет' означает, больше нет решений

assertz( конец_ответов( Цель) ),

% Отметить конец ответов

fail;

след_индекс( Инд),

% Следующий свободный индекс для "сказано"

assertz( сказано( Цель, ложь, Инд) ).

% 'нет' означает нет ни одного решения

формат( Пер, Имя, Имя, Перем, [Пер/Имя | Перем]) :-

var( Пер), !.

формат( Атом, Имя, Атом, Перем, Перем) :-

atomic( Атом), !,

atomic( Имя).

формат( Цель, Форм, Вопрос, Перем0, Перем) :-

Цель =.. [Функтор | Apг1],

Форм =.. [Функтор | Форм1],

формвсе( Apг1, Форм1, Арг2, Перем0, Перем),

Вопрос =.. [Функтор | Арг2].

формвсе( [ ], [ ], [ ], Перем, Перем).

формвсе( [Х | СпХ], [Ф | СпФ], [В | СпВ], Перем0, Перем) :-

формвсе( СпХ, СпФ, СпВ, Перем0, Перем1),

формат( X, Ф, В, Перем1, Перем).

запрос_перем( [ ]).

запрос_перем( [Переменная/Имя | Переменные]) :-

nl, write( Имя), write( '='),

Поделиться:
Популярные книги

Философия. Книга вторая. Просветление экзистенции

Ясперс Карл Теодор
Научно-образовательная:
философия
5.00
рейтинг книги
Философия. Книга вторая. Просветление экзистенции

Неукротимый Бастард. Дилогия

Измайлов Сергей
Неукротимый бастард
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Неукротимый Бастард. Дилогия

Газлайтер. Том 40

Володин Григорий Григорьевич
40. История Телепата
Фантастика:
альтернативная история
аниме
попаданцы
6.00
рейтинг книги
Газлайтер. Том 40

Дагги-тиц

Крапивин Владислав Петрович
Детские:
детские приключения
7.71
рейтинг книги
Дагги-тиц

Весь Дэн Браун в одном томе

Браун Дэн
Детективы:
триллеры
прочие детективы
5.00
рейтинг книги
Весь Дэн Браун в одном томе

Хроники железных драконов

Суэнвик Майкл
Фантастика:
фэнтези
7.25
рейтинг книги
Хроники железных драконов

Неучтенный элемент. Том 11

NikL
11. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 11

Книга 4. Постижение высших миров

Лайтман Михаэль Семенович
Научно-образовательная:
прочая научная литература
религиоведение
5.00
рейтинг книги
Книга 4. Постижение высших миров

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

100 знаменитых отечественных художников

Вагман Илья Яковлевич
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
100 знаменитых отечественных художников

«То было давно… там… в России…»

Коровин Константин Алексеевич
1. Воспоминания, рассказы, письма в двух книгах
Проза:
проза прочее
6.25
рейтинг книги
«То было давно… там… в России…»

СССР

Идиатуллин Шамиль
Фантастика:
социально-философская фантастика
5.50
рейтинг книги
СССР

Золото Вильгельма

Искандер Фазиль Абдулович
Козы и Шекспир
Проза:
современная проза
5.00
рейтинг книги
Золото Вильгельма

Worm

Дж Мак Крей
Фантастика:
боевая фантастика
киберпанк
6.25
рейтинг книги
Worm