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

Трудности в написании программы

16.04.2012, 18:59. Показов 1393. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста со следующей проблемой=)
Начинаю программировать на прологе) Разобрался со всеми базовыми вещами, но столкнулся с определённой задачей, реализовать, которую пока не получается=(
Смысл заключается в следующем: даны алгебраические выражения, цифры заменены буквами, а знаки арифметических операций заменены знаками вопроса, надо найти подстановки, которые обратят равенства в верные тождества.
Например: ACHS / DD = NXS HOB ? SS = HXN NXS - DOC = HXN
Подскажите пожалуйста примерный алгоритм, или может сталкивались с чем-то похожим) Буду благодарен любым подсказкам))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2012, 18:59
Ответы с готовыми решениями:

Трудности в написании программы СИ++
Привет всем обитателям форума, уже несколько дней мучаюсь с написанием программы,программа...

Трудности при написании программы
Здравствуйте. Разбирал циклы for, while и do while, принцип их работы я понял, но меня поставила в...

Трудности при написании Морского боя
Пишу курсовик на тему морской бой. в среде VS 2010. проект пишется в Win32. идёт очень плохо по...

Как програмно сменить клавиатуру, или трудности при написании собственного EditText
Доброго времени суток, проблема такая. Я пытаюсь написать свой EditText, т.к. пишу под AndEngine и...

10
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
16.04.2012, 19:49 2
Так ACHS задавать нельзя, это такое же имя переменной, как и из одной буквы. Поэтому числа будут в виде списков.
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
zapolnit_ciframi1([],L,L).
zapolnit_ciframi1([H|Tail],L,L1):-nonvar(H),!,zapolnit_ciframi1(Tail,L,L1).
zapolnit_ciframi1([H|Tail],L,L1):-select(H,L,Temp),zapolnit_ciframi1(Tail,Temp,L1).
 
zapolnit_ciframi([H|Tail],L,L1):-zapolnit_ciframi1([H|Tail],L,L1),H\='0'.
 
zapolnit(A,L,L1):-zapolnit_ciframi(A,L,L1).
zapolnit(V,L,L1):-(V=A+B;V=A-B;V=A*B;V=A/B;V=A?B),
    zapolnit_ciframi(A,L,Temp),zapolnit_ciframi(B,Temp,L1).
 
naiti(A=B,A1=B1):-
    zapolnit(A,['0','1','2','3','4','5','6','7','8','9'],L),zapolnit(B,L,_),
    poschitat(A,A1),poschitat(B,B1),A1=:=B1.
 
poschitat(A,N):-is_list(A),number_chars(N,A).
poschitat(V,A1+B1):-(V=A+B;V=A?B),poschitat(A,A1),poschitat(B,B1).
poschitat(V,A1-B1):-(V=A-B;V=A?B),poschitat(A,A1),poschitat(B,B1).
poschitat(V,A1*B1):-(V=A*B;V=A?B),poschitat(A,A1),poschitat(B,B1).
poschitat(V,A1/B1):-(V=A/B;V=A?B),poschitat(A,A1),poschitat(B,B1).
?- naiti([H,O,B]?[S,S]=[H,X,N],A).
H = '1',
O = '0',
B = '4',
S = '8',
X = '9',
N = '2',
A = (104+88=192)
1
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 6
18.04.2012, 13:44  [ТС] 3
Грымзик, Спасибо, огромное) Почти всё понятно) Но есть два вопроса)
1. Почему-то ругается на строчки с операцией '?' (V=A?B).Думал может операция не определена, попробывал переопределить через op(.....'?'), на что компилятор сказал, что функция статическая. Подскажите пожалуйста как быть? Ошибка слдующая "Syntax error:Operator expected"
2.В чем смысл этих сопоставлений A=B,A1=B1 в цели naiti?
Огромное спасибо, ещё раз=)
0
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
18.04.2012, 14:29 4
Что за компилятор у Вас?

Цитата Сообщение от ALeXUI Посмотреть сообщение
В чем смысл этих сопоставлений A=B,A1=B1 в цели naiti?
Ну в А=В строки храняться еще в виде [...]?[...]=[...], а в А1=В1 все ? заменяются уже на арифметические операции, а списки на числа.
1
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 6
18.04.2012, 15:26  [ТС] 5
Компилятор SWI-Prolog (Multi-threaded, Version 5.6.45)
0
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
18.04.2012, 16:04 6
У меня 5.10.5 и на ? не жалуется.
0
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 6
18.04.2012, 17:26  [ТС] 7
Если удалить все условия типа (V=A?B), то ошибок нету, но тогда теряется смысл программы.
А если оставляю как есть, то компилятор выдаёт следующее:
3 ?- consult('/home/nurgle/lab1.pl').

ERROR: /home/nurgle/lab1.pl:8:0: Syntax error: Operator expected
ERROR: /home/nurgle/lab1.pl:16:0: Syntax error: Operator expected
ERROR: /home/nurgle/lab1.pl:17:0: Syntax error: Operator expected
ERROR: /home/nurgle/lab1.pl:18:0: Syntax error: Operator expected
ERROR: /home/nurgle/lab1.pl:19:0: Syntax error: Operator expected

% /home/nurgle/lab1.pl compiled 0.00 sec, 2,804 bytes
Никак не могу понять из-за чего так происходит
0
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
18.04.2012, 17:34 8
Попробовали более новую версию компилятора?
1
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 6
18.04.2012, 17:57  [ТС] 9
Походу, тут дело не в версии, при компиляции под windows, даже на более низких версиях пролога, компиляция проходит успешно, а при компиляции на Unix, появляются ошибки. Возможно нужно как-то изменить оператор "?". Пока не моу понять как...
0
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
18.04.2012, 23:36 10
Тогда с помощью op создайте собственный оператор, и вместо ? используйте его.
0
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 6
19.04.2012, 23:05  [ТС] 11
Спасиба, Вам большое за помощь) Хотел сразу так сделать, но не получалось, забывал перд op(...) поставить двоеточие тире =)
0
19.04.2012, 23:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2012, 23:05
Помогаю со студенческими работами здесь

Трудности при написании чата. Покажите простой пример чата на 2 человека.
Ребят, уже с ума сошел, но никак не сделаю нормальный чат в PHP. Я делаю так: есть textatea и куда...

написании программы мини программы
Люди плиз кто понимает в си. Через 3 часа контрольная 1 курс. Помогите плиз. Скинь свою ссылку вк....

Не получается в написании программы
Задали написать программу по формуле Q=q*(abc/1000)*6,7V*sqrt(D)*sqrt(G/V). Q-производительность,...

Помощь в написании программы
Составить программу, осуществляющую поиск заданного элемента по алгоритму бинарного поиска в...


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

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