diff --git a/src/Go/003.go b/src/Go/003.go new file mode 100644 index 0000000..fb9b1fa --- /dev/null +++ b/src/Go/003.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "sort" +) + +var ORDER = []string{"R", "A", "M"} + +func tricolor_flag(lst []string) []string { + result := append([]string(nil), lst...) // copy (like Python sorted) + order := make(map[string]int, len(ORDER)) + for i, v := range ORDER { + order[v] = i + } + + sort.SliceStable(result, func(i int, j int) bool { + return order[result[i]] < order[result[j]] + }) + + return result + +} + +func main() { + check := []string{"M","R","A","A","R","R","A","M","M"} + fmt.Println(tricolor_flag(check)) // [R,R,R,A,A,A,M,M,M] + + check = []string{"M", "R", "A", "R", "R", "A"} + fmt.Println(tricolor_flag(check)) // [R,R,R,A,A,M] +}