], M) if max (Tail, M). ([X], X). ([H | Tail], H) if min (Tail, M), H lt; M,!. ([_ | Tail], M) if min (Tail, M). (X, Y, R) if R =XY. ([H | T]): - readint (H),!, readlist (T). readlist ([]). ( Введіть елементи (кінець введення - подвійне натискання на ENTER): ), nl , (L), (L, X), (L, Y), (X, Y, Res).
* /=integer * print (list) replace (list, integer, integer, list) ([]): -!. ([H | []]): - write (H). ([H | T]): - write (H, laquo ;, ), print (T). ([], _, _, []): -!. ([H | T], X, Y , [H | R]): - H lt; gt; X, replace (T, X, Y, R). ([H | T], X, Y, [Y | R]): - H=X, replace (T, X, Y, R). ( Laquo; Enter list: ), nl, (list, L), nl, ( Enter X: ), nl, (X), nl, ( Enter Y: ), nl, (Y) , nl, (L, X, Y, R), ( [), (R), (]. ), nl, (_).
*/
Скріншоти результатів
Відповіді на контрольні питання
. Що таке список?
Список - це спеціальний вид складного терма, що складається з послідовності термів, укладених у квадратні дужки і розділених комою. Як позначається відсікання в програмі?
. Голова і хвіст списку. Зображення списку у вигляді голови і хвоста.
Н - голова, Т - хвіст списку. Зображується у вигляді [H | T]. H- перший елемент, Т - список залишився.
. Як позначається порожній список?
. Чи можна зобразити порожній список у вигляді голови і хвоста?
Ні.
. Що означають такі види зображення списку: L, [X], [_, A], [_ | T], [H | _], [_], [_, B | C]? - Тип списку; [X] - список складається з одного елемента; [_, A] - список з двох елементів, перший елемент може приймати будь-яке значення; [_ | T], - список в якому голова приймає будь-яке значення; [H | _] - список в якому не важливий хвіст; [_] - Список з одного елемента значення якого не має значення; [_, B | C] - список в голові якого 2 елемента, і перший може приймати будь-яке значення.
. Чи може бути в голові списку більше одного елемента?
Так, може.
. Чи належить елемент 5 списком [[1, 2, 3], [4, 5, 6]]?
Ні, він належить елементу списку.
. Чи порівнянні два списки: [5, 6, 7] і [H | T]?
Так.
. Чи можна в процедурах введення списку ввод_спіска1 і ввод_спіска2 поміняти місцями перше і друге речення?
Ні.
. Як потрібно змінити процедуру удал_перв_ел, щоб можна було видалити зі списку: a) два перших елемента; б) другий елемент?
удал_перв_ел ([_ | T], T).
А) удал_перв_ел ([_, _ | T], T).) удал_перв_ел ([H, _ | T], [H | T]).
. Як потрібно змінити процедуру удал_посл_ел, щоб зі списку були видалені: a) дві останні елементи; б) передостанній елемент?
А) молодецький ([_, _], []).
молодецький ([H | T], [H | T1]) if молодецький (T, T1).
молодецький ([_], []).) молодецький [_, X], [X]).
молодецький ([H | T], [H | T1]) if молодецький (T, T1).
молодецький ([_], []).
. Як потрібно змінити процедуру видел_перв_ел, щоб можна було виділити зі списку: a) два перших елемента; б) другий елемент?
А) видел_перв_ел ([H, H1 | _], H, H1).) видел_перв_ел ([H, H1 | _], H1).
. Як потрібно змінити процедуру видел_посл_ел, щоб зі списку можна було виділити: a) дві останні елементи; б) передостанній елемент?
А) видел_посл_ел ([X, H], X, H).
видел_посл_ел ([_ | T], X, H): - видел_посл_ел (T, X, H).) видел_посл_ел ([X, _], X).
видел_посл_ел ([_ | T], X): - видел_посл_ел (T, X).
. Як потрібно змінити процедуру доб_ел_в_начало, щоб можна було вставити заданий елемент між першим і другим елементами списку?
доб_ел_в_начало (E, [H, H1 | T], [H, E, H1 | T]).
. Як потрібно змінити процедуру доб_ел_в_конец, щоб поставлене елемент вставився перед останнім елементом списку?
доб_ел_в_конец (E, [H], [E, H]).
доб_ел_в_конец (E, [H | T], [H | T1]): - доб_ел_в_конец (E, T, T1).
. Чи можна в програмі зі списками обійтися без розділу domains?
Ні
список входження хвіст непарний
Висновок
Придбали навички роботи зі списками в програмах на Visual Prol...