Удаление каждого 2-ого и 3-его символа в строке

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).

____________________________________________________


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: