Compare commits

..

4 Commits

Author SHA1 Message Date
aa20952dc2 Bandera tricolor en Go 2026-05-10 18:58:35 +02:00
002fff8d1d Bandera tricolor en Rust 2026-05-10 18:58:26 +02:00
0d7a0f9986 Bandera tricolor en Julia 2026-05-10 18:58:13 +02:00
649de7b871 Bandera tricolor en Python 2026-05-10 18:58:03 +02:00
4 changed files with 75 additions and 0 deletions

31
src/Go/003.go Normal file
View 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
View 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
View 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
View 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]
}