diff options
author | Marc Pervaz Boocha <mboocha@sudomsg.xyz> | 2024-11-06 22:10:51 +0530 |
---|---|---|
committer | Marc Pervaz Boocha <mboocha@sudomsg.xyz> | 2024-11-06 22:10:51 +0530 |
commit | dc09e66a935a9888c6748a6deebcbf06af6f05d5 (patch) | |
tree | 611820a5ab67f0209f20b6da875f36330a8ea458 /.config/nvim/lua | |
parent | Added plugins. Also added .profile due ubuntu's GDM xsession req (diff) | |
download | dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.tar dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.tar.gz dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.tar.bz2 dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.tar.lz dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.tar.xz dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.tar.zst dotfiles-dc09e66a935a9888c6748a6deebcbf06af6f05d5.zip |
Add typppe antation
Diffstat (limited to '.config/nvim/lua')
-rw-r--r-- | .config/nvim/lua/set.lua | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/.config/nvim/lua/set.lua b/.config/nvim/lua/set.lua new file mode 100644 index 0000000..1e829d5 --- /dev/null +++ b/.config/nvim/lua/set.lua @@ -0,0 +1,79 @@ +---@class Set +---@field elements table<any, boolean> +Set = {} +Set.__index = Set + +--- Constructor for creating a new set +---@param initialList table|nil -- Accepts a table (list) or nil for empty set +---@return Set +function Set:new(initialList) + local instance = setmetatable({}, self) + instance.elements = {} + + -- Populate the set with elements from initialList if provided + if initialList then + for _, element in ipairs(initialList) do + instance:add(element) + end + end + + return instance +end + +--- Add an element to the set +---@param element any +function Set:add(element) + self.elements[element] = true -- Setting key to true enforces uniqueness +end + +--- Remove an element from the set +---@param element any +function Set:remove(element) + self.elements[element] = nil +end + +---Check if the set contains an element +---@param element any +function Set:has(element) + return self.elements[element] ~= nil +end + +---Union operation: combines two sets +---@param otherSet Set +---@return Set +function Set:union(otherSet) + local resultSet = Set:new() + for key in pairs(self.elements) do + resultSet:add(key) + end + for key in pairs(otherSet.elements) do + resultSet:add(key) + end + return resultSet +end + +-- Intersection operation: elements common to both sets +function Set:intersection(otherSet) + local resultSet = Set:new() + for key in pairs(self.elements) do + if otherSet:contains(key) then + resultSet:add(key) + end + end + return resultSet +end + +-- Difference operation: elements in this set but not in otherSet +---@param otherSet Set +---@return Set +function Set:difference(otherSet) + local resultSet = Set:new() + for key in pairs(self.elements) do + if not otherSet:has(key) then + resultSet:add(key) + end + end + return resultSet +end + +return Set |