Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Multi, list, find
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
MaxBlack MaxBlack вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.02.2018
По умолчанию Multi, list, find - 11.02.2018, 12:56

Всем привет. В общем, есть такой вопрос. в прологе создаю мультиэлементы(если честно не знаю, как они правильно называются)
prolog Код:
domains
    cardList = unsigned_list.
    i = unsigned.
 
predicates
    comboCard : (cardList [out], id [out]) multi.
 
 
clauses
 
    comboCard([0, 13, 6, 4, 1], 0).
    comboCard([1, 9,14,18, 25], 2).
В дальнейшем, мне необходимо сравнить какой-либо лист, с теми, что у меня уже есть и вывести id этого элемента на экран. как это сделать? помогите, пожалуйста.
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.02.2018, 13:11

Visual Prolog Код:
implement main
   open core, console

class predicates
    comboCard : (unsigned*, unsigned) multi (o,o).

clauses
    comboCard([0, 13, 6, 4, 1], 0).
    comboCard([1, 9,14,18, 25], 2).

   run() :- X = read(),  %читаем число с клавы
        clearInput(),  %очищаем буфер клавы после ввода
        comboCard(XL,Id),    %вызываем очередной comboCard
        X in XL,  % проверяем наличие X в списке XL
        write(Id),  % если есть, то выводим Id
        _ = readchar(),!;
        write("Ничего не найдено"),    %если ни в одном comboCard элемента нет, то выводим сообщение
        _ = readchar().
end implement main
goal
   console::run(main::run).
Ответить с цитированием
Пользователь сказал cпасибо:
MaxBlack (11.02.2018)
  (#3 (permalink)) Старый
MaxBlack MaxBlack вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.02.2018
По умолчанию 11.02.2018, 13:16

Извини, но ты меня не совсем понял. у меня будет не число, которое мы считываем с клавиатуры, а лист из пяти элементов. и вот его нужно будет найти среди все comboCard. и еще сразу такой вопрос. а если мне нужно чтобы только первые 2 совпадали, то в каком формате нужно задать comboCard?
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.02.2018, 14:41

Цитата:
Сообщение от MaxBlack Посмотреть сообщение
лист из пяти элементов
Наверное не лист, а список. Лист в деревьях.
Для ввода списка Вы можете использовать:
Visual Prolog Код:
implement main
   open core, console

class predicates
    comboCard : (unsigned*, unsigned) multi (o,o).

clauses
    comboCard([0, 13, 6, 4, 1], 0).
    comboCard([1, 9,14,18, 25], 2).

   run() :- X = read(),  %читаем число с клавы
        clearInput(),  %очищаем буфер клавы после ввода
        comboCard(XL,Id),    %вызываем очередной comboCard
        X = XL,  % проверяем совпадение списков
        write(Id),  % если есть, то выводим Id
        _ = readchar(),!;
        write("Ничего не найдено"),    %если ни в одном comboCard элемента нет, то выводим сообщение
        _ = readchar().
end implement main
goal
   console::run(main::run).
Ответить с цитированием
  (#5 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.02.2018, 14:44

Цитата:
Сообщение от MaxBlack Посмотреть сообщение
а если мне нужно чтобы только первые 2 совпадали, то в каком формате нужно задать comboCard?
Надо выделить первые два элемента в сравниваемых списках:
Visual Prolog Код:
implement main
   open core, console

class predicates
    comboCard : (unsigned*, unsigned) multi (o,o).

clauses
    comboCard([0, 13, 6, 4, 1], 0).
    comboCard([1, 9,14,18, 25], 2).

   run() :- X = read(),  %читаем число с клавы
        clearInput(),  %очищаем буфер клавы после ввода
        comboCard(Y,Id),    %вызываем очередной comboCard
        X = [A,B|_],
        Y = [A,B|_],  % проверяем равенство первых двух
        write(Id),  % если есть, то выводим Id
        _ = readchar(),!;
        write("Ничего не найдено"),    %если ни в одном comboCard элемента нет, то выводим сообщение
        _ = readchar().
end implement main
goal
   console::run(main::run).
Ответить с цитированием
Ads.
Ads
Ответ

Метки
find , list , multi , prolog

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cant Find DLL R1n0 Библиотека 0 21.12.2011 18:56
multi, перестановка списка BAH--zer Prolog 1 11.11.2011 00:34
Ошибка в программе UXTheme Multi-Patcher 7.0.1 stast Вопросы начинающих программистов 1 14.02.2011 22:47
устоновка dvd super multi nikitin Любые вопросы от новичков 0 01.10.2010 19:17
Чем отличаются приводы DVD-Super Multi от Blu-ray? NITRINO Любые вопросы от новичков 2 11.03.2010 14:19
HP готовит Tablet PC с multi-touch Ledokol Новости 0 19.11.2008 19:55
Multi Edit Green88 Разное 0 08.05.2007 10:44
Multi Edit 9.10 Green88 Софт и программы 1 08.05.2007 10:20
Find внутри другого Find. Не работает? cowboy Visual Basic 6 17.11.2005 19:41
Работа с multi-column в QReport imported_asd C++ Builder 3 14.01.2003 17:54



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов