diff options
Diffstat (limited to 'lib/byte.go')
-rw-r--r-- | lib/byte.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/byte.go b/lib/byte.go new file mode 100644 index 0000000..744c0d7 --- /dev/null +++ b/lib/byte.go @@ -0,0 +1,31 @@ +// Copyright © 2020 rsiddharth <s@ricketyspace.net> +// SPDX-License-Identifier: ISC + +package lib + +// Returns true if byte `b` is in `bs` +func ByteInBytes(b byte, bs []byte) bool { + for _, bi := range bs { + if b == bi { + return true + } + } + return false +} + +// Returns bytes that are common in the given array of array of bytes `bbytes`. +func BytesInCommon(bbytes [][]byte) []byte { + common := make([]byte, 0) + switch l := len(bbytes); { + case l == 1: + common = bbytes[0] + case l > 1: + commonRest := BytesInCommon(bbytes[1:]) + for _, b := range bbytes[0] { + if ByteInBytes(b, commonRest) { + common = append(common, b) + } + } + } + return common +} |