From a07818e34152084b1f39a497005404737619ca5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ho=C3=A0ng=20H=E1=BA=A3i=20=C4=90=C4=83ng?= <59923752+danghh-1998@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:35:11 +0700 Subject: [PATCH] Fix RankN function when n greater than 10 (#1) Co-authored-by: danghh --- lexorank.go | 6 +++++- lexorank_test.go | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lexorank.go b/lexorank.go index 6390788..00afce7 100644 --- a/lexorank.go +++ b/lexorank.go @@ -2,6 +2,7 @@ package lexorank import ( "errors" + "fmt" "strconv" ) @@ -59,9 +60,12 @@ func RankN(prev, next string, n int) ([]string, error) { return nil, err } + suffixRankLen := len(strconv.Itoa(n)) + suffixRankFormat := fmt.Sprintf("%%0%dd", suffixRankLen) + res := make([]string, 0, n) for i := 0; i < n; i++ { - res = append(res, idx+strconv.Itoa(i)) + res = append(res, idx+fmt.Sprintf(suffixRankFormat, i)) } return res, nil } diff --git a/lexorank_test.go b/lexorank_test.go index 0fcb4dd..27243bf 100644 --- a/lexorank_test.go +++ b/lexorank_test.go @@ -58,6 +58,7 @@ func TestRankN(t *testing.T) { {"az", "b", 3, []string{"azU0", "azU1", "azU2"}, false}, {"a", "d", 2, []string{"b0", "b1"}, false}, {"a", "c", 4, []string{"b0", "b1", "b2", "b3"}, false}, + {"0", "z", 20, []string{"U00", "U01", "U02", "U03", "U04", "U05", "U06", "U07", "U08", "U09", "U10", "U11", "U12", "U13", "U14", "U15", "U16", "U17", "U18", "U19"}, false}, {"a", "_", 4, []string{"b0", "b1", "b2", "b3"}, true}, }