Compare commits
	
		
			3 Commits
		
	
	
		
			43ec9c7d2f
			...
			0b0e9bc0f4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0b0e9bc0f4 | |||
| c7a6c47f0e | |||
| e39887f0c2 | 
| @@ -1,4 +1,5 @@ | |||||||
| use std::env; | use std::env; | ||||||
|  | use std::cmp::Ordering; | ||||||
| use std::fs::File; | use std::fs::File; | ||||||
| use std::io::{BufReader, BufRead}; | use std::io::{BufReader, BufRead}; | ||||||
|  |  | ||||||
| @@ -17,40 +18,43 @@ fn parse_num(s: &[u8]) -> (u64, usize) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Assuming no malformed input | // Assuming no malformed input | ||||||
| fn is_in_order(left: &[u8], right: &[u8]) -> bool { | fn compare(left: &[u8], right: &[u8]) -> Ordering { | ||||||
|     //println!(">> {:?}, {:?} -- {:?}", str::from_utf8(left), str::from_utf8(right)); |  | ||||||
|     if left.len() == 0 { |     if left.len() == 0 { | ||||||
|         return true; |         return Ordering::Less; | ||||||
|     } |     } | ||||||
|     if right.len() == 0 { |     if right.len() == 0 { | ||||||
|         return false; |         return Ordering::Greater; | ||||||
|     } |     } | ||||||
|     let (l, r) = (left[0], right[0]); |     let (l, r) = (left[0], right[0]); | ||||||
|     if l == b',' && r == b',' { |     if l == b',' && r == b',' { | ||||||
|         is_in_order(&left[1..], &right[1..]) |         compare(&left[1..], &right[1..]) | ||||||
|     } else if l == b'[' && r == b'[' { |     } else if l == b'[' && r == b'[' { | ||||||
|         is_in_order(&left[1..], &right[1..]) |         compare(&left[1..], &right[1..]) | ||||||
|     } else if l == b']' && r == b']' { |     } else if l == b']' && r == b']' { | ||||||
|         is_in_order(&left[1..], &right[1..]) |         compare(&left[1..], &right[1..]) | ||||||
|     } else if l == b']' { |     } else if l == b']' { | ||||||
|         true |         Ordering::Less | ||||||
|     } else if r == b']' { |     } else if r == b']' { | ||||||
|         false |         Ordering::Greater | ||||||
|     } else if l == b'[' { |     } else if l == b'[' { | ||||||
|         let (num, len) = parse_num(right); |         let (num, len) = parse_num(right); | ||||||
|         is_in_order(&left, &[b"[", num.to_string().as_bytes(), b"]", &right[len..]].concat()) |         compare( | ||||||
|  |             &left, | ||||||
|  |             &[b"[", num.to_string().as_bytes(), b"]", &right[len..]].concat()) | ||||||
|     } else if r == b'[' { |     } else if r == b'[' { | ||||||
|         let (num, len) = parse_num(left); |         let (num, len) = parse_num(left); | ||||||
|         is_in_order(&[b"[", num.to_string().as_bytes(), b"]", &left[len..]].concat(), &right) |         compare( | ||||||
|  |             &[b"[", num.to_string().as_bytes(), b"]", &left[len..]].concat(), | ||||||
|  |              &right) | ||||||
|     } else { |     } else { | ||||||
|         let (lnum, llen) = parse_num(left); |         let (lnum, llen) = parse_num(left); | ||||||
|         let (rnum, rlen) = parse_num(right); |         let (rnum, rlen) = parse_num(right); | ||||||
|         if lnum < rnum { |         if lnum < rnum { | ||||||
|             true |             Ordering::Less | ||||||
|         } else if lnum > rnum { |         } else if lnum > rnum { | ||||||
|             false |             Ordering::Greater | ||||||
|         } else { |         } else { | ||||||
|             is_in_order(&left[llen..], &right[rlen..]) |             compare(&left[llen..], &right[rlen..]) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|          |          | ||||||
| @@ -58,17 +62,20 @@ fn is_in_order(left: &[u8], right: &[u8]) -> bool { | |||||||
|  |  | ||||||
| fn main() { | fn main() { | ||||||
|     let file = File::open(&env::args().nth(1).expect("input")).expect("io err"); |     let file = File::open(&env::args().nth(1).expect("input")).expect("io err"); | ||||||
|     let lines: Vec<String> = BufReader::new(file).lines().flatten().collect(); |     let mut lines: Vec<_> = BufReader::new(file).lines().flatten() | ||||||
|     // TODO: array_chunks() for lazy iter? |         .filter(|line| line != "").collect(); | ||||||
|     let blocks: Vec<_> = lines.chunks(3).collect(); |     lines.push(String::from("[[2]]")); | ||||||
|  |     lines.push(String::from("[[6]]")); | ||||||
|  |     lines.sort_unstable_by(|s1, s2| compare(s1.as_bytes(), s2.as_bytes())); | ||||||
|      |      | ||||||
|     let mut sum = 0; |     let (mut six, mut two): (usize, usize) = (0, 0); | ||||||
|     for (i, block) in blocks.iter().enumerate() { |     for (i, line) in lines.iter().enumerate() { | ||||||
|         // TODO: return error here instead of assert? |         if line == "[[6]]" { | ||||||
|         assert!((block.len() == 3 && block[2] == "") || block.len() == 2); |             six = i + 1; | ||||||
|         if is_in_order(block[0].as_bytes(), block[1].as_bytes()) { |         } | ||||||
|             sum += i + 1; |         if line == "[[2]]" { | ||||||
|  |             two = i + 1; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     println!("Answer: {:?}", sum); |     println!("{:?}", six*two); | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										74
									
								
								day13/src/main1.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								day13/src/main1.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | |||||||
|  | use std::env; | ||||||
|  | use std::fs::File; | ||||||
|  | use std::io::{BufReader, BufRead}; | ||||||
|  |  | ||||||
|  | fn parse_num(s: &[u8]) -> (u64, usize) { | ||||||
|  |     let mut num: u64 = 0; | ||||||
|  |     let mut len = 0; | ||||||
|  |     for i in 0..s.len() { | ||||||
|  |         if s[i].is_ascii_digit() { | ||||||
|  |             num = num*10 + (s[i] as u64 - '0' as u64); | ||||||
|  |             len += 1; | ||||||
|  |         } else { | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     (num, len) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Assuming no malformed input | ||||||
|  | fn is_in_order(left: &[u8], right: &[u8]) -> bool { | ||||||
|  |     //println!(">> {:?}, {:?} -- {:?}", str::from_utf8(left), str::from_utf8(right)); | ||||||
|  |     if left.len() == 0 { | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |     if right.len() == 0 { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     let (l, r) = (left[0], right[0]); | ||||||
|  |     if l == b',' && r == b',' { | ||||||
|  |         is_in_order(&left[1..], &right[1..]) | ||||||
|  |     } else if l == b'[' && r == b'[' { | ||||||
|  |         is_in_order(&left[1..], &right[1..]) | ||||||
|  |     } else if l == b']' && r == b']' { | ||||||
|  |         is_in_order(&left[1..], &right[1..]) | ||||||
|  |     } else if l == b']' { | ||||||
|  |         true | ||||||
|  |     } else if r == b']' { | ||||||
|  |         false | ||||||
|  |     } else if l == b'[' { | ||||||
|  |         let (num, len) = parse_num(right); | ||||||
|  |         is_in_order(&left, &[b"[", num.to_string().as_bytes(), b"]", &right[len..]].concat()) | ||||||
|  |     } else if r == b'[' { | ||||||
|  |         let (num, len) = parse_num(left); | ||||||
|  |         is_in_order(&[b"[", num.to_string().as_bytes(), b"]", &left[len..]].concat(), &right) | ||||||
|  |     } else { | ||||||
|  |         let (lnum, llen) = parse_num(left); | ||||||
|  |         let (rnum, rlen) = parse_num(right); | ||||||
|  |         if lnum < rnum { | ||||||
|  |             true | ||||||
|  |         } else if lnum > rnum { | ||||||
|  |             false | ||||||
|  |         } else { | ||||||
|  |             is_in_order(&left[llen..], &right[rlen..]) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |          | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn main() { | ||||||
|  |     let file = File::open(&env::args().nth(1).expect("input")).expect("io err"); | ||||||
|  |     let lines: Vec<String> = BufReader::new(file).lines().flatten().collect(); | ||||||
|  |     // TODO: array_chunks() for lazy iter? | ||||||
|  |     let blocks: Vec<_> = lines.chunks(3).collect(); | ||||||
|  |      | ||||||
|  |     let mut sum = 0; | ||||||
|  |     for (i, block) in blocks.iter().enumerate() { | ||||||
|  |         // TODO: return error here instead of assert? | ||||||
|  |         assert!((block.len() == 3 && block[2] == "") || block.len() == 2); | ||||||
|  |         if is_in_order(block[0].as_bytes(), block[1].as_bytes()) { | ||||||
|  |             sum += i + 1; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     println!("Answer: {:?}", sum); | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								day14/Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								day14/Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | # This file is automatically @generated by Cargo. | ||||||
|  | # It is not intended for manual editing. | ||||||
|  | version = 3 | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "day14" | ||||||
|  | version = "0.1.0" | ||||||
							
								
								
									
										8
									
								
								day14/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								day14/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | [package] | ||||||
|  | name = "day14" | ||||||
|  | version = "0.1.0" | ||||||
|  | edition = "2021" | ||||||
|  |  | ||||||
|  | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||||
|  |  | ||||||
|  | [dependencies] | ||||||
							
								
								
									
										151
									
								
								day14/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								day14/input.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,151 @@ | |||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 495,155 -> 499,155 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 500,138 -> 505,138 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
|  | 483,160 -> 487,160 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 491,131 -> 502,131 -> 502,130 | ||||||
|  | 475,88 -> 475,89 -> 483,89 -> 483,88 | ||||||
|  | 483,164 -> 487,164 | ||||||
|  | 498,147 -> 503,147 | ||||||
|  | 505,147 -> 510,147 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 516,150 -> 521,150 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 496,13 -> 501,13 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 512,147 -> 517,147 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 497,141 -> 502,141 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 480,162 -> 484,162 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 489,155 -> 493,155 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 498,157 -> 502,157 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 491,147 -> 496,147 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 475,88 -> 475,89 -> 483,89 -> 483,88 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 486,162 -> 490,162 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 508,144 -> 513,144 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
|  | 477,164 -> 481,164 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 504,141 -> 509,141 | ||||||
|  | 489,164 -> 493,164 | ||||||
|  | 480,42 -> 485,42 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 486,157 -> 490,157 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 501,144 -> 506,144 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 492,166 -> 496,166 | ||||||
|  | 509,150 -> 514,150 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 480,134 -> 480,135 -> 500,135 -> 500,134 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 486,166 -> 490,166 | ||||||
|  | 494,144 -> 499,144 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 480,134 -> 480,135 -> 500,135 -> 500,134 | ||||||
|  | 481,46 -> 486,46 | ||||||
|  | 477,44 -> 482,44 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
|  | 491,131 -> 502,131 -> 502,130 | ||||||
|  | 492,157 -> 496,157 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 488,150 -> 493,150 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 474,46 -> 479,46 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 460,73 -> 460,70 -> 460,73 -> 462,73 -> 462,69 -> 462,73 -> 464,73 -> 464,65 -> 464,73 -> 466,73 -> 466,65 -> 466,73 -> 468,73 -> 468,64 -> 468,73 -> 470,73 -> 470,68 -> 470,73 -> 472,73 -> 472,68 -> 472,73 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 488,46 -> 493,46 | ||||||
|  | 495,150 -> 500,150 | ||||||
|  | 474,166 -> 478,166 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 484,44 -> 489,44 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 484,39 -> 484,38 -> 484,39 -> 486,39 -> 486,33 -> 486,39 -> 488,39 -> 488,30 -> 488,39 -> 490,39 -> 490,35 -> 490,39 -> 492,39 -> 492,38 -> 492,39 -> 494,39 -> 494,30 -> 494,39 -> 496,39 -> 496,36 -> 496,39 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 481,92 -> 481,96 -> 476,96 -> 476,99 -> 487,99 -> 487,96 -> 485,96 -> 485,92 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 489,115 -> 489,119 -> 481,119 -> 481,126 -> 494,126 -> 494,119 -> 493,119 -> 493,115 | ||||||
|  | 492,153 -> 496,153 | ||||||
|  | 502,150 -> 507,150 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
|  | 475,88 -> 475,89 -> 483,89 -> 483,88 | ||||||
|  | 480,134 -> 480,135 -> 500,135 -> 500,134 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 492,26 -> 492,17 -> 492,26 -> 494,26 -> 494,16 -> 494,26 -> 496,26 -> 496,22 -> 496,26 -> 498,26 -> 498,17 -> 498,26 -> 500,26 -> 500,20 -> 500,26 -> 502,26 -> 502,25 -> 502,26 -> 504,26 -> 504,23 -> 504,26 -> 506,26 -> 506,21 -> 506,26 -> 508,26 -> 508,16 -> 508,26 -> 510,26 -> 510,24 -> 510,26 | ||||||
|  | 480,166 -> 484,166 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
|  | 470,76 -> 470,80 -> 466,80 -> 466,84 -> 481,84 -> 481,80 -> 474,80 -> 474,76 | ||||||
|  | 485,112 -> 485,102 -> 485,112 -> 487,112 -> 487,111 -> 487,112 -> 489,112 -> 489,105 -> 489,112 | ||||||
|  | 470,49 -> 470,53 -> 468,53 -> 468,60 -> 477,60 -> 477,53 -> 476,53 -> 476,49 | ||||||
							
								
								
									
										105
									
								
								day14/src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								day14/src/main.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | |||||||
|  | use std::env; | ||||||
|  | use std::fs::File; | ||||||
|  | use std::io::{BufReader, BufRead}; | ||||||
|  | use std::cmp::{min, max}; | ||||||
|  |  | ||||||
|  | fn parse_num(s: &[u8]) -> (usize, usize) { | ||||||
|  |     let mut num: usize = 0; | ||||||
|  |     let mut len = 0; | ||||||
|  |     for i in 0..s.len() { | ||||||
|  |         if s[i].is_ascii_digit() { | ||||||
|  |             num = num*10 + (s[i] as usize - '0' as usize); | ||||||
|  |             len += 1; | ||||||
|  |         } else { | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     (num, len) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn print_map(map: &Vec<Vec<char>>) { | ||||||
|  |     for row in map { | ||||||
|  |         let s: String = row.iter().collect(); | ||||||
|  |         println!("{}", s); | ||||||
|  |     } | ||||||
|  |     println!(""); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn main() { | ||||||
|  |     let file = File::open(&env::args().nth(1).expect("input")).expect("io err"); | ||||||
|  |     let lines = BufReader::new(file).lines(); | ||||||
|  |     let (mut minx, mut miny, mut maxx, mut maxy) = | ||||||
|  |         (usize::MAX, usize::MAX, 0, 0); | ||||||
|  |     let mut lists: Vec<Vec<(usize, usize)>> = Vec::new(); | ||||||
|  |  | ||||||
|  |     for line in lines.flatten() { | ||||||
|  |         let l_bytes = line.as_bytes(); | ||||||
|  |         let mut cursor = 0; | ||||||
|  |         let mut list: Vec<(usize, usize)> = Vec::new(); | ||||||
|  |         while cursor < l_bytes.len() { | ||||||
|  |             let (x, lenx) = parse_num(&l_bytes[cursor..]); | ||||||
|  |             let (y, leny) = parse_num(&l_bytes[cursor + lenx + 1..]); | ||||||
|  |             list.push((x, y)); | ||||||
|  |             minx = if x < minx {x} else {minx}; | ||||||
|  |             miny = if y < miny {y} else {miny}; | ||||||
|  |             maxx = if x > maxx {x} else {maxx}; | ||||||
|  |             maxy = if y > maxy {y} else {maxy}; | ||||||
|  |             cursor = cursor + lenx + 1 + leny + 4; | ||||||
|  |         } | ||||||
|  |         lists.push(list); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // part2 hack here | ||||||
|  |     minx = 0; | ||||||
|  |     maxx = 1000; | ||||||
|  |     maxy = maxy + 2; | ||||||
|  |     lists.push(vec![(minx, maxy), (maxx, maxy)]); | ||||||
|  |  | ||||||
|  |     println!("{:?} {:?} {:?} {:?}", minx, miny, maxx, maxy); | ||||||
|  |     let mut map: Vec<Vec<char>> = | ||||||
|  |         vec![vec!['.'; maxx - minx + 3]; maxy + 1]; | ||||||
|  |     for list in lists { | ||||||
|  |         let (mut xprev, mut yprev) = &list[0]; | ||||||
|  |         for (x, y) in &list[1..] { | ||||||
|  |             if *x == xprev { | ||||||
|  |                 for ty in *min(y, &yprev)..=*max(y, &yprev) { | ||||||
|  |                     map[ty][*x - minx + 1] = '#'; | ||||||
|  |                 } | ||||||
|  |             } else if *y == yprev { | ||||||
|  |                 for tx in *min(x, &xprev)..=*max(x, &xprev) { | ||||||
|  |                     map[*y][tx - minx + 1] = '#'; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             xprev = *x; | ||||||
|  |             yprev = *y; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     print_map(&map); | ||||||
|  |  | ||||||
|  |     let mut total = 0; | ||||||
|  |     'map: loop { | ||||||
|  |         let (mut rockx, mut rocky) = (500, 0); | ||||||
|  |         'rock: loop { | ||||||
|  |             //println!("{:?}, {:?}", rockx, rocky); | ||||||
|  |             if map[rocky + 1][rockx + 1 - minx] == '.' { | ||||||
|  |                 rocky = rocky + 1; | ||||||
|  |             } else if map[rocky + 1][rockx + 1 - minx - 1] == '.' { | ||||||
|  |                 rocky = rocky + 1; | ||||||
|  |                 rockx = rockx - 1; | ||||||
|  |             } else if map[rocky + 1][rockx + 1 - minx + 1] == '.' { | ||||||
|  |                 rocky = rocky + 1; | ||||||
|  |                 rockx = rockx + 1; | ||||||
|  |             } else { | ||||||
|  |                 map[rocky][rockx - minx + 1] = 'o'; | ||||||
|  |                 total += 1; | ||||||
|  |                 if rockx == 500 && rocky == 0 { | ||||||
|  |                     break 'map; | ||||||
|  |                 } | ||||||
|  |                 //print_map(&map); | ||||||
|  |                 break 'rock; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     print_map(&map); | ||||||
|  |     println!("{:?}", total); | ||||||
|  | } | ||||||
							
								
								
									
										97
									
								
								day14/src/main1.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								day14/src/main1.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | |||||||
|  | use std::env; | ||||||
|  | use std::fs::File; | ||||||
|  | use std::io::{BufReader, BufRead}; | ||||||
|  | use std::cmp::{min, max}; | ||||||
|  |  | ||||||
|  | fn parse_num(s: &[u8]) -> (usize, usize) { | ||||||
|  |     let mut num: usize = 0; | ||||||
|  |     let mut len = 0; | ||||||
|  |     for i in 0..s.len() { | ||||||
|  |         if s[i].is_ascii_digit() { | ||||||
|  |             num = num*10 + (s[i] as usize - '0' as usize); | ||||||
|  |             len += 1; | ||||||
|  |         } else { | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     (num, len) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn print_map(map: &Vec<Vec<char>>) { | ||||||
|  |     for row in map { | ||||||
|  |         let s: String = row.iter().collect(); | ||||||
|  |         println!("{}", s); | ||||||
|  |     } | ||||||
|  |     println!(""); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fn main() { | ||||||
|  |     let file = File::open(&env::args().nth(1).expect("input")).expect("io err"); | ||||||
|  |     let lines = BufReader::new(file).lines(); | ||||||
|  |     let (mut minx, mut miny, mut maxx, mut maxy) = | ||||||
|  |         (usize::MAX, usize::MAX, 0, 0); | ||||||
|  |     let mut lists: Vec<Vec<(usize, usize)>> = Vec::new(); | ||||||
|  |  | ||||||
|  |     for line in lines.flatten() { | ||||||
|  |         let l_bytes = line.as_bytes(); | ||||||
|  |         let mut cursor = 0; | ||||||
|  |         let mut list: Vec<(usize, usize)> = Vec::new(); | ||||||
|  |         while cursor < l_bytes.len() { | ||||||
|  |             let (x, lenx) = parse_num(&l_bytes[cursor..]); | ||||||
|  |             let (y, leny) = parse_num(&l_bytes[cursor + lenx + 1..]); | ||||||
|  |             list.push((x, y)); | ||||||
|  |             minx = if x < minx {x} else {minx}; | ||||||
|  |             miny = if y < miny {y} else {miny}; | ||||||
|  |             maxx = if x > maxx {x} else {maxx}; | ||||||
|  |             maxy = if y > maxy {y} else {maxy}; | ||||||
|  |             cursor = cursor + lenx + 1 + leny + 4; | ||||||
|  |         } | ||||||
|  |         lists.push(list); | ||||||
|  |     } | ||||||
|  |     println!("{:?} {:?} {:?} {:?}", minx, miny, maxx, maxy); | ||||||
|  |     let mut map: Vec<Vec<char>> = | ||||||
|  |         vec![vec!['.'; maxx - minx + 3]; maxy + 1]; | ||||||
|  |     for list in lists { | ||||||
|  |         let (mut xprev, mut yprev) = &list[0]; | ||||||
|  |         for (x, y) in &list[1..] { | ||||||
|  |             if *x == xprev { | ||||||
|  |                 for ty in *min(y, &yprev)..=*max(y, &yprev) { | ||||||
|  |                     map[ty][*x - minx + 1] = '#'; | ||||||
|  |                 } | ||||||
|  |             } else if *y == yprev { | ||||||
|  |                 for tx in *min(x, &xprev)..=*max(x, &xprev) { | ||||||
|  |                     map[*y][tx - minx + 1] = '#'; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             xprev = *x; | ||||||
|  |             yprev = *y; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     print_map(&map); | ||||||
|  |  | ||||||
|  |     let mut total = 0; | ||||||
|  |     'map: loop { | ||||||
|  |         let (mut rockx, mut rocky) = (500, 0); | ||||||
|  |         'rock: loop { | ||||||
|  |             //println!("{:?}, {:?}", rockx, rocky); | ||||||
|  |             if rockx < minx || rockx > maxx || rocky == maxy { | ||||||
|  |                 break 'map; | ||||||
|  |             } else if map[rocky + 1][rockx + 1 - minx] == '.' { | ||||||
|  |                 rocky = rocky + 1; | ||||||
|  |             } else if map[rocky + 1][rockx + 1 - minx - 1] == '.' { | ||||||
|  |                 rocky = rocky + 1; | ||||||
|  |                 rockx = rockx - 1; | ||||||
|  |             } else if map[rocky + 1][rockx + 1 - minx + 1] == '.' { | ||||||
|  |                 rocky = rocky + 1; | ||||||
|  |                 rockx = rockx + 1; | ||||||
|  |             } else { | ||||||
|  |                 map[rocky][rockx - minx + 1] = 'o'; | ||||||
|  |                 total += 1; | ||||||
|  |                 //print_map(&map); | ||||||
|  |                 break 'rock; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     print_map(&map); | ||||||
|  |     println!("{:?}", total); | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								day14/test.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								day14/test.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | 498,4 -> 498,6 -> 496,6 | ||||||
|  | 503,4 -> 502,4 -> 502,9 -> 494,9 | ||||||
		Reference in New Issue
	
	Block a user