From 3fa199f451f6ad7eac1c93c5ce4817e8d028449a Mon Sep 17 00:00:00 2001 From: mricher Date: Wed, 24 Feb 2016 09:10:54 +0100 Subject: [PATCH] Squared sequency generation --- dfssp/contract/sequence.go | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 dfssp/contract/sequence.go diff --git a/dfssp/contract/sequence.go b/dfssp/contract/sequence.go new file mode 100644 index 0000000..12e7229 --- /dev/null +++ b/dfssp/contract/sequence.go @@ -0,0 +1,44 @@ +package contract + +import ( + "dfss/dfssp/entities" +) + +// GenerateSignSequence for the contract signature +// +// The generated sequence is an array of integers refering to the User array. +func GenerateSignSequence(users []entities.User) []int { + + return squaredSignEngine(len(users)) +} + +// squaredSignEngine is a basic ^2 engine for sequence generation +func squaredSignEngine(n int) []int { + sequence := make([]int, n*n) + + for i := 0; i < n; i++ { + for k := 0; k < n; k++ { + sequence[i*n+k] = k + } + } + + return sequence +} + +// squaredSignEngineSlice is the same as the above with slicing +func squaredSignEngineSlice(n int) []int { + baseSequence := make([]int, n) + + // populate base slice + for i := 0; i < n; i++ { + baseSequence[i] = i + } + + sequence := make([]int, 0, n*n) + // append n-1 time the slice to itself + for i := 0; i < n; i++ { + sequence = append(sequence, baseSequence...) + } + + return sequence +} -- GitLab