Трудности в написании программы - Prolog
Формулировка задачи:
Здравствуйте, помогите пожалуйста со следующей проблемой=)
Начинаю программировать на прологе) Разобрался со всеми базовыми вещами, но столкнулся с определённой задачей, реализовать, которую пока не получается=(
Смысл заключается в следующем: даны алгебраические выражения, цифры заменены буквами, а знаки арифметических операций заменены знаками вопроса, надо найти подстановки, которые обратят равенства в верные тождества.
Например: ACHS / DD = NXS HOB ? SS = HXN NXS - DOC = HXN
Подскажите пожалуйста примерный алгоритм, или может сталкивались с чем-то похожим) Буду благодарен любым подсказкам))
Решение задачи: «Трудности в написании программы»
textual
Листинг программы
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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д