Главная » Информационные системы » Представление знаний в ИС » Заданному десятичному числу сопоставить список цифр его 16-ричного представления.

Заданному десятичному числу сопоставить список цифр его 16-ричного представления.

Вариант для доработки (сейчас пустой вывод), пишите в комментарии
% Bilet9
% Patched 14.01.13
% To start type: jstart.
DOMAINS
element = i(integer); c(char); s(string)
listE=element*

head(X,[X|L]).
tail(L,[X|L]).

member(X,L):-head(X,L).
member(X,L):-tail(T,L),member(X,T).

delete(X,[X|L],L).
delete(X,[Y|L],[Y|L1]):-delete(X,L,L1).

conk([],L,L).
conk([X|L1],L2,[X|L3]):-conk(L1,L2,L3).

sublist(S,L):-
  conk(L1,L2,L),
  conk(S,L3,L2).
           
un([],L,[]).
un(L1,L2,L3):- head(X,L1),
               member(X,L2),
               delete(X,L1,L11),
               delete(X,L2,L22),
               un(L11,L22,L33),
               L3=[X|L33],!.
un([H|T],L2,L3):-un(T,L2,L3).
                 
del_sub([],L,L).
del_sub([X|L],L1,L2):-delete(X,L1,L3),
                      del_sub(L,L3,L2).
                    

proisv([X|[]],X).
proisv([H|T],X):-proisv(T,X2), X is H*X2.

 
bin(0,[]).
bin(1,[1]).
bin(X,Z):- X>1,
           Y is X//2,
           O is X mod 2,
           bin(Y,Z1),
           Z=[O|Z1].

dob(L,0,L).
dob(L,X,L1):-X>0,X1 is X-1,dob(L,X1,L2),L1=[0|L2].

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

is4(L,L1):-dlina(L,X),
           Y is X mod 4,
           Z is 4-Y,
           dob(L,Z,L1).
          
hex([],[]).
hex([H1,H2,H3,H4|T],L1):-L2 is H1*1000+H2*100+H3*10+H4,tr(L3,L2),hex(T,L4),L1=[L3|L4].
tr(0,0).
tr(1,1).
tr(2,10).
tr(3,11).
tr(4,100).
tr(5,101).
tr(6,110).
tr(7,111).
tr(8,1000).
tr(9,1001).
tr(A,1010).
tr(B,1011).
tr(C,1100).
tr(D,1101).
tr(F,1111).
jstart:- write(' Vvedite chislo dlya preobrazovaniya v x16: '),nl,read(IJAM1),nl,
hex(IJAM,L1),
write(L1),nl.


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

Поделиться
Дисциплины