Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/vendor/github.com/willf/bitset
akuma06 a41f938cec Add Godep support (#758)
As we have seen, dependencies version can prevent the build. We should
user lock versions on dependencies that we know work:
* Packages are vendored
* Add Godep support
* Added addtional install step in readme
* Fix travis build error
2017-05-26 13:07:22 +02:00
..
.gitignore Add Godep support (#758) 2017-05-26 13:07:22 +02:00
.travis.yml Add Godep support (#758) 2017-05-26 13:07:22 +02:00
bitset.go Add Godep support (#758) 2017-05-26 13:07:22 +02:00
LICENSE Add Godep support (#758) 2017-05-26 13:07:22 +02:00
Makefile Add Godep support (#758) 2017-05-26 13:07:22 +02:00
popcnt.go Add Godep support (#758) 2017-05-26 13:07:22 +02:00
popcnt_amd64.go Add Godep support (#758) 2017-05-26 13:07:22 +02:00
popcnt_amd64.s Add Godep support (#758) 2017-05-26 13:07:22 +02:00
popcnt_generic.go Add Godep support (#758) 2017-05-26 13:07:22 +02:00
README.md Add Godep support (#758) 2017-05-26 13:07:22 +02:00
VERSION Add Godep support (#758) 2017-05-26 13:07:22 +02:00

bitset

Go language library to map between non-negative integers and boolean values

Master Build Status Master Coverage Status Go Report Card GoDoc

Description

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.

Example use:

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

Installation

go get github.com/willf/bitset

Contributing

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

Running all tests

Before committing the code, please check if it passes all tests using (note: this will install some dependencies):

make qa