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