Поиск в списке структур - Prolog
Формулировка задачи:
Имеется список структур [кл(a,29,3), кл(b,29,3), кл(c, 40, 2)]
Нужно организовать поиск по списку структур по первому параметру(т.е a, b, c) чтобы на выходе получить два оставшихся.
Как это сделать? Не нужно какое то решение на реальном языке, а скорее, логический вид.
Решение задачи: «Поиск в списке структур»
textual
Листинг программы
?- find_struct_by_first([hi,u(wanna),some(a,29,3,hello,7.62,"Cool!"), кл(a,29,3), кл(b,29,3), кл(c, 40, 2)], a, Params). Params = [29, 3, hello, 7.62, "Cool!"] ; Params = [29, 3] ; false.
Объяснение кода листинга программы
- В данном коде используется функция
find_struct_by_first/3, которая выполняет поиск структуры в списке структур по указанному ключу. - Ключ
aсоответствует структуре[hi,u(wanna),some(a,29,3,hello,7.62,Cool!), кл(a,29,3), кл(b,29,3), кл(c, 40, 2)]. - Переменная
Paramsинициализируется списком[29, 3, hello, 7.62,Cool!]. - Функция
find_struct_by_first/3возвращает списокParamsв случае успешного поиска, иначе возвращаетfalse. - В данном случае, функция
find_struct_by_first/3возвращает списокParamsдважды:[29, 3, hello, 7.62,Cool!]и[29, 3]. - После второго возвращения функции
find_struct_by_first/3возвращаетсяfalse.