Predicates
del2(string,string)
del3(string,string)
Clauses
del2("","").
del2("_","").
del2(S1,S2):-frontstr(2,S1,W,T),frontstr(1,W,R,T1),
del2(T,R1),concat(R,R1,S2).
del3("","").
del3("__","").
del3("_","").
del3(S1,S2):-frontstr(3,S1,W,T),frontstr(2,W,R,T1),
del3(T,R1),concat(R,R1,S2).
Goal
write("Enter string"),nl,
readln(Str),
del2(Str,R1),del3(Str,R2),write(R1),nl,write(R2).
Найти букву в середине слова, либо 2 буквы, если количество символов четное
Predicates
middle(string,string)
Clauses
middle("","").
middle(S1,S2):-str_len(S1,X),X mod 2=0,X1=(X div 2)+1,
frontstr(X1,S1,R1,T),X2=(X div 2)-1,frontstr(X2,R1,W,S2).
middle(S1,S2):-str_len(S1,X),X mod 2<>0,X1=(X div 2)+1,
frontstr(X1,S1,R1,T),X2=X div 2,frontstr(X2,R1,W,S2).
Goal
write("Enter string"),nl,
readln(Str),
middle(Str,R),write(R).
_________________________________________________
В словах “килограм”, “граматика”, “грамофон” исправить грамматические ошибки (с помощью составленной программы).
Predicates
del_el(string)
Clauses
del_el("").
del_el(Str):-frontchar(Str,Ch,Ost),Ch='m',
write(Str,Ch,Ch),
del_el(Ost).
del_el(Str):-frontchar(Str,Ch,Ost),Ch<>'m',
del_el(Ost).
Goal
clearwindow,
write("Enter string:"),nl,
readln(Str),
write("New string:"),nl,
del_el(Str).
|
|
________________________________________________
Разбиение стороки на 2 по границе слова
Predicates
razbivka(string,string,string)
Clauses
razbivka(Str,Str1,Str2):-str_len(Str,N),N1 = N div 2,
frontstr(N1,Str,S1,S2),
fronttoken(S2,Kusochek,Str2),
concat(S1,Kusochek,Str1).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
razbivka(Str,Str1,Str2),
write("Rezult=",Str1),nl,
write("Rezult=",Str2).
_________________________________________________
Самое длинное слово
Domains
list=string*
Predicates
max(string,string)
Clauses
max("","").
max(Str,Word):-fronttoken(Str,Word_1,Ost),
str_len(Word_1,Len_word_1),
fronttoken(Ost,Word_2,Ost_2),
str_len(Word_2,Len_word_2),
Len_word_1<=Len_word_2,
Word=Word_2,
max(Ost,Word).
max(Str,Word):-fronttoken(Str,Word_1,Ost),
str_len(Word_1,Len_word_1),
fronttoken(Ost,Word_2,Ost_2),
str_len(Word_2,Len_word_2),
Len_word_1>Len_word_2,
concat(Word_1,Ost_2,Ost_3),
Word=Word_1,
max(Ost_3,Word).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
max(Str,N),
write("Rezult=",N).
Нахождение в строке самого короткого слова.
Domains
list=string*
K,K1=integer
S=string
Predicates
word(string,list)
min(list,string)
Clauses
word("",[]).
word(S,[H|T]):- fronttoken(S,H,S1),word(S1,T).
min([],"").
min([E1,E2],E1):-str_len(E1,K),str_len(E2,K1),K<=K1.
min([E1,E2],E2):-str_len(E2,K1),str_len(E1,K),K1<K.
min([H1,H2|T],S3):-str_len(H1,K),str_len(H2,K1),
K>=K1,min([H2|T],S3).
min([H1,H2|T],S3):-str_len(H1,K),str_len(H2,K1),
K1<K,min([H1|T],S3).
Goal
clearwindow,
write("Введите строку:"),nl,
write("S="),
readln(S),nl,
write("short word: "),
|
|
word(S,S1),
min(S1,S3),
write(S3).
____________________________________________________
Рекурсия
1) Найти n-ое и (n+1) числа фибоначи
2) Факториал
3) Степень числа
4) Эффективная степень
5) Сумма от n до m
6) Сумма через шаг
____________________________________________________
1)Найти n-ое и (n+1) числа фибоначи.
Predicates
feb_iter(integer,integer,integer)
Clauses
feb_iter(0,_,0).
feb_iter(1,0,1).
feb_iter(N,F1,F2):-N1=N-1,feb_iter(N1,F0,F1),F2=F1+F0.
Goal
clearwindow,
write("Enter N:"),
readint(N),nl,
feb_iter(N,F1,F2),
write("F=",F1,"(",F2,")").
____________________________________________________
Факториал
Predicates
fuctor(integer,integer)
fuctorial_iter(integer,integer,integer,integer)
fuctorial(integer,integer)
Clauses
fuctor(1,1).
fuctor(N,F):-N>0,N1=N-1,fuctor(N1,F1),F=F1*N.
fuctorial(N,F):-fuctorial_iter(N,F,1,1).
fuctorial_iter(N,F,I,P):-I<=N,Inew=I+1,Pnew=P*I,
fuctorial_iter(N,F,Inew,Pnew).
fuctorial_iter(N,F,I,P):-I>N.
Goal
write("Enter N:"),
readint(N),nl,
fuctor(N,F),
fuctorial(N,F2)
write("F=",F," (",F2,")").
___________________________________________________
Степень числа
Predicates
stepen(integer,real,real)
Clauses
stepen(N,1,N).
stepen(_,0,1).
stepen(N,D,S):-D>0,D2=D-1,stepen(N,D2,S2),S=S2*N.
stepen(N,D,S):-D<0,D2=-D,stepen(N,D2,S2),S=1/S2.
Goal
clearwindow,
write("Enter N:"),
readint(N),nl,
write("Enter stepen:"),
readint(D),nl,
stepen(N,D,S),
write("S=",S).
__________________________________________________
Эффективная степень
Predicates
stepen(integer,integer,real)
Clauses
stepen(N,1,N).
stepen(_,0,1).
stepen(N,D,S):-D>0,(D mod 2)=0,D2=D/2,
stepen(N,D2,S2),S=S2*S2.
stepen(N,D,S):-D>0,(D mod 2)<>0,D2=D-1,
stepen(N,D2,S2),S=S2*N.
stepen(N,D,S):-D<0,D2=-D,stepen(N,D2,S2),S=1/S2.
Goal
clearwindow,
write("Enter N:"),
readint(N),nl,
write("Enter stepen:"),
readint(D),nl,
stepen(N,D,S),
write("S=",S).
__________________________________________________
Сумма от n до m
Predicates
sum(integer,integer,integer)
Clauses
sum(M,M,M).
sum(M,N,S):-M<N,M2=M+1,sum(M2,N,S2),S=S2+M.
sum(M,N,M):-M>N.
Goal
clearwindow,
write("Enter M:"),
readint(M),nl,
write("Enter N:"),
readint(N),nl,
sum(M,N,S),
write("S=",S).
___________________________________________________
Сумма через шаг
Predicates
sum(integer,integer,integer)
Clauses
sum(0,_,0).
sum(1,_,1).
sum(N,S,Sum):-N2=N-S,sum(N2,S,S2),Sum=S2+N.
Goal
clearwindow,
write("Enter N:"),
readint(N),nl,
write("Enter step:"),
readint(S),nl,
sum(N,S,Sum),
write("S=",Sum).
____________________________________________________