From 7069faa268b830ae46a32ad9683b677b49e7bf5f Mon Sep 17 00:00:00 2001 From: Martin Schmollinger <martin.schmollinger@gmail.com> Date: Thu, 13 May 2021 16:34:14 +0200 Subject: [PATCH] Initial solution to exercise gopalindrome --- src/gopalindrome/go.mod | 3 +++ src/gopalindrome/main.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/gopalindrome/go.mod create mode 100644 src/gopalindrome/main.go diff --git a/src/gopalindrome/go.mod b/src/gopalindrome/go.mod new file mode 100644 index 0000000..9c4e00e --- /dev/null +++ b/src/gopalindrome/go.mod @@ -0,0 +1,3 @@ +module github.com/turngeek/examples-go/src/gopalindrome + +go 1.16 diff --git a/src/gopalindrome/main.go b/src/gopalindrome/main.go new file mode 100644 index 0000000..5886b1c --- /dev/null +++ b/src/gopalindrome/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "os" + "strings" + "unicode" +) + +func main() { + if len(os.Args) < 2 { + fmt.Println("Usage: gopalindrome [sentence]") + } else { + sentence := strings.Join(os.Args[1:], " ") + var result string + if isPalindrome := isPalindrome(sentence); isPalindrome { + result = "a" + } else { + result = "not a" + } + fmt.Printf("Your sentence: '%s' is %s palindrome!\n", sentence, result) + } +} + +func isPalindrome(s string) bool { + var letters []rune + for _, r := range s { + if unicode.IsLetter(r) { + letters = append(letters, unicode.ToLower(r)) + } + } + for i := range letters { + if letters[i] != letters[len(letters)-1-i] { + return false + } + } + return true +} -- GitLab