Wrote program for Day 7

This commit is contained in:
Mariano Riefolo 2024-08-01 13:17:53 +02:00
parent 2027871010
commit 1fb8530cbc
4 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,6 @@
[package]
name = "merge_sorted_array"
version = "0.1.0"
edition = "2021"
[dependencies]

View File

@ -0,0 +1,21 @@
pub fn merge(arr1: &mut [usize], arr2: &[usize]) {
let arr2_len = arr2.len();
let arr1_len = arr1.len() - arr2_len;
let mut arr2_iterator = 0;
let mut arr1_iterator = 0;
let temp_arr1 = arr1.to_vec();
for _ in 0..arr1_len + arr2_len {
if arr1_iterator == arr1_len {
arr1[arr1_iterator + arr2_iterator] = arr2[arr2_iterator];
arr2_iterator += 1;
} else if arr2_iterator == arr2_len || temp_arr1[arr1_iterator] <= arr2[arr2_iterator] {
arr1[arr1_iterator + arr2_iterator] = temp_arr1[arr1_iterator];
arr1_iterator += 1;
} else if arr2[arr2_iterator] < temp_arr1[arr1_iterator] {
arr1[arr1_iterator + arr2_iterator] = arr2[arr2_iterator];
arr2_iterator += 1;
}
}
}

View File

@ -0,0 +1,46 @@
use std::io::{self, Write};
use merge_sorted_array::merge;
fn main() {
let mut buffer = String::new();
print!("Insert the first set of numbers separated by a space: ");
io::stdout().flush().expect("Failed to flush stdout.");
io::stdin()
.read_line(&mut buffer)
.expect("Failed to read from stdin.");
let mut nums1: Vec<usize> = buffer
.split(' ')
.map(|x| x.trim())
.filter(|x| !x.is_empty())
.map(|x| x.parse().expect("A non-integer has been inserted."))
.collect();
nums1.sort();
print!("Insert the second set of numbers separated by a space: ");
io::stdout().flush().expect("Failed to flush stdout.");
buffer = String::new();
io::stdin()
.read_line(&mut buffer)
.expect("Failed to read from stdin.");
let mut nums2: Vec<usize> = buffer
.split(' ')
.map(|x| x.trim())
.filter(|x| !x.is_empty())
.map(|x| x.parse().expect("A non-integer has been inserted."))
.collect();
nums2.sort();
nums1.resize(nums1.len() + nums2.len(), 0);
merge(&mut nums1, &nums2);
let merged: String = nums1.into_iter().map(|x| x.to_string() + " ").collect();
println!("Your ordered and merged sets: {}", merged);
}

View File

@ -0,0 +1,9 @@
use merge_sorted_array::merge;
#[test]
fn example() {
let mut nums1 = [1, 2, 3, 0, 0, 0];
let nums2 = [2, 5, 6];
merge(&mut nums1, &nums2);
assert_eq!(nums1, [1, 2, 2, 3, 5, 6]);
}