diff --git a/internal/app/model/dto/challenge_score.go b/internal/app/model/dto/challenge_score.go index 1cc4673..21110e6 100644 --- a/internal/app/model/dto/challenge_score.go +++ b/internal/app/model/dto/challenge_score.go @@ -20,18 +20,26 @@ func (p Scores) Less(i, j int) bool { s3 := strings.ToUpper(p[i].TeamName) s4 := strings.ToUpper(p[j].TeamName) - temp1 := []byte(p[i].TeamName) - temp2 := []byte(p[j].TeamName) + temp1 := []rune(p[i].TeamName) + temp2 := []rune(p[j].TeamName) - lcc1 := []byte(s3) - lcc2 := []byte(s4) + lcc1 := []rune(s3) + lcc2 := []rune(s4) for i, _ := range lcc1 { + if !isLetterOrNum(lcc1[i]) { + lcc1[i] += 300 + } + if lcc1[i] >= 48 && lcc1[i] <= 57 { lcc1[i] += 100 } } for i, _ := range lcc2 { + if !isLetterOrNum(lcc2[i]) { + lcc2[i] += 300 + } + if lcc2[i] >= 48 && lcc2[i] <= 57 { lcc2[i] += 100 } @@ -66,6 +74,13 @@ func (p Scores) Swap(i, j int) { p[i], p[j] = p[j], p[i] } type Scores []ScoreRank +func isLetterOrNum(b rune) bool { + if (b >= 48 && b <= 57) || (b >= 65 && b <= 90) || (b >= 97 && b <= 122) { + return true + } + return false +} + type ScoreRank struct { Rank int `json:"rank"` TeamName string `json:"team_name"` diff --git a/internal/app/model/dto/scores_test.go b/internal/app/model/dto/scores_test.go new file mode 100644 index 0000000..afa1d2e --- /dev/null +++ b/internal/app/model/dto/scores_test.go @@ -0,0 +1,10 @@ +package dto + +import ( + "testing" +) + +func TestScores(t *testing.T) { + var scores []string + scores = append(scores, "") +}