parent
							
								
									00063359d3
								
							
						
					
					
						commit
						3aa911a1ad
					
				| @ -0,0 +1,7 @@ | |||||||
|  | # This file is automatically @generated by Cargo. | ||||||
|  | # It is not intended for manual editing. | ||||||
|  | version = 3 | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "d6" | ||||||
|  | version = "0.1.0" | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | [package] | ||||||
|  | name = "d6" | ||||||
|  | version = "0.1.0" | ||||||
|  | edition = "2021" | ||||||
|  | 
 | ||||||
|  | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||||
|  | 
 | ||||||
|  | [dependencies] | ||||||
| @ -0,0 +1,55 @@ | |||||||
|  | use std::{fs::read_to_string, io::Result}; | ||||||
|  | 
 | ||||||
|  | fn all_diff<T: PartialEq>(list: &[T]) -> bool { | ||||||
|  |     for i in 0..list.len() { | ||||||
|  |         let a = &list[i]; | ||||||
|  |         for j in 0..i { | ||||||
|  |             let b = &list[j]; | ||||||
|  |             if a == b { | ||||||
|  |                 return false; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     true | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn main() -> Result<()> { | ||||||
|  |     let mut p1_ring_buf = [None; 4]; | ||||||
|  |     let mut p1_pos = 0; | ||||||
|  |     let mut p2_ring_buf = [None; 14]; | ||||||
|  |     let mut p2_pos = 0; | ||||||
|  | 
 | ||||||
|  |     let mut p1_result = 0; | ||||||
|  |     let mut p2_result = 0; | ||||||
|  | 
 | ||||||
|  |     for (i, c) in read_to_string("input.txt")?.chars().enumerate() { | ||||||
|  |         p1_ring_buf[p1_pos] = Some(c); | ||||||
|  |         p1_pos += 1; | ||||||
|  |         if p1_pos == p1_ring_buf.len() { | ||||||
|  |             p1_pos = 0 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         p2_ring_buf[p2_pos] = Some(c); | ||||||
|  |         p2_pos += 1; | ||||||
|  |         if p2_pos == p2_ring_buf.len() { | ||||||
|  |             p2_pos = 0 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if p1_result == 0 { | ||||||
|  |             if i >= p1_ring_buf.len() && all_diff(&p1_ring_buf) { | ||||||
|  |                 p1_result = i + 1; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if p2_result == 0 { | ||||||
|  |             if i >= p2_ring_buf.len() && all_diff(&p2_ring_buf) { | ||||||
|  |                 p2_result = i + 1; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     println!("Part 1: {}", p1_result); | ||||||
|  |     println!("Part 2: {}", p2_result); | ||||||
|  | 
 | ||||||
|  |     Ok(()) | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in new issue