
Followed the Migration Guide at https://cli.urfave.org/migrate-v1-to-v2/ The major changes not pointed out in the migration guide are: - context.Args() no longer produces a []slice, so context.Args().Slice() in substitued - All cli.Global***** are deprecated (the migration guide is somewhat unclear on this) Signed-off-by: Derek Nola <derek.nola@suse.com> Vendor in urfave cli/v2 Signed-off-by: Derek Nola <derek.nola@suse.com> Fix NewStringSlice calls Signed-off-by: Derek Nola <derek.nola@suse.com>
26 lines
544 B
Go
26 lines
544 B
Go
package smetrics
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// The Hamming distance is the minimum number of substitutions required to change string A into string B. Both strings must have the same size. If the strings have different sizes, the function returns an error.
|
|
func Hamming(a, b string) (int, error) {
|
|
al := len(a)
|
|
bl := len(b)
|
|
|
|
if al != bl {
|
|
return -1, fmt.Errorf("strings are not equal (len(a)=%d, len(b)=%d)", al, bl)
|
|
}
|
|
|
|
var difference = 0
|
|
|
|
for i := range a {
|
|
if a[i] != b[i] {
|
|
difference = difference + 1
|
|
}
|
|
}
|
|
|
|
return difference, nil
|
|
}
|