Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π• НА Π―Π—Π«ΠšΠ• ΠŸΠ ΠžΠ›ΠžΠ“Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 41

Автор Π£ Клоксин

слСдомза(Π₯,Y,[_|Z]):- слСдомза(Π₯,Y,Z).


ОбъСдинСниС списков: Π‘ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ Ρ€Π°Π½Π΅Π΅ Π² Ρ€Π°Π·Π΄. 3.6. ЦСль ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(X, Y, Z) согласуСтся с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚ΠΎΠΌ случаС, Ссли Z – это список, построСнный ΠΏΡƒΡ‚Π΅ΠΌ добавлСния Y Π² ΠΊΠΎΠ½Π΅Ρ† X. НапримСр,


?- ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ([a,b,с],[d,e,f],Q).

Q=[a,b,c,d,e,f]


ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ([],L,L).

ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ([Π₯|L1],L2,[Π₯|LΠ—]):- ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(L1,L2,LΠ—).


Π“Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ условиС выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ являСтся пустым списком. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ списка пустым списком Π½Π΅ измСняСт Π΅Π³ΠΎ. Π’ дальнСйшСм ΠΌΡ‹ постСпСнно приблиТаСмся ΠΊ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ рСкурсивноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ удаляСт ΠΎΠ΄ΠΈΠ½ элСмСнт ΠΈΠ· Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΈ Π² этом случаС ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΈΠΌ свойством, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°Π·Π²Π°Ρ‚ΡŒ Β«Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌΒ», ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· опрСдСляСмых Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ². Указанная Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ сдСлаСм:


послСдний(Π•1,Бписок):- ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(_,[Π•1],Бписок).

слСдомза(Π•11,Π•12,Бписок):-

ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(_,[Π•11,Π•12|_], Бписок).

ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚(Π•1,Бписок):- ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(_,[Π•1|_],Бписок).


ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ списка: ЦСль ΠΎΠ±Ρ€(L,M) согласуСтся с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСрСстановки Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС элСмСнтов списка L Π΅ΡΡ‚ΡŒ список М. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный ΠΏΡ€ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ список получаСтся присоСдинСниСм Π΅Π³ΠΎ Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠΌΡƒ хвосту. Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ хвост – это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сам ΠΎΠ±Ρ€. Π“Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ условиС выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ сократился Π΄ΠΎ пустого списка, Π² этом случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ являСтся пустой список:


ΠΎΠ±Ρ€([],[]).

ΠΎΠ±Ρ€([Н|Π’],L):- ΠΎΠ±Ρ€(T,Z), ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(Z,[Н],L).


Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° мСстС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ стоит Н Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Н – это Π³ΠΎΠ»ΠΎΠ²Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π° Π³ΠΎΠ»ΠΎΠ²Π° списка сама Π½Π΅ обязана Π±Ρ‹Ρ‚ΡŒ списком. Π₯вост ΠΆΠ΅ списка ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ всСгда являСтся списком. Для Π±ΠΎΠ»Π΅Π΅ эффСктивной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ дСйствия ΠΏΠΎ объСдинСнию списков нСпосрСдствСнно Π² утвСрТдСния для ΠΎΠ±Ρ€:


o6p2(L1,L2):- ΠΎΠ±Ρ€Π΄ΠΎΠΏ(L1,[],L2).

ΠΎΠ±Ρ€Π΄ΠΎΠΏ([X|L],L2fL3):- ΠΎΠ±Ρ€Π΄ΠΎΠΏ(L,[Π₯|L2],LΠ—).

ΠΎΠ±Ρ€Π΄ΠΎΠΏ([],L,L).


Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠ±Ρ€Π΄ΠΎΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Β«Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Β». ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° выявляСтся Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° (X), ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Β«Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» прСдставляСт ΠΈΠ· сСбя старый Β«Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β», Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ X. Π’ самом ΠΊΠΎΠ½Ρ†Π΅ послСдний Β«Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» возвращаСтся Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° исходного Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ утвСрТдСния. Аналогичный ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π΄. 7.8 ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° имя_Ρ†Π΅Π»ΠΎΠ³ΠΎ.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта: ЦСль ΠΈΡΠΊΠ»ΡŽΡ‡1(Π₯, Y,Z) ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнта X ΠΈΠ· списка Y, формируя Π½ΠΎΠ²Ρ‹ΠΉ сокращСнный список Z. Если Π² спискС Y Π½Π΅Ρ‚ элСмСнта X, Ρ‚ΠΎ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎ. Π“Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ условиС выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ искомый элСмСнт X, ΠΈΠ½Π°Ρ‡Π΅ осущСствляСтся рСкурсивная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° хвоста списка Y:


ΠΈΡΠΊΠ»ΡŽΡ‡1(А,[А|L],L):-!.

ΠΈΡΠΊΠ»ΡŽΡ‡1(А,[Π’|L],[Π’|М]):- ΠΈΡΠΊΠ»ΡŽΡ‡1(А,L,М).


Π›Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обСспСчит Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ сократится Π΄ΠΎ пустого списка. Π­Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ Π½ΠΎΠ²ΠΎΠ΅ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ условиС, Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡1(_,[],[])-

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта; ЦСль ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ(Π₯, L1, L2) создаСт список L2 ΠΏΡƒΡ‚Π΅ΠΌ удалСния всСх элСмСнтов X ΠΈΠ· списка L1. Π“Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ΅ условиС выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° L1 являСтся пустым списком. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ рСкурсивно исчСрпали вСсь список. Если X находится Π² Π³ΠΎΠ»ΠΎΠ²Π΅ списка, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся хвост этого списка, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ X Ρ‚ΠΎΠΆΠ΅ удаляСтся. ПослСдний случай Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ X. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ просто Π²Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½ΠΎΠ²ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ.


ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ(_, [],[]).

ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ(Π₯,[Π₯|L],М):-!, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ(Π₯,L,М).

ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ(Π₯,[Y|L1],[Y|L2]):- ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ(Π₯,L1,L2).


