Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
havier
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 18
1

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

16.12.2013, 12:26. Просмотров 475. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2013, 12:26
Ответы с готовыми решениями:

Отсечение
Написал программу.Все работает.Но решение выводит несколько раз.Вот кусок кода: nondeterm...

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

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

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

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

3
Грымзик
2482 / 1458 / 35
Регистрация: 14.09.2009
Сообщений: 2,742
17.12.2013, 00:16 2
Да тут препод не прав, как раз правильно сравнивать номера, что бы избежать дублирования пар. Я что-то не могу сообразить, как адекватно реализовать эту задачу с отсечением. Только навороченный вариант получился
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
havier
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 18
17.12.2013, 11:38  [ТС] 3
Вот и я не пойму где и что, если брать этот вариант, то это перебор, множество предикатов, правил; в общем препод у меня ещё тот, понять бы что она хочет))

Добавлено через 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
Грымзик
2482 / 1458 / 35
Регистрация: 14.09.2009
Сообщений: 2,742
17.12.2013, 21:59 4
Смысле нет, все, что после fail, никогда не будет выполняться.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 21:59

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru