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

Важно: Отсечение

16.12.2013, 12:26. Показов 1394. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу, которая отобразит все возможные пары между игроками клуба в следующей форме:
tom versus bill
marjory versus annette
Используйте отсечение для гарантии того, например, что tom versus bill и bill versus tom не будут отражены вместе.
Я написал, но препод сказал, что не хватает этого самого отсечения
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PREDICATES
 
    nondeterm spisok_igrokov 
    nondeterm number(symbol,integer)
 
CLAUSES 
  
    spisok_igrokov:-number(I,X), number(K,Y), X>Y, write("  ", I, "        versus       ",K),nl,fail.
    
    number("Svetlana", 1).
    number("Anna", 2).
    number("Fyodor", 3).
    number("Gleb", 4).
    number("Alex", 5).
    number("Peter", 6).
    number("Maria", 7).
    number("Elena", 8).  
GOAL
    write ("     Table of Tournament     "),nl,nl,
    write ("  Player A                  Player B  "),nl,nl,
    spisok_igrokov.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2013, 12:26
Ответы с готовыми решениями:

Отсечение
Написал программу.Все работает.Но решение выводит несколько раз.Вот кусок кода: nondeterm search(list1,string) nondeterm vivod(list) ...

Отсечение
Не как ни могу понять, где тут ставить отсечение Формировать список, состоящий из не более чем N элементов исходного списка ...

Использовать отсечение
Помогите дорешать задачу, незнаю как применить отсечение я новичек Задача:Игроки в некотором теннисном клубе разбиты на три лиги, и могут...

3
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
17.12.2013, 00:16
Да тут препод не прав, как раз правильно сравнивать номера, что бы избежать дублирования пар. Я что-то не могу сообразить, как адекватно реализовать эту задачу с отсечением. Только навороченный вариант получился
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
PREDICATES
 
    nondeterm number(symbol,integer)
    nondeterm next_pair(integer, integer, integer, integer)
    nondeterm between(integer,integer).
    nondeterm next_number(integer,integer).
    nondeterm min_number(integer).
    nondeterm gen(integer,integer,integer,integer).
    
 
CLAUSES 
   
    number("Svetlana", 1).
    number("Anna", 2).
    number("Fyodor", 3).
    number("Gleb", 4).
    number("Alex", 5).
    number("Peter", 6).
    number("Maria", 7).
    number("Elena", 8).  
    
    %esli nomera ne vse chisla ot 1 do N, a mogut bit i intervali
    between(N,M):-number(_,B), B>N, B<M.
    next_number(N,M):-number(_,M),M>N,not(between(N,M)).
    min_number(N):-number(_,N),not(between(0,N)).
    
    
    next_pair(A, B, NewA, Min):-next_number(B,A),!,
        next_number(A, NewA),min_number(Min).
    next_pair(A, B, A, B1):- next_number(B,B1).
    
    gen(0, 0, A, B):-!,min_number(Min), gen(Min,0,A,B).
    gen(A, B, A1, B1):- next_pair(A,B,A1,B1).
    gen(A, B, A2, B2):- next_pair(A,B,A1,B1),gen(A1,B1,A2,B2).
            
GOAL
    write ("     Table of Tournament     "),nl,nl,
    write ("  Player A                  Player B  "),nl,nl,
    gen(0,0, A,B), number(NameA,A), number(NameB,B),
    write("  ", NameA, "        versus       ",NameB),nl,fail ; true.
1
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 18
17.12.2013, 11:38  [ТС]
Вот и я не пойму где и что, если брать этот вариант, то это перебор, множество предикатов, правил; в общем препод у меня ещё тот, понять бы что она хочет))

Добавлено через 1 час 40 минут
А если такой вариант, просто не уверен в его правильности или же целесообразности:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
REDICATES
 
    nondeterm spisok_igrokov 
    nondeterm number(symbol)%,integer)
 
CLAUSES 
    spisok_igrokov:-number(I), number(K), I<K, write("  ", I, "        versus       ",K),nl,fail,!.
    
    number("Svetlana").
    number("Anna").
    number("Fyodor").
    number("Gleb").
    number("Alex").
    number("Peter").
    number("Maria").
    number("Elena").
GOAL
    write ("     Table of Tournament     "),nl,nl,
    write ("  Player A                  Player B  "),nl,nl,
    spisok_igrokov.
Добавлено через 3 минуты
А если такой вариант, просто не уверен в его правильности и целесообразности:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
REDICATES
 
    nondeterm spisok_igrokov 
    nondeterm number(symbol)
 
CLAUSES 
  
    spisok_igrokov:-number(I), number(K), I<K, write("  ", I, "        versus       ",K),nl,fail,!.
    
    number("Svetlana").
    number("Anna").
    number("Fyodor").
    number("Gleb").
    number("Alex").
    number("Peter").
    number("Maria").
    number("Elena").  
GOAL
    write ("     Table of Tournament     "),nl,nl,
    write ("  Player A                  Player B  "),nl,nl,
    spisok_igrokov.
Добавлено через 1 минуту
Ааа, извиняюсь за повторение, инет тупит...
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
17.12.2013, 21:59
Смысле нет, все, что после fail, никогда не будет выполняться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2013, 21:59
Помогаю со студенческими работами здесь

рекурссия, отсечение, списки
Помогите пожалуйста, нужны 5 любых задач по каждой из тем (отсечение, рекурсия, списки) с решением в SWI-Prolog

Как обозначается отсечение
9. Операция отсечения в Прологе обозначается 1 Символом «%» 2 Оператором «сut» 3 Оператором «!» 4 Такой операции не существует

Prolog. Рекурсия и отсечение
Создайте предикат, вычисляющий наибольший общий делитель двух натуральных чисел. Решение: gcd (A, 0, A) :- !. gcd (A, B, A) :- A mod...

Фильтрация списка, используя отсечение.
Уважаемый Грымзик!!! Задача уже встречалась, разделить список на положительные и отрицательные. Тест программы: % +Spisokvhod...

Важно: Рекурсия в Prolog
Напишите программу, которая передаёт ту же информацию, что и следующие факты и предложения для языка Пролог: Найти значение...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru