Вставка в начало списка нового элемента (SWI-Prolog) - Prolog

  1. SWI-Prolog. Работа со списками. Напишите программу, которая вставит в начало списка новый элемент.


textual

Код к задаче: «Вставка в начало списка нового элемента (SWI-Prolog) - Prolog»

ins(L, X, [X|L]).

СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 4.273 из 5



Похожие ответы
  1. Всем привет! Являюсь новичком, "пытаюсь" понять азы языка, использую SWI-Prolog, поэтому буду крайне признателен за совет. Задача "Напишите предикат p(+L, -S) - истинный тогда и только тогда, когда список S есть циклическая перестановка элементов списка L, например, p([f, g, h, j], [g, h, j, f]) -истина." Моя идея решения простая: определить голову и хвост, переставить голову в хвост. С реализацией проблемы. Во-первых, не могу понять, где в моем коде ошибка:

  1. Задание: расставить в ряд разноцветные многогранники. Условие: 1.Каждая фигра окрашена в один цвет. 2.Каждый многоугольник имеет равное или большее колличество граней в сравнении с предыдущим. 3.Последовательность размещения многоугольников в ряду должна соответствовать последовательности цветов радуги. Возможен пропуск 1-3 цветов. После достижения конца радужного спектра надо вернуться в его начало и продолжить расстановку многоугольников. При этом цвета не могут повторяться. Необходимо реализовать обработку неконкретизированной переменной. (Если в главном меню ввести неконкретизированную переменную, например 'sequence_creator(O,X).' - программа должна выводить: ?- sequence_creator(O,X). O = v1, X = [v1] . ) При вводе неконкретизированной переменной выводит false. Где ошибка и как правильно реализовать данную обработку? Вот код:

  1. Напишите решение предложенной задачи на Прологе.Pascal1 2 3 4 5 6 7 8 9 10 11 program upr;        var i,n:integer;            s:real;        begin          read(n);          i:=1;          while i<=n do begin                        s:=s+1/i; i:=i+1;                        end;          write(s);        end.

  1. Доброго времени суток форумчане. Появилась надобность написать эмулятор предиката retractall() для базы данных, без возможности использовать retract. Самое очевидное - записать в файл все факты, и считать все те, не совпадающие с введенным. И так, первым делом я определил предикаты базы данных:

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

  1. Все время обучения писала программы, состоящие из одних предекатов, но сейчас нужна база данных, пришлось писать блоковую программу. Проблема в том, что ни мой код, ни коды с блоками из интернета попросту не компилятся. Интерпретатор Gnu Prolog, установить Turbo Prolog не могу, не сходится с железом.

  1. написать функцию, вычисляющую количество троек подряд идущих элементов числового списка, в каждой из которых все элементы одинаковы. Например (1 1 3 3 3 3 4 3 4 4 4 2 1 1 1) -> 4.

  1. Всем доброго времени суток! Прошу помощи) Люди добрые, кто понимает SWI Prolog, не могли бы вы прокомментировать код? Очень нужно разобраться. Я не во всех местах понимаю, что происходит И не подскажете как правильно написать запрос? что-то у меня не хочет работать Прога вот этой задачи: На одной улице стоят 4 дома. В каждом из них живет один из 4-х людей: Семен, Николай, Артур и Роман. Каждый из них владеет профессией: Врач, Художник, Егерь, Тренер. Определить кто в каком доме живет и кто какой профессией владеет. Известно, что: Художник живет рядом с тренером Врач живет рядом с Художником Егерь левее врача Тренер не рядом с Егерем Художник правее Семена Роман не тренер Семен рядом с Николаем Артур не рядом с Романом

  1. 1. Воробей, дятел и синица сидели на одной ветке. В каком порядке они сидели, если a. Синица сидела слева от дятла, а воробей слева от синицы b. Дятел сидел слева от синицы и справа от воробья c. Воробей сидел справа от синицы, а дятел справа от воробья. 2. Найти НОК (M, N), если НОК (M,N) = M*N/НОД(M,N)