xingbi-challenge/main.rs
2024-11-03 17:22:24 -05:00

28 lines
851 B
Rust

#[no_mangle]
fn get_reversals_to_sort(arr: &[i32]) -> Vec<usize> {
let mut intermediate: Vec<i32> = arr.into();
let mut ret: Vec<usize> = Vec::new();
for i in (2..=intermediate.len()).rev() {
let max = intermediate[0..i].iter().max().unwrap();
let found = intermediate[0..i].iter().position(|e| e == max).unwrap();
let first_swap = found + 1;
let second_swap = i;
if first_swap != second_swap {
if first_swap > 1 {
ret.push(first_swap);
intermediate[0..first_swap].reverse();
}
ret.push(second_swap);
intermediate[0..second_swap].reverse();
}
}
ret
}
pub fn main() {
let vals = include!("inp.txt"); //[12, 13, 11, 14];
let show = get_reversals_to_sort(&vals);
//println!("{:?}", show);
}