» » »

Определите предикат для вычисления суммы двоичных цифр числа

чо не вводил - всегда единица.
% Bilet14
% Patched by JamshyT 14.01.13
% Special for AISTd-31 :)
% To start type: jstart.
razList(S,L):-S<10,L=[S].
razList(S,L):-S>10, X is S mod 10,Y is S //10, razList(Y,L1),L=[X|L1].

%sumbin([],0).
%sumbin
%sumbin([X|[]],X).

sumbin([],0).
sumbin([H|T],X):-H=1, sumbin(T,X1), X is X1+1,!.
sumbin([H|T],X):-sumbin(T,X).

predikat(X,Y):-razList(X,L),sumbin(L,Y).
jstart:- write(' Vvedite chislo: '),nl,read(IJAM1),nl,
predikat(IJAM1,Y),
write(' Summa='),
write(Y).

Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.