diff options
| author | Lance Wicks <lw@judocoach.com> | 2021-07-06 16:27:12 +0100 |
|---|---|---|
| committer | Lance Wicks <lw@judocoach.com> | 2021-07-08 11:48:42 +0100 |
| commit | 3079faeabb2dcc35d51ef6d4571278da261946da (patch) | |
| tree | 42d7ac60bfdd9c7e78f82b17ce509a18122b38c0 /challenge-120 | |
| parent | 54b4e4ee73ff78d845109729ef015b001a09c640 (diff) | |
| download | perlweeklychallenge-club-3079faeabb2dcc35d51ef6d4571278da261946da.tar.gz perlweeklychallenge-club-3079faeabb2dcc35d51ef6d4571278da261946da.tar.bz2 perlweeklychallenge-club-3079faeabb2dcc35d51ef6d4571278da261946da.zip | |
120 task 1, Golang
Diffstat (limited to 'challenge-120')
| -rw-r--r-- | challenge-120/lance-wicks/golang/bits.go | 38 | ||||
| -rw-r--r-- | challenge-120/lance-wicks/golang/bits_test.go | 20 | ||||
| -rw-r--r-- | challenge-120/lance-wicks/golang/go.mod | 5 | ||||
| -rw-r--r-- | challenge-120/lance-wicks/golang/go.sum | 11 |
4 files changed, 74 insertions, 0 deletions
diff --git a/challenge-120/lance-wicks/golang/bits.go b/challenge-120/lance-wicks/golang/bits.go new file mode 100644 index 0000000000..3448a13786 --- /dev/null +++ b/challenge-120/lance-wicks/golang/bits.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "os" + "regexp" + "strconv" +) + +func main() { + n, _ := strconv.Atoi(os.Args[1]) + fmt.Print("Output: ") + fmt.Println(swapBits(n)) +} + +func swapBits(n int) int { + binary := fmt.Sprintf("%08b", n) + + re := regexp.MustCompile(`..`) + bits := re.FindAllString(binary, -1) + binary_reversed := "" + + for _, bit := range bits { + binary_reversed = binary_reversed + Reverse(bit) + } + + new_int, _ := strconv.ParseInt(binary_reversed, 2, 64) + + return int(new_int) +} + +func Reverse(s string) string { + runes := []rune(s) + for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { + runes[i], runes[j] = runes[j], runes[i] + } + return string(runes) +} diff --git a/challenge-120/lance-wicks/golang/bits_test.go b/challenge-120/lance-wicks/golang/bits_test.go new file mode 100644 index 0000000000..6fa1388c32 --- /dev/null +++ b/challenge-120/lance-wicks/golang/bits_test.go @@ -0,0 +1,20 @@ +package main + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestSwap(t *testing.T) { + expect := 154 + got := swapBits(101) + + assert.Equal(t, expect, got, "Example 1") +} + +func TestReverse(t *testing.T) { + expect := "cba" + got := Reverse("abc") + + assert.Equal(t, expect, got, "Reverse") +} diff --git a/challenge-120/lance-wicks/golang/go.mod b/challenge-120/lance-wicks/golang/go.mod new file mode 100644 index 0000000000..fffc07af76 --- /dev/null +++ b/challenge-120/lance-wicks/golang/go.mod @@ -0,0 +1,5 @@ +module bits + +go 1.16 + +require github.com/stretchr/testify v1.7.0 diff --git a/challenge-120/lance-wicks/golang/go.sum b/challenge-120/lance-wicks/golang/go.sum new file mode 100644 index 0000000000..acb88a48f6 --- /dev/null +++ b/challenge-120/lance-wicks/golang/go.sum @@ -0,0 +1,11 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