Π—Π°ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅: Π­Ρ‚ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ вмСсто удалСния искомого элСмСнта ΠΌΡ‹ замСняСм Π΅Π³ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ элСмСнтом. ЦСль Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π₯, L,A,M) строит Π½ΠΎΠ²Ρ‹ΠΉ список М ΠΈΠ· элСмСнтов списка L, ΠΏΡ€ΠΈ этом всС элСмСнты X Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° элСмСнты А. Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ 3 случая. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ, связанный с Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΌ условиСм, Π² точности совпадаСт с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π² ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ случай – ΠΊΠΎΠ³Π΄Π° Π² Π³ΠΎΠ»ΠΎΠ²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° содСрТится элСмСнт X, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ – ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΌ содСрТится Π½Π΅Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ X:


Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(_,[],_,[]).

Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π₯,[Π₯|L],А,[А|М]):-!, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π₯,L,А,М).

Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π₯,[Y|L],А,[Y|М]):- Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π₯,L,А,М).


Подсписки: Бписок X являСтся подсписком списка Y, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт X содСрТится ΠΈ Π² Y с сохранСниСм порядка слСдования ΠΈ Π±Π΅Π· Ρ€Π°Π·Ρ€Ρ‹Π²ΠΎΠ². НапримСр, Π΄ΠΎΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:


подсписок[[собраниС, Ρ‡Π»Π΅Π½ΠΎΠ², ΠΊΠ»ΡƒΠ±Π°],[ΠΎΠ±Ρ‰Π΅Π΅, собраниС, Ρ‡Π»Π΅Π½ΠΎΠ², ΠΊΠ»ΡƒΠ±Π°, Π±ΡƒΠ΄Π΅Ρ‚, созвано, ΠΏΠΎΠ·ΠΆΠ΅]).


ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° подсписок Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄Π²ΡƒΡ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ²: ΠΎΠ΄ΠΈΠ½ для нахоТдСния совпадСния с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° поэлСмСнтно совпадаСт с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.


подсписок([Π₯|L],[Π₯|М]):- совпало(L,M),!.

подсписок(L,[_|М]):- подсписок(L,M).

совпало([],_).

совпало([Π₯|L],[Π₯|М]):- совпало(L,М).


ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ списка Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ списка Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ использованиСм Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² качСствС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ элСмСнта Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ списка. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСобразования ΠΎΠ΄Π½ΠΎΠ³ΠΎ прСдлоТСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅, которая Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ Π² Π³Π». 3, являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² отобраТСния. ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Β«ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅Β».

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‡Ρ‚ΠΎ заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ списки Π² ΠŸΡ€ΠΎΠ»ΠΎΠ³Π΅ – это просто частныС случаи структур, ΠΌΡ‹ ΠΎΡ‚Π»ΠΎΠΆΠΈΠΌ обсуТдСниС отобраТСния списков Π΄ΠΎ Ρ€Π°Π·Π΄. 7.12. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ»ΠΈΠΊΠΎ. Π’ Ρ€Π°Π·Π΄. 7.11, посвящСнном символичСскому Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, описываСтся способ отобраТСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ арифмСтичСского выраТСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

7.6. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° мноТСств

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ - ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠ°ΠΊ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ – это Π½Π°Π±ΠΎΡ€ элСмСнтов, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ список, Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ вопрос ΠΎ Ρ‚ΠΎΠΌ, сколько Ρ€Π°Π· ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² мноТСство Π² качСствС Π΅Π³ΠΎ элСмСнта, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла. Π’Π°ΠΊ, мноТСство (1, 2, 3) – это Ρ‚ΠΎ ΠΆΠ΅ самоС мноТСство, Ρ‡Ρ‚ΠΎ ΠΈ (1, 2, 3, 1), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сам Ρ„Π°ΠΊΡ‚, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт мноТСству ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ мноТСств ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мноТСства. Π‘Π°ΠΌΠΎΠΉ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°Π΄ мноТСствами являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ элСмСнт Π΄Π°Π½Π½ΠΎΠΌΡƒ мноТСству ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

НС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ удивлСния, Ρ‡Ρ‚ΠΎ мноТСства ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ списков. Бписок ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ элСмСнты, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ списки, ΠΈ Π½Π°Π΄ списками ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ принадлСТности. Однако условимся, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ прСдставляСм мноТСство Π² Π²ΠΈΠ΄Π΅ списка, Ρ‚Π°ΠΊΠΎΠΉ список содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ мноТСству. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со списками Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов. Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ прСдстоит ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со списками Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов. ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, рассматриваСмыС Π½ΠΈΠΆΠ΅, ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ это свойство ΠΈ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ Π½Π° Π½Π΅Π³ΠΎ.

Над мноТСствами ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ общСпринятыС матСматичСскиС обозначСния для Ρ‚Π΅Ρ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΡ‚ΠΎ ΠΊ Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ):

ΠŸΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ мноТСству: X∈Y

X ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ мноТСству Y, Ссли X являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· элСмСнтов Y.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: а∈{с,Π°,t}.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: XβŠ‚Y

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Y Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя мноТСство X, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт мноТСства X являСтся Ρ‚Π°ΠΊΠΆΠ΅ элСмСнтом Y. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Y ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² X.