diff --git a/module-4/task-1/palindrome/palindrome.go b/module-4/task-1/palindrome/palindrome.go index f0640a6..d745404 100644 --- a/module-4/task-1/palindrome/palindrome.go +++ b/module-4/task-1/palindrome/palindrome.go @@ -1,5 +1,24 @@ package palindrome +import ( + "unicode/utf8" +) + func IsPalindrome(s string) bool { + reversed := reverse(s) + if s != reversed { + return false + } return true } + +func reverse(s string) string { + totalLength := len(s) + buffer := make([]byte, totalLength) + for i := 0; i < totalLength; { + r, size := utf8.DecodeRuneInString(s[i:]) + i += size + utf8.EncodeRune(buffer[totalLength-i:], r) + } + return string(buffer) +} diff --git a/module-4/task-1/palindrome/palindrome_test.go b/module-4/task-1/palindrome/palindrome_test.go index 2a049d8..b5fe9f7 100644 --- a/module-4/task-1/palindrome/palindrome_test.go +++ b/module-4/task-1/palindrome/palindrome_test.go @@ -10,9 +10,9 @@ func TestIsPalindrome(t *testing.T) { exp bool }{ {in: "aa", exp: true}, + {in: "mełłem", exp: true}, {in: "ab", exp: false}, {in: "aba", exp: true}, - {in: "mełłem", exp: true}, {in: "Hello", exp: false}, } diff --git a/module-4/task-2/panic/panic.go b/module-4/task-2/panic/panic.go index 8d18a38..3cf3f61 100644 --- a/module-4/task-2/panic/panic.go +++ b/module-4/task-2/panic/panic.go @@ -1,9 +1,16 @@ package panic +import "fmt" + func iWillPanic() { panic("something") } func catchPanic() { + defer func() { + if r := recover(); r != nil { + fmt.Println("Recovered: ", r) + } + }() iWillPanic() }