{ тип множества }
type
TSingleSet=set of byte;
TLongSet=array of TSingleSet;
{ создание множества на count элементов
реальное кол-во элементов всегда будет выравнено по границе, кратной 256
пример: createSet(3) создаст множество на 256 элементов,
createSet(321) - на 512 элементов }
function createSet(count:integer):TLongSet;
{ изменение размера множества
множество может как увеличено, так и уменьшено
в последнем случае возможна утеря элементов }
procedure setSize(var dstSet:TLongSet; newCount:integer);
{ получение размера множества (кратно 256) }
function getSize(bSet:TLongSet): integer;
{ уничтожение множества }
procedure destroySet(var dstSet:TLongSet);
{ аналог операции in }
function inSet(bSet:TLongSet; e:integer):boolean;
{ аналог операции +, возвращает новое множество минимально необходимого размера}
function sumSet(set1,set2:TLongSet):TLongSet;
{ аналог операции -, возвращает новое множество минимально необходимого размера}
function subSet(set1,set2:TLongSet):TLongSet;
{ аналог операции *, возвращает новое множество минимально необходимого размера}
function mulSet(set1,set2:TLongSet):TLongSet;
{ аналог функции include, изменяет переданное множество
при необходимости увеличивает его размер }
procedure includeSet(var dstSet:TLongSet; e:integer);
{ аналог функции exclude, изменяет переданное множество }
procedure excludeSet(var dstSet:TLongSet; e:integer);
Проверить работу функций.
{ тип множества }
type
TLongSet=bitpacked array[0..high(longint)] of boolean;
PLongSet=^TLongSet;
{ создание множества на count элементов }
function createSet(count:integer):PLongSet;
{ изменение размера множества
множество может как увеличено, так и уменьшено
в последнем случае возможна утеря элементов }
procedure setSize(var dstSet:PLongSet; newCount:integer);
{ получение размера множества }
function getSize(bSet:PLongSet): integer;
{ уничтожение множества }
procedure destroySet(var dstSet:PLongSet);
{ аналог операции in }
function inSet(PSet:TLongSet; e:integer):boolean;
{ аналог операции +, возвращает новое множество минимально необходимого размера}
function sumSet(set1,set2:PLongSet):PLongSet;
{ аналог операции -, возвращает новое множество минимально необходимого размера}
function subSet(set1,set2:PLongSet):PLongSet;
{ аналог операции *, возвращает новое множество минимально необходимого размера}
function mulSet(set1,set2:PLongSet):PLongSet;
{ аналог функции include, изменяет переданное множество
при необходимости увеличивает его размер }
procedure includeSet(var dstSet:PLongSet; e:integer);
{ аналог функции exclude, изменяет переданное множество }
procedure excludeSet(var dstSet:PLongSet; e:integer);
Проверить работу функций.