Cписок: Предикат: del2(L1, L2). Удаляет из исходного списка L1 каждый второй элемент, результирующий список L2. - Prolog

Узнай цену своей работы

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

Помогите решить: Предикат: del2(L1, L2). Удаляет из исходного списка L1 каждый второй элемент, результирующий список L2. Пример: Goal: del2([a,b,c,d,e], L2). L2=["a", "c", "e"] 1 Solution
никто не знает?

Решение задачи: «Cписок: Предикат: del2(L1, L2). Удаляет из исходного списка L1 каждый второй элемент, результирующий список L2.»

textual
Листинг программы
domains
trace
 
    sym_list = symbol*
    int_list = integer*
    
predicates
    del2(sym_list, sym_list).
    del2(int_list, int_list).
    
clauses
 
del2([], []). 
del2([X], [X]).
del2([X,_|Xs], [X|Ys]) :- del2(Xs, Ys).
 
 
goal
trace(on),
del2([a,b,c,d,e], L2),
write(L2).

Объяснение кода листинга программы

В этом коде используется язык программирования Prolog. Целью программы является удаление каждого второго элемента из исходного списка, создание нового списка без четных элементов. В начале кода определены два домена:

  1. sym_list - список символов.
  2. int_list - список целых чисел. Затем определены два предиката:
  3. del2 - удаляет каждый второй элемент из списка.
  4. goal - указывает на цель выполнения программы. После этого определены два утверждения:
  5. del2([], []) - если исходный список пустой, то результатом будет пустой список.
  6. del2([X], [X]) - если в исходном списке только один элемент, то этот элемент сохраняется в результирующем списке. Затем определено третье утверждение:
  7. del2([X,_|Xs], [X|Ys]) :- del2(Xs, Ys). - если в исходном списке более одного элемента, то в результирующем списке сначала указывается первый элемент, а затем вызывается процедура del2 для оставшихся элементов. В конце кода указывается цель выполнения программы:
  8. trace(on), - включить трассировку.
  9. del2([a,b,c,d,e], L2), - удаление каждого второго элемента из списка [a,b,c,d,e].
  10. write(L2) - вывод результирующего списка L2.

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы