Compare commits
4 Commits
cbc9db76f2
...
aa20952dc2
| Author | SHA1 | Date | |
|---|---|---|---|
| aa20952dc2 | |||
| 002fff8d1d | |||
| 0d7a0f9986 | |||
| 649de7b871 |
31
src/Go/003.go
Normal file
31
src/Go/003.go
Normal file
@@ -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]
|
||||
}
|
||||
13
src/Julia/003.jl
Normal file
13
src/Julia/003.jl
Normal file
@@ -0,0 +1,13 @@
|
||||
ORDER = ("R", "A", "M")
|
||||
|
||||
function tricolor_flag(lst)
|
||||
order = Dict(value => idx for (idx, value) in enumerate(ORDER))
|
||||
return sort(lst, by= x -> order[x])
|
||||
end
|
||||
|
||||
|
||||
check = ["M","R","A","A","R","R","A","M","M"]
|
||||
println(tricolor_flag(check)) # [R,R,R,A,A,A,M,M,M]
|
||||
|
||||
check = ["M", "R", "A", "R", "R", "A"]
|
||||
println(tricolor_flag(check)) # [R,R,R,A,A,M]
|
||||
11
src/Python/003.py
Normal file
11
src/Python/003.py
Normal file
@@ -0,0 +1,11 @@
|
||||
ORDER = ("R", "A", "M")
|
||||
|
||||
def tricolor_flag(lst: list) -> list:
|
||||
order: dict[str, int] = {value: idx for idx, value in enumerate(ORDER)}
|
||||
return sorted(lst, key=order.__getitem__)
|
||||
|
||||
check = ["M","R","A","A","R","R","A","M","M"]
|
||||
print(tricolor_flag(check)) # [R,R,R,A,A,A,M,M,M]
|
||||
|
||||
check = ["M", "R", "A", "R", "R", "A"]
|
||||
print(tricolor_flag(check)) # [R,R,R,A,A,M]
|
||||
20
src/Rust/003.rs
Normal file
20
src/Rust/003.rs
Normal file
@@ -0,0 +1,20 @@
|
||||
const ORDER: [&str; 3] = ["R", "A", "M"];
|
||||
|
||||
fn tricolor_flag<'a>(lst: &[&'a str]) -> Vec<&'a str> {
|
||||
let mut ordered_lst = lst.to_vec();
|
||||
ordered_lst.sort_by_key(|s| {
|
||||
ORDER
|
||||
.iter()
|
||||
.position(|&v| v == *s)
|
||||
});
|
||||
|
||||
return ordered_lst
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let check = vec!["M","R","A","A","R","R","A","M","M"];
|
||||
println!("{:?}", tricolor_flag(&check)); // [R,R,R,A,A,A,M,M,M]
|
||||
|
||||
let check = vec!["M", "R", "A", "R", "R", "A"];
|
||||
println!("{:?}", tricolor_flag(&check)); // [R,R,R,A,A,M]
|
||||
}
|
||||
Reference in New Issue
Block a user