From b9c12e6a47decc47b49f970f130646f6f983832a Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:41:15 +0000 Subject: [PATCH] [Sync Iteration] go/diamond/1 --- solutions/go/diamond/1/diamond.go | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 solutions/go/diamond/1/diamond.go diff --git a/solutions/go/diamond/1/diamond.go b/solutions/go/diamond/1/diamond.go new file mode 100644 index 0000000..715fb4a --- /dev/null +++ b/solutions/go/diamond/1/diamond.go @@ -0,0 +1,34 @@ +package diamond + +import "strings" + +func Gen(char byte) (string, error) { + if char == 'A' { + return "A", nil + } + + spaces := int(char - 'A') + lines := make([]string, spaces) + for i := 0; i <= spaces; i++ { + var line strings.Builder + line.WriteString(strings.Repeat(string(char), spaces-i)) + line.WriteByte(char) + + if i > 0 { + line.WriteString(strings.Repeat(" ", (spaces*2+2)-((spaces-i)*2+2))) + line.WriteByte(char) + } + + line.WriteString(strings.Repeat(string(char), spaces-i)) + lines = append(lines, line.String()) + } + + var result strings.Builder + for _, i := range lines { + result.WriteString(i) + } + for i := spaces - 1; i >= 0; spaces-- { + result.WriteString(lines[i]) + } + return result.String(), nil +}