@@ -56,9 +56,9 @@ pub fn task2_fast() {
|
||||
let serial = 6392;
|
||||
|
||||
let mut cache: Vec<Vec<i32>> = Vec::with_capacity(301);
|
||||
for x in 0 as usize..=300 {
|
||||
for x in 0_usize..=300 {
|
||||
let mut v: Vec<i32> = Vec::with_capacity(301);
|
||||
for y in 0 as usize..=300 {
|
||||
for y in 0_usize..=300 {
|
||||
if x == 0 || y == 0 {
|
||||
v.push(0);
|
||||
} else {
|
||||
@@ -72,10 +72,10 @@ pub fn task2_fast() {
|
||||
}
|
||||
let values = &cache;
|
||||
|
||||
for x in 0 as usize..=300 {
|
||||
for y in 0 as usize..=300 {
|
||||
for x in 0_usize..=300 {
|
||||
for y in 0_usize..=300 {
|
||||
if x != 0 && y != 0 {
|
||||
let cached = area_sum(&values, x, y, 1);
|
||||
let cached = area_sum(values, x, y, 1);
|
||||
let calc = fuel_level(x as i32, y as i32, serial);
|
||||
//println!("{},{}: {} ({})", x, y, values[x][y], calc);
|
||||
assert_eq!(calc, cached);
|
||||
@@ -87,7 +87,7 @@ pub fn task2_fast() {
|
||||
.map(|square_size| {
|
||||
let result = (1..=301 - square_size)
|
||||
.flat_map(|x: usize| (1..=301 - square_size).map(move |y: usize| (x, y)))
|
||||
.map(|(x, y)| (x, y, area_sum(&values, x, y, square_size)))
|
||||
.map(|(x, y)| (x, y, area_sum(values, x, y, square_size)))
|
||||
.max_by_key(|(_, _, value)| *value)
|
||||
.unwrap();
|
||||
(result.0, result.1, result.2, square_size)
|
||||
@@ -96,7 +96,7 @@ pub fn task2_fast() {
|
||||
println!("{:?}", result);
|
||||
}
|
||||
|
||||
fn area_sum(values: &Vec<Vec<i32>>, x: usize, y: usize, length: usize) -> i32 {
|
||||
fn area_sum(values: &[Vec<i32>], x: usize, y: usize, length: usize) -> i32 {
|
||||
values[x + length - 1][y + length - 1] + values[x - 1][y - 1]
|
||||
- values[x - 1][y + length - 1]
|
||||
- values[x + length - 1][y - 1]
|
||||
@@ -108,7 +108,7 @@ fn fuel_level(x: i32, y: i32, serial: i32) -> i32 {
|
||||
power += serial;
|
||||
power *= rack_id;
|
||||
power = power / 100 % 10;
|
||||
power = power - 5;
|
||||
power -= 5;
|
||||
power
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user