Guest User

Untitled

a guest
Dec 11th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. use std::iter::repeat;
  2.  
  3. fn power_level(x: i32, y: i32, serial: i32) -> i32 {
  4. let rack_id: i32 = x + 10;
  5. (rack_id * y + serial) * rack_id / 100 % 10 - 5
  6. }
  7.  
  8. fn main() {
  9. const SERIAL: i32 = 8141;
  10.  
  11. let max = (1..=300-2)
  12. .flat_map(|x| repeat(x).zip(1..=300 - 2))
  13. .max_by_key(|(x, y)| {
  14. let mut pow = 0;
  15. for x in *x..=*x + 2 {
  16. for y in *y..=*y + 2 {
  17. pow += power_level(x, y, SERIAL);
  18. }
  19. }
  20. pow
  21. })
  22. .expect("no maximum found");
  23.  
  24. println!("Part 1: {},{}", max.0, max.1);
  25.  
  26. assert_eq!(power_level(3, 5, 8), 4);
  27. assert_eq!(power_level(122, 79, 57), -5);
  28. assert_eq!(power_level(217, 196, 39), 0);
  29. assert_eq!(power_level(101, 153, 71), 4);
  30. }
Add Comment
Please, Sign In to add comment