commit be1bd10e22da7dec0f33d75407386f07f91f4cae
parent 8b94dbcf03580871720953d538f1ca7b1179fd90
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 16 Nov 2022 03:29:47 -0500
remove getClassName hacks and make it always work
Diffstat:
2 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/cmd/art/main.go b/cmd/art/main.go
@@ -134,20 +134,31 @@ func HexFromRgbColor(color color.NRGBA) string {
}
func getClassName(idx int) string {
- var out []rune
- r := 'a' - 1
- for idx >= 0 {
- if r == 'z' {
- if len(out) == 0 {
+ out := []rune{'a'}
+ for idx > 0 {
+ if out[0] == 'z' {
+ found := false
+ for i := range out {
+ if out[i] < 'z' {
+ found = true
+ out[i]++
+ break
+ }
+ }
+ if !found {
out = append(out, 'a')
- } else {
- out[0]++
+ for i := range out {
+ out[i] = 'a'
+ }
}
- r = 'a' - 1
+ out[0] = 'a' - 1
}
- r++
+ out[0]++
idx--
}
- out = append(out, r)
+ // Reverse slice
+ for i, j := 0, len(out)-1; i < j; i, j = i+1, j-1 {
+ out[i], out[j] = out[j], out[i]
+ }
return string(out)
}
diff --git a/cmd/art/main_test.go b/cmd/art/main_test.go
@@ -16,4 +16,11 @@ func TestGetClassName(t *testing.T) {
assert.Equal(t, "bb", getClassName(53))
assert.Equal(t, "bz", getClassName(77))
assert.Equal(t, "ca", getClassName(78))
+ assert.Equal(t, "zz", getClassName(701))
+ assert.Equal(t, "aaa", getClassName(702))
+ assert.Equal(t, "aab", getClassName(703))
+ assert.Equal(t, "aaz", getClassName(727))
+ assert.Equal(t, "aba", getClassName(728))
+ assert.Equal(t, "abz", getClassName(753))
+ assert.Equal(t, "aca", getClassName(754))
}