Ще декілька типів об’єктів GAP
Останнє оновлення 2026-05-06 | Редагувати цю сторінку
Приблизний час: 20 хвилин
Огляд
Питання
- Подальші приклади об’єктів і операцій з ними
Цілі
- Ознайомитися із деякими типами обʼєктів, які є в GAP, але можуть бути відсутні в інших системах
- Розглянути більше прикладів роботи зі списками
Наразі ми познайомилися з трьома типами обʼєктів у GAP:
простими об’єктами (наприклад, цілі числа, раціональні числа, булеві значення, перестановки тощо);
складеними об’єктами (наприклад списки);
об’єктами з більш складними внутрішніми представленнями (наприклад, групи).
У цьому розділі ми продемонструємо деякі інші приклади базових об’єктів, які існують у GAP. Більш того, у GAP можна самостійно вводити нові типи об’єктів, але це виходить за рамки цього уроку.
Ще декілька типів простих об’єктів у GAP - це числа з плаваючою комою, циклотомічні числа та елементи скінченних полів:
ВИХІД
1.15
0.000356423
ВИХІД
E(4)
-1
-E(3)^2
ВИХІД
[ 0*Z(2), Z(2)^0 ]
Z(5)
Z(5)^0
Ви вже знаєте про списки. Іншим типом складених об’єктів є
записи. У той час як список містить підоб’єкти,
проіндексовані за їх позиціями в списку, запис містить підоб’єкти, які
називаються компонентами запису та індексуються за своїми
іменами. Елементи запису доступні за допомогою символу .
(крапка).
ВИХІД
rec( day := 17, month := "Nov", year := 2015 )
ВИХІД
2015
ВИХІД
rec( hour := 14, minute := 55, second := 12 )
ВИХІД
rec( day := 17, month := "Nov",
time := rec( hour := 14, minute := 55, second := 12 ), year := 2015 )
ВИХІД
[ "time", "year", "month", "day" ]
Далі, GAP має рядки та символи. Хоча GAP друкує рядки спеціальним чином, насправді рядок — це лише список символів, і будь-яка функція, яка приймає список, також прийматиме рядок. Навпаки, символи є такими ж простими об’єктами, як, наприклад, цілі числа.
ВИХІД
"supercalifragilisticexpialidocious"
34
Рядки позначаються подвійними лапками, а символи одинарними.
ВИХІД
false
true
true
true
true
Зауважте, що
ВИХІД
fail
10
Будьте обережні! Деякі операції можуть створити новий список, тоді як інші є деструктивними. Наприклад:
ВИХІД
"aaacccdeefgiiiiiiillloopprrssstuux"
"supercalifragilisticexpialidocious"
але
ВИХІД
"aaacccdeefgiiiiiiillloopprrssstuux"
Яка літера зустрічається у “supercalifragilisticexpialidocious” найчастіше?
ВИХІД
[ [ 'a', 3 ], [ 'c', 3 ], [ 'd', 1 ], [ 'e', 2 ], [ 'f', 1 ], [ 'g', 1 ],
[ 'i', 7 ], [ 'l', 3 ], [ 'o', 2 ], [ 'p', 2 ], [ 'r', 2 ], [ 's', 3 ],
[ 't', 1 ], [ 'u', 2 ], [ 'x', 1 ] ]
ВИХІД
7
[ [ 'i', 7 ] ]
Пошук букв, які найчастіше зустрічаються у списку, за допомогою лише одного повного перебору
Команда
k := Maximum( List( c, v -> v[2] ) ); Filtered( c, v -> v[2] = 7 );
двічі перебирає список c (спочатку у List,
а потім у Filtered), а також перебирає інший список такої ж
довжини, що й список c під час виклику
Maximum. Якщо список довгий, це може зайняти більше часу та
потребує більше пам’яті. Спробуйте написати код, який знаходить літери,
які найчастіше зустрічаються в рядку c, не створюючи
проміжного списку.
- GAP має різноманітні прості та складені об’єкти.
- GAP має дуже гнучкий та потужний інструментарій для роботи зі списками.
- Такі об’єкти, як списки та записи, добре підходять для зберігання структурованих і пов’язаних даних.