Kapitel 10. Mängdlära i GEL

Innehållsförteckning

Använda mängder

Genius har viss grundläggande mängdteoretisk funktionalitet inbyggd. För närvarande är en mängd bara en vektor (eller en matris). Varje distinkt objekt behandlas som ett eget element.

Använda mängder

Precis som vektorer kan objekt i mängder inkludera tal, strängar, null, matriser och vektorer. Det planeras att i framtiden ha en enkom typ för mängder, snarare än att använda vektorer. Observera att flyttal skiljer sig åt från heltal även om de verkar vara lika. Det vill säga Genius behandlar 0 och 0.0 som två olika element. null behandlas som en tom mängd.

För att skapa en mängd från en vektor, använd funktionen MakeSet function. För närvarande kommer den bara att returnera en ny vektor där varje element är unikt.

genius> MakeSet([1,2,2,3])
= [1, 2, 3]

På liknande sätt finns det funktionerna Union, Intersection och SetMinus, som är ganska självförklarande. Till exempel:

genius> Union([1,2,3], [1,2,4])
= [1, 2, 4, 3]

Observera att ingen ordning garanteras för returvärdena. Om du vill sortera vektorn bör du använda funktionen SortVector.

För att testa medlemskap finns funktionerna IsIn och IsSubset vilka returnerar ett booleskt värde. Till exempel:

genius> IsIn (1, [0,1,2])
= true

Inmatningen IsIn(x,X) är förstås ekvivalent med IsSubset([x],X). Observera att eftersom den tomma mängden är en delmängd av varje mängd så är IsSubset(null,X) alltid true (sann).