From 6b06f77ce077e421a6219c454f1c8a43fe329c33 Mon Sep 17 00:00:00 2001 From: siddharth Date: Sat, 5 Jun 2021 16:11:06 -0400 Subject: lib: add byte.go - Add `ByteInBytes` function - Add `BytesInCommon` function --- lib/byte.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/byte.go (limited to 'lib/byte.go') 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 +// 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 +} -- cgit v1.2.3