init
This commit is contained in:
		
							
								
								
									
										19
									
								
								d04/src/a1.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								d04/src/a1.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
 | 
			
		||||
fn contains(v1 :&Vec<i32>, v2 :&Vec<i32>) -> bool {
 | 
			
		||||
    if v1.len() < 2 || v1.len() < 2 { return false; }
 | 
			
		||||
    return v1[0] <= v2[0] && v2[1] <= v1[1]; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn run(inp :Vec<String>) {
 | 
			
		||||
    
 | 
			
		||||
    let sum = inp.iter().map(|pair| {
 | 
			
		||||
        let sec :Vec<&str> = pair.split(',').collect();
 | 
			
		||||
        let first :Vec<i32> = sec[0].split('-').map(|p| p.parse::<i32>().unwrap()).collect(); 
 | 
			
		||||
        let second :Vec<i32> = sec[1].split('-').map(|p| p.parse::<i32>().unwrap()).collect();
 | 
			
		||||
        if contains(&first, &second) || contains(&second, &first) {1} else {0}
 | 
			
		||||
        
 | 
			
		||||
    }).sum::<i32>(); 
 | 
			
		||||
 | 
			
		||||
    println!("a1: {}", sum); 
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								d04/src/a2.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								d04/src/a2.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
 | 
			
		||||
fn contains(v1 :&Vec<i32>, v2 :&Vec<i32>) -> bool {
 | 
			
		||||
    if v1.len() < 2 || v1.len() < 2 { return false; }
 | 
			
		||||
    
 | 
			
		||||
    return  (v1[0]..=v1[1]).contains(&v2[0]) ||
 | 
			
		||||
            (v1[0]..=v1[1]).contains(&v2[1]); 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn run(inp :Vec<String>) {
 | 
			
		||||
    
 | 
			
		||||
    let sum = inp.iter().map(|pair| {
 | 
			
		||||
        let sec :Vec<&str> = pair.split(',').collect();
 | 
			
		||||
        let first :Vec<i32> = sec[0].split('-').map(|p| p.parse::<i32>().unwrap()).collect(); 
 | 
			
		||||
        let second :Vec<i32> = sec[1].split('-').map(|p| p.parse::<i32>().unwrap()).collect();
 | 
			
		||||
        if contains(&first, &second) || contains(&second, &first) {1} else {0}
 | 
			
		||||
        
 | 
			
		||||
    }).sum::<i32>(); 
 | 
			
		||||
 | 
			
		||||
    println!("a1: {}", sum); 
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										41
									
								
								d04/src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								d04/src/main.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
use std::io::BufRead; 
 | 
			
		||||
 | 
			
		||||
mod a1; 
 | 
			
		||||
mod a2; 
 | 
			
		||||
 | 
			
		||||
fn read_file(path :&str) -> Vec<String> {
 | 
			
		||||
 | 
			
		||||
    let file = std::fs::File::open(path); 
 | 
			
		||||
    
 | 
			
		||||
    return match file {
 | 
			
		||||
     
 | 
			
		||||
        Ok(handle) => {
 | 
			
		||||
 | 
			
		||||
            let reader = std::io::BufReader::new(handle);
 | 
			
		||||
 | 
			
		||||
            let mut vec : Vec<String> = vec![]; 
 | 
			
		||||
 | 
			
		||||
            reader.lines().for_each(|elem| {
 | 
			
		||||
                vec.push(elem.unwrap()); 
 | 
			
		||||
            }); 
 | 
			
		||||
 | 
			
		||||
            vec
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Err(_) => vec![] 
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
    
 | 
			
		||||
    let inp :Vec<String> = read_file("input.txt"); 
 | 
			
		||||
 | 
			
		||||
    a1::run(inp.clone()); 
 | 
			
		||||
 | 
			
		||||
    a2::run(inp);
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user