aboutsummaryrefslogtreecommitdiff
path: root/challenge-120
diff options
context:
space:
mode:
authorLance Wicks <lw@judocoach.com>2021-07-06 16:27:12 +0100
committerLance Wicks <lw@judocoach.com>2021-07-08 11:48:42 +0100
commit3079faeabb2dcc35d51ef6d4571278da261946da (patch)
tree42d7ac60bfdd9c7e78f82b17ce509a18122b38c0 /challenge-120
parent54b4e4ee73ff78d845109729ef015b001a09c640 (diff)
downloadperlweeklychallenge-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.go38
-rw-r--r--challenge-120/lance-wicks/golang/bits_test.go20
-rw-r--r--challenge-120/lance-wicks/golang/go.mod5
-rw-r--r--challenge-120/lance-wicks/golang/go.sum11
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=