Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.03.2022
Сообщений: 10
1

Решение логической задачи

05.03.2024, 00:26. Показов 364. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем привет, нужно решить простую логическую задачу на языке prolog.
Условие следующее: На столе лежат фигуры: треугольник, ромб, круг и квадрат. Цвета этих
фигур - зеленый, желтый, синий, красный.
Фигура красного цвета лежит между зеленой и синей, справа от желтой фигуры лежит
ромб, круг лежит правее треугольника и ромба, причем треугольник лежит не с краю и,
наконец, фигура синего цвета не лежит рядом с фигурой желтого цвета.
Какая фигура какого цвета?

Ответ: Квадрат-жёлтый, Ромб - зеленый, Треугольник - красный, Круг - синий.

Пытался сам делать, но не совсем понимаю, как это должно работать.

Из того что у меня получилось, это перечислить факты

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
color(green).
color(yellow).
color(blue).
color(red).
 
figure(triangle).
figure(rhombus).
figure(circle).
figure(square).
 
betweeen(red, green, blue).
 
right_of(rhombus, yellow).
 
right_of(circle, triangle).
right_of(circle, rhombus).
 
not_at_edge(triangle).
 
not_neighbour(blue, yellow).
Буду очень благодарен, если поможете мне в решении данной задачи. Вроде кажется всё очень просто, но не могу сообразить, как это сделать

Добавлено через 2 часа 0 минут
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
neighbors(X, Y, List) :- nextto(X, Y, List).
neighbors(X, Y, List) :- nextto(Y, X, List) .
 
solve :-
   /* Всего 4 фигуры*/
    Position = [_,_,_,_],
    nextto([green, _], [red, _], Position),
    nextto([red, _], [blue, _], Position),
    nextto([yellow, _], [_, romb], Position),
    neighbors([_,circle], [_,triangle], Position),
    neighbors([_,triangle], [_,romb], Position),
    not(neighbors([blue,_], [yellow,_], Position)),
    (nth1(2, Position, [_,triangle]) ; nth1(3, Position, [_,triangle])),
    member([_,square], Position),
    print('Решение: '), 
    print(Position).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2024, 00:26
Ответы с готовыми решениями:

Логическая задача: кто за кем стоит в очереди в кино?
Здравствуйте, есть одна задачка, ни как не могу решить, помогите пожалуйста. В очереди за билетами в кино стоят: Юра, Миша, Володя,...

Решение логической задачи про птиц на Visual Prolog 5.2
Доброго времени суток! Очень нужна помощь в решении задачи. В одном городе живут семь любителей птиц. И фамилии у них птичьи....

[Visual Prolog] Логическая задача: определить национальности студентов
Пожалуйста, помогите решить вот такую логическую задачу на Visual Prolog. Браун, Гриффит, Клеменс и Грин - четверо студентов...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2024, 00:26
Помогаю со студенческими работами здесь

Решение логической задачи на языке Prolog (SWI или GNU)
Здравствуйте, мне нужно решить логическую с использованием Prolog'a, никак не получается решить, помогите, пожалуйста. Заранее благодарен! ...

Найти алгоритм решения логической задачи "кто на чем сидит"
В комнате находятся Коля, Света, Оля. Каждый из них сидит на отдельной мебели (кровать, стул, диван). Известно, что Коля сидит не на стуле...

Решение формально-логической задачи на Lisp
Ребята помогите пожалуйста решить задачу на Lisp. Очень срочно, я вообще не программировала на данном языке. Вот условие задачи - В комнате...

Реализация логической задачи
помогите пожалуйста разработать программу (на лиспе) для логической задачи:cry:: Три миссионера и три каннибала находятся на левом...

Решение логической задачи
Решите следующую задачу (автор - В. Н. Касаткин). Алеша, Боря и Гриша нашли в земле сосуд. Рассматривая удивительную находку, каждый...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru