Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Ребусы о символьном сложении чисел
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
лелечка лелечка вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2005
По умолчанию Ребусы о символьном сложении чисел - 19.10.2005, 01:34

Люди, кто-нибудь помогите решить задачку, очень нужно.

Сложение 2-х чисел столбиком.

Несколько или все цифры зашифрованы символами. Требуется определить каким символом, какя цифра зашифрована. Один и тот же символ не может шифровать разные цифры одновременно. Одна и та же цифра не может быть зашифрована разными символами.

Пример:

DONALD 526485
+ +
GERALD 197485
_______________ _________
ROBERT 723970

Заранее благодарна, тому кто поможет.
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 19.10.2005, 14:16

Ребусы о сложении чисел есть на этом форуме. Ищите.
Ответить с цитированием
  (#3 (permalink)) Старый
лелечка лелечка вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2005
По умолчанию Сложение ребусов - 22.10.2005, 02:32

Уточните, пожалуйста, как может называться тема по сложению ребусов. Я очень тшательно просматривала весь форум. К сожалению, подобной задачки, даже близко похожей на нее не встретила. Подскажите, пожалуйста.
Ответить с цитированием
  (#4 (permalink)) Старый
Ira Ira вне форума
Новичок
 
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.11.2002
По умолчанию Re: Сложение ребусов - 22.10.2005, 11:08

Цитата:
Originally posted by лелечка
[b]Уточните, пожалуйста, как может называться тема по сложению ребусов. Я очень тшательно просматривала весь форум. К сожалению, подобной задачки, даже близко похожей на нее не встретила. Подскажите, пожалуйста.
Цитируя Винитарха:

Код:
global database
цифра(Integer)
predicates
nondeterm шарада 
goal
шарада.

clauses
цифра(1).цифра(2).цифра(3).цифра(4).цифра(5).
цифра(6).цифра(7).цифра(8).цифра(9).цифра(0).
шарада:-
        цифра(S),
        цифра(E),E<>S,
    цифра(N),N<>S,N<>E,
    цифра(D),D<>N,D<>S,D<>E,
    цифра(M),M<>D,M<>N,M<>S,M<>E,
    цифра(O),O<>M,O<>D,O<>N,O<>S,O<>E,
    цифра(R),R<>O,R<>M,R<>D,R<>N,R<>S,R<>E,
    Число1=1000*S+100*E+10*N+D,
    Число2=1000*M+100*O+10*R+E,
    Сумма=Число1+Число2,str_int(Сумма1,Сумма),
    frontstr(1,Сумма1,M1,Остаток1),str_int(M1,M),
    frontstr(1,Остаток1,O1,Остаток2),str_int(O1,O),
    frontstr(1,Остаток2,N1,Остаток3),str_int(N1,N),
    frontstr(1,Остаток3,E1,Y1),
    str_int(E1,E),str_int(Y1,Y),
    Y<>R,Y<>O,Y<>M,Y<>D,Y<>N,Y<>E,Y<>S,
    write(Число1,"+",Число2,"=",Сумма),nl,fail.
или здесь надо "подтворить"

Код:
nowarnings

DOMAINS
spis=integer*
N1=integer*
N2=integer*
N=integer*
Str=integer

predicates            /* утверждения */
sum(spis,spis,spis). 
sum1(spis,spis,spis,integer,integer,spis,spis).
sumnum(integer,integer,integer,integer,integer,spis,spis).
udel(integer,spis,spis)    
rebus1(N1,N2,N).
rebus2(spis,spis,spis).
rebus3(N1,N2,N).
prin(spis)

clauses                  /* предложения */

sum(N1,N2,N):-
  sum1(N1,N2,N,0,0,[0,1,2,3,4,5,6,7,8,9],_).
  
sum1([],[],[],0,0,Num,Num).
sum1([D1|N1],[D2|N2],[D|N],C1,C,Num1,Num):-
  sum1(N1,N2,N,C1,C2,Num1,Num2),
  sumnum(D1,D2,C2,D,C,Num2,Num).
sumnum(D1,D2,C1,D,C,Num1,Num):-
  udel(D1,Num1,Num2),
  udel(D2,Num2,Num3),
  udel(D,Num3,Num),
  S = D1+D2+C1,
  D = S mod 10,
  C = S div 10.
  
udel(A,L,L):-
  bound(A),!.
udel(A,[A|L],L).
udel(A,[B|L],[B|L1]):-
  udel(A,L,L1).
prin([X|Xvost]):-
  write(X),
  prin(Xvost).

 
 
rebus1([D,O,N,A,L,D],
       [G,E,R,A,L,D],
       [R,O,B,E,R,T]).       
rebus2([0,S,E,N,D],
       [0,M,O,R,E],
       [M,O,N,E,Y]).  
rebus3([0,R,E,W,I],[0,E,S,L,I],[S,I,L,E,N]).
                  
GOAL
 rebus2(N1,N2,N),sum(N1,N2,N),
% prin(N1),nl,nl,
    
 write(N1),nl,
 write(N2),nl,
 write(N),nl,nl,
 readln(Str).
Ответить с цитированием
  (#5 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 22.10.2005, 21:03

Шарада о сложении:
S E N D + M O R E = M O N E Y

Код:
%------------Вариант с БД для начинающих---------------
global database
цифра(Integer)
predicates
nondeterm шарада
goal
шарада.
clauses
цифра(1).цифра(2).цифра(3).цифра(4).
цифра(5).цифра(6).цифра(7).цифра(8).цифра(9).цифра(0).
шарада:-цифра(S),цифра(E),E<>S,
цифра(N),N<>S,N<>E,
цифра(D),D<>N,D<>S,D<>E,
цифра(M),M<>D,M<>N,M<>S,M<>E,
цифра(O),O<>M,O<>D,O<>N,O<>S,O<>E,
цифра(R),R<>O,R<>M,R<>D,R<>N,R<>S,R<>E,
цифра(Y),Y<>R,Y<>O,Y<>M,Y<>D,Y<>N,Y<>S,Y<>E,
Число1=1000*S+100*E+10*N+D,
Число2=1000*M+100*O+10*R+E,
Сумма=Число1+Число2,str_int(Слово,Сумма),
frontstr(1,Слово,М_,Слово1),str_int(М_,M),
frontstr(1,Слово1,О_,Слово2),str_int(О_,O),
frontstr(1,Слово2,N_,Слово3),str_int(N_,N),
frontstr(1,Слово3,E_,Буква_Y),str_int(E_,E),str_int(Y_,Y),
write(Число1,"+",Число2,"=",Сумма),nl.
Код:
%-----------------------Вариант для профи--------------------
Domains
Ы=Integer*
predicates
nondeterm шарада
nondeterm цифра(Ы,Integer,Ы)
goal шарада.
clauses
цифра([Цифра|Цифры],Цифра,Цифры).
цифра([Цифра1|Цифры],Цифра,[Цифра1|Остаток]):-цифра(Цифры,Цифра,Остаток).
шарада:-цифра([1,2,3,4,5,6,7,8,9,0],S,Остаток1),цифра(Остаток1,E,Остаток2),
цифра(Остаток2,N,Остаток3),цифра(Остаток3,D,Остаток4),
цифра(Остаток4,M,Остаток5),цифра(Остаток5,O,Остаток6),
цифра(Остаток6,R,Остаток7),цифра(Остаток7,Y,_),
Число1=1000*S+100*E+10*N+D,
Число2=1000*M+100*O+10*R+E,
Сумма=Число1+Число2,
format(Слово,"%u%u%u%u%u",M,O,N,E,Y),
str_int(Слово,Сумма),
write(Число1,"+",Число2,"=",Сумма),nl,fail.
шарада.
Код:
%-----------------------Вариант для экспертов--------------------
Domains
Ы=Integer*
predicates
nondeterm шарада
nondeterm цифра(Ы,Integer,Ы)
тест(Integer,Integer,Integer,Integer,Integer)
goal шарада.
clauses
шарада:-цифра([1,2,3,4,5,6,7,8,9,0],D,Остаток1),цифра(Остаток1,E,Остаток2),
цифра(Остаток2,Y,Остаток3),тест(Y,D,E,0,P1),
цифра(Остаток3,N,Остаток4),цифра(Остаток4,R,Остаток5),тест(E,N,R,P1,P2),
цифра(Остаток5,O,Остаток6),тест(N,E,O,P2,P3),
цифра(Остаток6,S,Остаток7),цифра(Остаток7,M,_),тест(O,S,M,P3,M),
write(S,E,N,D,"+",M,O,R,E,"=",M,O,N,E,Y),nl,fail.
шарада.
цифра([Цифра|Цифры],Цифра,Цифры).
цифра([Цифра1|Цифры],Цифра,[Цифра1|Остаток]):-цифра(Цифры,Цифра,Остаток).
тест(X,Y,Z,P,0):-X=Y+Z+P,!.
тест(X,Y,Z,P,1):-X=Y+Z+P-10.
Внимание :!:
Код:
%!!!!!!!!!!!!!!!!!!  Вариант для любых трех слов   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!    Специально от Винитарха     !!!!!!!!!!!!!!!!!!!!!

Domains
IL = Integer*
Пара = п(String,Integer)
Пары = Пара*
predicates
nondeterm шарада(IL,Integer,Пары,String,String,String)
nondeterm взять(IL,Пары,String,Integer,String,Пары,IL)
послед(String,String,String)
nondeterm униф(String,Пары,Integer)
nondeterm цифра(IL,Integer,IL)
сумма(Integer,Integer,Integer,Integer,Integer)
goal 
шарада([1,2,3,4,5,6,7,8,9,0],0,[],"SEND","MORE","MONEY"), fail.
clauses
шарада(_,0,Униф,"","",""):-write(Униф),nl.
шарада(Цифры,Перенос,Униф,Слово1,Слово2,Слово3):-Слово3<>"",
   взять(Цифры,Униф,Слово1,Ц1,С1,Униф1,Цифры1),
   взять(Цифры1,Униф1,Слово2,Ц2,С2,Униф2,Цифры2),
   взять(Цифры2,Униф2,Слово3,Ц3,С3,Униф3,Цифры3),
   сумма(Перенос,Ц1,Ц2,Ц3,Перенос1),
   шарада(Цифры3,Перенос1,Униф3,С1,С2,С3).

взять(Цифры,Униф,Слово,Ц,Слово1,Униф,Цифры):-
   послед(Слово,Б,Слово1),униф(Б,Униф,Ц),!.
взять(Цифры,Униф,Слово,Ц,Слово1,[п(Б,Ц)|Униф],Цифры1):-
   послед(Слово,Б,Слово1),цифра(Цифры,Ц,Цифры1).
взять(Цифры,Униф,"",0,"",Униф,Цифры):-!.

послед(Слово,Б,Слово1):-str_len(Слово,Длина),Длина>0,
   substring(Слово,Длина,1,Б),concat(Слово1,Б,Слово).

униф(Б,[п(Б,Ц)|_],Ц):-!.
униф(Б,[_|Униф],Ц):-униф(Б,Униф,Ц).

цифра([Цифра|Цифры],Цифра,Цифры).
цифра([Цифра1|Цифры],Цифра,[Цифра1|Остаток]):-цифра(Цифры,Цифра,Остаток).

сумма(Перенос,Ц1,Ц2,Ц3,0):-Перенос+Ц1+Ц2=Ц3,!.
сумма(Перенос,Ц1,Ц2,Ц3,1):-Перенос+Ц1+Ц2=Ц3+10.
В последней проге первый аргумент в цели - список разрешённых для использования цифр.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 22.10.2005, 21:10

Цитата:
Уточните, пожалуйста, как может называться тема по сложению ребусов. Я очень тшательно просматривала весь форум. К сожалению, подобной задачки, даже близко похожей на нее не встретила. Подскажите, пожалуйста.
Тема так и называется: "Ребус". Вот ссылка:
http://www.hardforum.ru/t51662
Там еще есть универсальный метод решения таких ребусов Mnior'а.

А это мой вариант для всех ребусов такого типа - длинный, правда, но числа так и задаются словами-строками и могут быть разной длины.
Код:
domains
il=integer*
cl=char*
соотв=ц(char,integer)
стек=соотв*
predicates
слово_спис(string,cl,cl)
nondeterm взять(integer,char,il,il,стек,стек)
nondeterm найти(cl,cl,cl,стек,стек,il,integer)
принадл(соотв,стек)
число(cl,стек,integer)
nondeterm ребус(string,string,string,integer,integer,integer,стек)
goal
S1="Donald",S2="Gerald",S3="Robert",
%S1="send",S2="more",S3="money",
ребус(S1,S2,S3,Int1,Int2,Int3,Исп),
write(S1," + ",S2," = ",S3,"n",Int1," + ",Int2," = ",Int3),nl,nl.
clauses
ребус(SC1,SC2,SC3,Int1,Int2,Int3,Res):- 
    upper_lower(SC1,S1),upper_lower(SC2,S2),upper_lower(SC3,S3),
    слово_спис(S1,[],N1),слово_спис(S2,[],N2),слово_спис(S3,[],N3),
    найти(N1,N2,N3,[],Res,[1,2,3,4,5,6,7,8,9,0],0),
    число(N1,Res,Int1),число(N2,Res,Int2),число(N3,Res,Int3).

слово_спис(S,L,Res):- frontchar(S,C,S1),!,слово_спис(S1,[C|L],Res).
слово_спис(_,Res,Res).

найти([C1|L1],[C2|L2],[C3|L3],Исп,Res,Ц,P):- взять(X,C1,Ц,Ц1,Исп,Исп1),
    взять(Y,C2,Ц1,Ц2,Исп1,Исп2),взять(Z,C3,Ц2,Ц3,Исп2,Исп3),
    K=X+Y+P,K mod 10=Z,P1=K div 10,найти(L1,L2,L3,Исп3,Res,Ц3,P1).
найти([],[C2|L2],[C3|L3],Исп,Res,Ц,P):- взять(Y,C2,Ц,Ц1,Исп,Исп1),
    взять(Z,C3,Ц1,Ц2,Исп1,Исп2),K=Y+P,K mod 10=Z,P1=K div 10,
    найти([],L2,L3,Исп2,Res,Ц2,P1).
найти([C1|L1],[],[C3|L3],Исп,Res,Ц,P):- взять(X,C1,Ц,Ц1,Исп,Исп1),
    взять(Z,C3,Ц1,Ц2,Исп1,Исп2),K=X+P,K mod 10=Z,P1=K div 10,
    найти(L1,[],L3,Исп2,Res,Ц2,P1).
найти([],[],[C3],Исп,Res,Ц,C):- взять(C,C3,Ц,_,Исп,Res),C>0.
найти([],[],[],Res,Res,_,0).

взять(X,C,Ц,Ц,Исп,Исп):- принадл(ц(C,X),Исп),!.
взять(X,C,[X|Ц],Ц,Исп,[ц(C,X)|Исп]):- not(принадл(ц(C,_),Исп)).
взять(X,C,[Y|Ц],[Y|Ц1],Исп,Исп1):- взять(X,C,Ц,Ц1,Исп,Исп1).

принадл(A,[A|_]):- !.
принадл(A,[_|L]):- принадл(A,L).

число([C],Исп,X):- принадл(ц(C,X),Исп),X>0,!.
число([C|L],Исп,Res):- число(L,Исп,Res1),принадл(ц(C,X),Исп),Res=Res1*10+X.
Ответ выдает так (но вывод всегда можно улучшить):
Код:
Donald + Gerald = Robert
526485 + 197485 = 723970
Ответить с цитированием
  (#7 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 22.10.2005, 21:22

Винитарх!
Подправь чуть-чуть свою последнюю прогу, пожалуйста!
А то она выдает кучу решений для того ребуса, а оно должно быть одно.

Но она, конечно, намного лучше моей, т.к. более универсальная.
Ответить с цитированием
  (#8 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 22.10.2005, 22:10

Изменил всего один знак: Перенос при сложении старших разрядов должен =0, а у меня стояла свободная переменная.
Благодарствую.
Ответ такой, каков и должен быть:
526485 + 197485 = 723970

Кстати, в этой проге можно задавать 16-ричный алфавит, да и вообще - какой угодно! Прога принципиально работает в системах счисления с любым основанием!
Ответить с цитированием
  (#9 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 23.10.2005, 19:08

Вот эти совершенно классные (!) программы Винитарха еще раз (с маленькими упрощениями).
Винитарх, а в последнем случае я немного дополнила код для предиката взять, чтобы первая цифра всегда была ненулевой.
Код:
%------------Вариант с БД для начинающих--------------- 
global database
цифра(Integer)
predicates
nondeterm шарада
goal
шарада.
clauses
цифра(1).цифра(2).цифра(3).цифра(4).
цифра(5).цифра(6).цифра(7).цифра(8).цифра(9).цифра(0).

шарада:-цифра(S),S>0,цифра(E),E<>S,
    цифра(N),N<>S,N<>E,
    цифра(D),D<>N,D<>S,D<>E,
    цифра(M),M>0,M<>D,M<>N,M<>S,M<>E,
    цифра(O),O<>M,O<>D,O<>N,O<>S,O<>E,
    цифра(R),R<>O,R<>M,R<>D,R<>N,R<>S,R<>E,
    цифра(Y),Y<>R,Y<>O,Y<>M,Y<>D,Y<>N,Y<>S,Y<>E,
    Число1=1000*S+100*E+10*N+D,
    Число2=1000*M+100*O+10*R+E,
    Сумма=10000*M+1000*O+100*N+10*E+Y,
    Сумма=Число1+Число2,
    write(Число1,"+",Число2,"=",Сумма),nl.
Код:
%-----------------------Вариант для профи--------------------
Domains
Ы=Integer*
predicates
nondeterm шарада
nondeterm цифра(Ы,Integer,Ы)
goal шарада.
clauses
цифра([Цифра|Цифры],Цифра,Цифры).
цифра([Цифра1|Цифры],Цифра,[Цифра1|Остаток]):- цифра(Цифры,Цифра,Остаток).

шарада:- цифра([1,2,3,4,5,6,7,8,9,0],S,Остаток1),S>0,цифра(Остаток1,E,Остаток2),
    цифра(Остаток2,N,Остаток3),цифра(Остаток3,D,Остаток4),
    цифра(Остаток4,M,Остаток5),M>0,цифра(Остаток5,O,Остаток6),
    цифра(Остаток6,R,Остаток7),цифра(Остаток7,Y,_),
    Число1=1000*S+100*E+10*N+D,
    Число2=1000*M+100*O+10*R+E,
    Сумма=10000*M+1000*O+100*N+10*E+Y,
    Сумма=Число1+Число2,
    write(Число1,"+",Число2,"=",Сумма),nl,fail.
шарада.
Код:
%-----------------------Вариант для экспертов--------------------
Domains
Ы=Integer*
predicates
nondeterm шарада
nondeterm цифра(Ы,Integer,Ы)
тест(Integer,Integer,Integer,Integer,Integer)
goal шарада.
clauses
шарада:- цифра([1,2,3,4,5,6,7,8,9,0],D,Остаток1),цифра(Остаток1,E,Остаток2),
    цифра(Остаток2,Y,Остаток3),тест(Y,D,E,0,P1),
    цифра(Остаток3,N,Остаток4),цифра(Остаток4,R,Остаток5),тест(E,N,R,P1,P2),
    цифра(Остаток5,O,Остаток6),тест(N,E,O,P2,P3),
    цифра(Остаток6,S,Остаток7),S>0,цифра(Остаток7,M,_),M>0,тест(O,S,M,P3,M),
    write(S,E,N,D,"+",M,O,R,E,"=",M,O,N,E,Y),nl,fail.
шарада.

цифра([Цифра|Цифры],Цифра,Цифры).
цифра([Цифра1|Цифры],Цифра,[Цифра1|Остаток]):-цифра(Цифры,Цифра,Остаток).

тест(X,Y,Z,P,0):-X=Y+Z+P,!.
тест(X,Y,Z,P,1):-X=Y+Z+P-10.
Код:
%!!!!!!!!!!!!!!!!!!  Вариант для любых трех слов   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!    Специально от Винитарха     !!!!!!!!!!!!!!!!!!!!!
Domains
IL = Integer*
Пара = п(String,Integer)
Пары = Пара*
predicates
nondeterm шарада(IL,Integer,Пары,String,String,String)
nondeterm взять(IL,Пары,String,Integer,String,Пары,IL)
послед(String,String,String)
nondeterm униф(String,Пары,Integer)
nondeterm цифра(IL,Integer,IL)
сумма(Integer,Integer,Integer,Integer,Integer)
goal
шарада([1,2,3,4,5,6,7,8,9,0],0,[],"SEND","MORE","MONEY"),fail.
%шарада([1,2,3,4,5,6,7,8,9,0],0,[],"DONALD","GERALD","ROBERT"), fail.
clauses
шарада(_,0,Униф,"","",""):- write(Униф),nl.
шарада(Цифры,Перенос,Униф,Слово1,Слово2,Слово3):-Слово3<>"",
    взять(Цифры,Униф,Слово1,Ц1,С1,Униф1,Цифры1),
    взять(Цифры1,Униф1,Слово2,Ц2,С2,Униф2,Цифры2),
    взять(Цифры2,Униф2,Слово3,Ц3,С3,Униф3,Цифры3),
    сумма(Перенос,Ц1,Ц2,Ц3,Перенос1),
    шарада(Цифры3,Перенос1,Униф3,С1,С2,С3).

взять(Цифры,Униф,Слово,Ц,"",Униф,Цифры):-  % Слово=Б
    str_char(Слово,_),униф(Слово,Униф,Ц),Ц>0,!.
взять(Цифры,Униф,Слово,Ц,Слово1,Униф,Цифры):-
    послед(Слово,Б,Слово1),not(Слово1=""),униф(Б,Униф,Ц),!.
взять(Цифры,Униф,Слово,Ц,Слово1,[п(Б,Ц)|Униф],Цифры1):-
    послед(Слово,Б,Слово1),цифра(Цифры,Ц,Цифры1).
взять(Цифры,Униф,"",0,"",Униф,Цифры):- !.

послед(Слово,Б,Слово1):-str_len(Слово,Длина),Длина>0,
    substring(Слово,Длина,1,Б),concat(Слово1,Б,Слово).

униф(Б,[п(Б,Ц)|_],Ц):- !.
униф(Б,[_|Униф],Ц):-униф(Б,Униф,Ц).

цифра([Цифра|Цифры],Цифра,Цифры).
цифра([Цифра1|Цифры],Цифра,[Цифра1|Остаток]):- цифра(Цифры,Цифра,Остаток).

сумма(Перенос,Ц1,Ц2,Ц3,0):- Перенос+Ц1+Ц2=Ц3,!.
сумма(Перенос,Ц1,Ц2,Ц3,1):- Перенос+Ц1+Ц2=Ц3+10.
Ответить с цитированием
  (#10 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,862
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 24.10.2005, 01:18

Цитата:
первая цифра всегда была ненулевой.
А почему? Ноль - это нормальная цифра. И когда ноль подставляется в старший разряд какого-то слагаемого, то равенство то всё равно выполняется.
Ответить с цитированием
  (#11 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 24.10.2005, 14:52

Все верно. В принципе, можно ставить и такие задачи. Но обычно такие ребусы составляются для натуральных чисел, которые не могут начинаться с нулевой цифры.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательноть n чисел | C# sanchosss Задания за деньги 3 19.05.2012 19:13
Ребусы, криптография, => Паскаль Panicka Pascal 1 01.04.2012 18:24
Нужно разобрать программу для перевода списка арабских чисел в список римских чисел. RuslanTM Prolog 2 18.12.2011 17:04
интервал чисел TimoLLIa Pascal 2 14.10.2011 22:20
Из множества целых чисел 1..100 выделить множество чисел, являющихся, в свою очере Tormiz61 Pascal 4 18.06.2011 15:07
Найти НОК последовательности чисел hazardhz Haskell 4 08.04.2011 10:40
Представление вещественных чисел a_lexsandr Assembler 0 16.11.2010 16:56
Сумма и произв 2х чисел FeeL Prolog 1 03.10.2010 23:12
Ряд чисел в порядке убывания Kiborgik Prolog 9 04.06.2010 13:22
Список целых чисел imported_Luke Prolog 1 29.05.2007 22:30
Как сформировать матрицу чисел Frick Pascal 12 14.12.2005 22:56
Перестановка в символьном массиве chenkja С/С++ 4 03.08.2004 17:08



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов