From 5692e2217c6074504884ad2b3c64d555452cc7f2 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 11 Nov 2016 09:57:45 +0100 Subject: Solve diamond --- go/diamond/diamond.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 go/diamond/diamond.go diff --git a/go/diamond/diamond.go b/go/diamond/diamond.go new file mode 100644 index 0000000..37e74fd --- /dev/null +++ b/go/diamond/diamond.go @@ -0,0 +1,24 @@ +package diamond + +import ( + "bytes" + "errors" +) + +const testVersion = 1 + +func Gen(b byte) (string, error) { + if b < 'A' || b > 'Z' { + return "", errors.New("out of range") + } + x := int(b - 'A') + rows := make([][]byte, 2*x+1) + for i, j := x, 0; i >= 0; i, j = i-1, j+1 { + line := bytes.Repeat([]byte{' '}, 2*x+2) + line[2*x+1] = '\n' + char := 'A' + byte(j) + line[i], line[2*x-i] = char, char + rows[j], rows[2*x-j] = line, line + } + return string(bytes.Join(rows, nil)), nil +} -- cgit v1.2.3