Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
lewis e28644e8d9 | 1 year ago | |
---|---|---|
.. | ||
.gitignore | 5 years ago | |
.travis.yml | 4 years ago | |
LICENSE | 6 years ago | |
Makefile | 4 years ago | |
README.md | 5 years ago | |
bitset.go | 4 years ago | |
popcnt.go | 6 years ago | |
popcnt_19.go | 6 years ago | |
popcnt_amd64.go | 6 years ago | |
popcnt_amd64.s | 6 years ago | |
popcnt_generic.go | 6 years ago | |
trailing_zeros_18.go | 6 years ago | |
trailing_zeros_19.go | 6 years ago |
Go language library to map between non-negative integers and boolean values
Package bitset implements bitsets, a mapping between non-negative integers and boolean values.
It should be more efficient than map[uint] bool.
It provides methods for setting, clearing, flipping, and testing individual integers.
But it also provides set intersection, union, difference, complement, and symmetric operations, as well as tests to check whether any, all, or no bits are set, and querying a bitset's current length and number of positive bits.
BitSets are expanded to the size of the largest set bit; the memory allocation is approximately Max bits, where Max is the largest set bit. BitSets are never shrunk. On creation, a hint can be given for the number of bits that will be used.
Many of the methods, including Set, Clear, and Flip, return a BitSet pointer, which allows for chaining.
package main
import (
"fmt"
"math/rand"
"github.com/willf/bitset"
)
func main() {
fmt.Printf("Hello from BitSet!\n")
var b bitset.BitSet
// play some Go Fish
for i := 0; i < 100; i++ {
card1 := uint(rand.Intn(52))
card2 := uint(rand.Intn(52))
b.Set(card1)
if b.Test(card2) {
fmt.Println("Go Fish!")
}
b.Clear(card1)
}
// Chaining
b.Set(10).Set(11)
for i, e := b.NextSet(0); e; i, e = b.NextSet(i + 1) {
fmt.Println("The following bit is set:", i)
}
if b.Intersection(bitset.New(100).Set(10)).Count() == 1 {
fmt.Println("Intersection works.")
} else {
fmt.Println("Intersection doesn't work???")
}
}
As an alternative to BitSets, one should check out the 'big' package, which provides a (less set-theoretical) view of bitsets.
Godoc documentation is at: https://godoc.org/github.com/willf/bitset
Go 1.9 introduced a native math/bits
library. We provide backward compatibility to Go 1.7, which might be removed.
It is possible that a later version will match the math/bits
return signature for counts (which is int
, rather than our library's unit64
). If so, the version will be bumped.
go get github.com/willf/bitset
If you wish to contribute to this project, please branch and issue a pull request against master ("GitHub Flow")
This project include a Makefile that allows you to test and build the project with simple commands.
To see all available options:
make help
Before committing the code, please check if it passes all tests using (note: this will install some dependencies):
make qa
本项目是群体化方法与技术的开源实现案例,在基于Gitea的基础上,进一步支持社交化的协同开发、协同学习、协同研究等群体创新实践服务,特别是针对新一代人工智能技术特点,重点支持项目管理、git代码管理、大数据集存储管理与智能计算平台接入。
Go SVG JavaScript Vue HTML other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》