Frederic G. MARAND пре 6 година
родитељ
комит
bb093e0a96

+ 13 - 0
go/kyu5/directions_reduction/directions_reduction_suite_test.go

@@ -0,0 +1,13 @@
+package kata_test
+
+import (
+	"testing"
+
+	. "github.com/onsi/ginkgo"
+	. "github.com/onsi/gomega"
+)
+
+func TestDirectionsReduction(t *testing.T) {
+	RegisterFailHandler(Fail)
+	RunSpecs(t, "DirectionsReduction Suite")
+}

+ 39 - 0
go/kyu5/directions_reduction/k.go

@@ -0,0 +1,39 @@
+package kata
+
+func areComplementary(a, b string) bool {
+	switch a {
+	case "NORTH":
+		return b == "SOUTH"
+	case "EAST":
+		return b == "WEST"
+	case "SOUTH":
+		return b == "NORTH"
+	case "WEST":
+		return b == "EAST"
+	default:
+		return falsetri
+	}
+}
+
+func DirReduc(arr []string) []string {
+	// Shortcut for irreducible lists.
+	l := len(arr)
+	if l <= 1 {
+		return arr
+	}
+	for i := 1; i < l; i++ {
+		if areComplementary(arr[i-1], arr[i]) {
+			if i == 1 {
+				if l <= 2 {
+					return []string{}
+				}
+				return DirReduc(arr[i+1:])
+			}
+			if i == l-1 {
+				return DirReduc(arr[:i-1])
+			}
+			return DirReduc(append(arr[:i-1], arr[i+1:]...))
+		}
+	}
+	return arr
+}

+ 26 - 0
go/kyu5/directions_reduction/k_test.go

@@ -0,0 +1,26 @@
+package kata_test
+
+import (
+	. "github.com/onsi/ginkgo"
+	. "github.com/onsi/gomega"
+
+	. "code.osinet.fr/fgm/codewars/kyu5/directions_reduction"
+)
+
+func dotest(arr []string, exp []string) {
+	var ans = DirReduc(arr)
+	Expect(ans).To(Equal(exp))
+}
+
+var _ = Describe("Tests DirReduc", func() {
+
+	It("should handle basic cases", func() {
+		var a = []string{"NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"}
+		dotest(a, []string{"WEST"})
+		a = []string{"NORTH", "WEST", "SOUTH", "EAST"}
+		dotest(a, []string{"NORTH", "WEST", "SOUTH", "EAST"})
+		a = []string{"NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "NORTH"}
+		dotest(a, []string{"NORTH"})
+
+	})
+})

PANIC: session(release): write data/sessions/d/f/df293f2eefc3a260: no space left on device

PANIC

session(release): write data/sessions/d/f/df293f2eefc3a260: no space left on device
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/session@v1.0.3/session.go:204 (0xb13e07)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:80 (0x967b75)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:114 (0x967bf6)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/recovery.go:161 (0x15baec4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/logger.go:40 (0x96b257)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:187 (0x972959)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:304 (0x973a01)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/macaron.go:218 (0x96c572)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:3311 (0x85a5cd)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:2073 (0x837f6f)
/my/cache/.heroku/go/go1.26.3/go/src/runtime/asm_amd64.s:1771 (0x493380)