Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 6
1

Задачка lights out

14.05.2012, 23:40. Показов 664. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Дали задание решить на strawberry prolog задачку ligths out, погугли, нашел http://www.perlmonks.org/?show... _id=940327 Но там код для GNU-Prolog, на strawberry не запускался, ругался на две решетки подряд, заменил их на xor, программка стала запускаться, но в ответе выдает просто No. Подскажите, пожалуйста, в чем ошибка?

Сам код:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
lights_on(Len, W, Sol) :-
        length(Sol, Len),
        fd_domain_bool(Sol),
        make_constraints(0, Len, W, Sol),
        fd_labeling(Sol).
 
print_sol(W, Sol) :-
        length(L, W),
        (   append(L, T, Sol)
        ->  write(L),
            nl,
            print_sol(W, T)
        ;   write(Sol),
            nl ).
        
 
make_constraints(Ix, Len, W, Sol) :-
        (   Ix == Len
        ->  true
        ;   make_constraint(Ix, W, Sol),
            Ix1 is Ix + 1,
            make_constraints(Ix1, Len, W, Sol)).
 
nth0(Ix, L, Var) :-
        Ix1 is Ix + 1,
        nth(Ix1, L, Var).
 
up(Ix, W, Sol, Var) :-
        Ix1 is Ix - W,
        (   nth0(Ix1, Sol, Var)
        ->  true
        ;   Var = 0 ).
 
down(Ix, W, Sol, Var) :-
        Ix1 is Ix + W,
        (   nth0(Ix1, Sol, Var)
        ->  true
        ;   Var = 0 ).
 
left(Ix, W, Sol, Var) :-
        Ix1 is Ix - 1,
        (   Ix1 // W =:= Ix // W,
            nth0(Ix1, Sol, Var)
        ->  true
        ;   Var = 0).
 
right(Ix, W, Sol, Var) :-
        Ix1 is Ix + 1,
        (   Ix1 // W =:= Ix // W,
            nth0(Ix1, Sol, Var)
        ->  true
        ;   Var = 0).
 
make_constraint(Ix, W, Sol) :-
        nth0(Ix, Sol, This),
        up(Ix, W, Sol, Up),
        down(Ix, W, Sol, Down),
        right(Ix, W, Sol, Right),
        left(Ix, W, Sol, Left),
        This xor  Up xor Down xor Right xor Left.
 
test :-
        W = 14,
        H = 14,
        Missing = 7,
        Len is W * H - Missing,
        lights_on(Len, W, Sol),
        print_sol(W, Sol).
 
?-test.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2012, 23:40
Ответы с готовыми решениями:

Задачка с массивом и задачка с формулами Ньютона и Лагранжа
Прошу помочь решить две задачи

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

Задачка по СИ
Написать программу, в которой пользователь может выбрать, какое из перечисленных действий...

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

0
14.05.2012, 23:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2012, 23:40
Помогаю со студенческими работами здесь

Задачка
Добрый вечер, товарищи! Если есть знающие люди, не откажите в помощи. Сам уже не в силах....

Задачка с IP
Объясните пожалуйста,как можно зная IP-адрес сети (121.68.0.0) написать маску и такую, чтобы в этой...

задачка c++
дан текстоавй файл включающий строки, содержащие цифры 1,3,4 5 8,2,3,5,8 2,7 написать...

Задачка
По схеме случайной бесповторной выборки из 1500 сотрудников отобрано 100 человек, которым был...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru