Indie game developer 🇨🇦
Working on some games for game jams in my free time
Admin of programming.dev and frontend developer for sublinks
Account has automation for some scheduled posts
Site: https://ategon.dev/ Socials: https://ategon.carrd.co/
Indie game developer 🇨🇦
Working on some games for game jams in my free time
Admin of programming.dev and frontend developer for sublinks
Account has automation for some scheduled posts
Site: https://ategon.dev/ Socials: https://ategon.carrd.co/
Programming.Dev AoC Leaderboard
Game Development Communities
Game Development Communities
If only there was a better way
Do this Before You Publish Your Godot Game
Godot Sunday Showcase
Curly bracket chain
UK Games Fund nets extra £5 million to offer more support to devs
Feedback Friday
Summer Fediverse Jam
Summer Fediverse Jam
Summer Fediverse Jam
Fediverse Jam Team Finder
Unreal Engine Animation Sizzle Reel 2023
The horror
A community for posting programming related memes, jokes, etc.
Welcome to the Unreal Engine community!
Welcome to Unity!
Welcome to No Stupid Questions
How to detect if a number is even
English is a Terrible Programming Language
[Rust] Harder one today, for part 1 I ended up getting stuck for a bit since I wasnt taking numbers at the end of lines into account and in part 2 I defined my gears vector in the wrong spot and spent a bit debugging that
(lemmy removes some chars, all chars are in code link)
use std::fs; fn part1(input: String) -> u32 { let lines = input.lines().collect::>(); let mut sum = 0; for i in 0..lines.len() { let mut num = 0; let mut valid = false; let chars = lines[i].chars().collect::>(); for j in 0..chars.len() { let character = chars[j]; let parts = ['*', '#', '+', '$', '/', '%', '=', '-', '&', '@']; if character.is_digit(10) { num = num * 10 + character.to_digit(10).unwrap(); if i > 0 { if parts.contains(&lines[i - 1].chars().collect::>()[j]) { valid = true; } if j > 0 { if parts.contains(&lines[i - 1].chars().collect::>()[j - 1]) { valid = true; } } if j < chars.len() - 1 { if parts.contains(&lines[i - 1].chars().collect::>()[j + 1]) { valid = true; } } } if i < lines.len() - 1 { if parts.contains(&lines[i + 1].chars().collect::>()[j]) { valid = true; } if j > 0 { if parts.contains(&lines[i + 1].chars().collect::>()[j - 1]) { valid = true; } } if j < chars.len() - 1 { if parts.contains(&lines[i + 1].chars().collect::>()[j + 1]) { valid = true; } } } if j > 0 { if parts.contains(&lines[i].chars().collect::>()[j - 1]) { valid = true; } } if j < chars.len() - 1 { if parts.contains(&lines[i].chars().collect::>()[j + 1]) { valid = true; } } } else { if valid == true { sum += num; } num = 0; valid = false; } if j == chars.len() - 1 { if valid == true { sum += num; } num = 0; valid = false; } } } return sum; } fn part2(input: String) -> u32 { let lines = input.lines().collect::>(); let mut gears: Vec<(usize, usize, u32)> = Vec::new(); let mut sum = 0; for i in 0..lines.len() { let mut num = 0; let chars = lines[i].chars().collect::>(); let mut pos: (usize, usize) = (0, 0); let mut valid = false; for j in 0..chars.len() { let character = chars[j]; let parts = ['*']; if character.is_digit(10) { num = num * 10 + character.to_digit(10).unwrap(); if i > 0 { if parts.contains(&lines[i - 1].chars().collect::>()[j]) { valid = true; pos = (i - 1, j); } if j > 0 { if parts.contains(&lines[i - 1].chars().collect::>()[j - 1]) { valid = true; pos = (i - 1, j - 1); } } if j < chars.len() - 1 { if parts.contains(&lines[i - 1].chars().collect::>()[j + 1]) { valid = true; pos = (i - 1, j + 1); } } } if i < lines.len() - 1 { if parts.contains(&lines[i + 1].chars().collect::>()[j]) { valid = true; pos = (i + 1, j); } if j > 0 { if parts.contains(&lines[i + 1].chars().collect::>()[j - 1]) { valid = true; pos = (i + 1, j - 1); } } if j < chars.len() - 1 { if parts.contains(&lines[i + 1].chars().collect::>()[j + 1]) { valid = true; pos = (i + 1, j + 1); } } } if j > 0 { if parts.contains(&lines[i].chars().collect::>()[j - 1]) { valid = true; pos = (i, j - 1); } } if j < chars.len() - 1 { if parts.contains(&lines[i].chars().collect::>()[j + 1]) { valid = true; pos = (i, j + 1); } } } else { if valid == true { let mut current_gear = false; for gear in &gears { if gear.0 == pos.0 && gear.1 == pos.1 { sum += num * gear.2; current_gear = true; break; } } if !current_gear { let tuple_to_push = (pos.0.clone(), pos.1.clone(), num.clone()); gears.push((pos.0.clone(), pos.1.clone(), num.clone())); } } num = 0; valid = false; } if j == chars.len() - 1 { if valid == true { let mut current_gear = false; for gear in &gears { if gear.0 == pos.0 && gear.1 == pos.1 { sum += num * gear.2; current_gear = true; break; } } if !current_gear { let tuple_to_push = (pos.0.clone(), pos.1.clone(), num.clone()); gears.push((pos.0.clone(), pos.1.clone(), num.clone())); } } num = 0; valid = false; } } } return sum; } fn main() { let input = fs::read_to_string("data/input.txt").unwrap(); println!("{}", part1(input.clone())); println!("{}", part2(input.clone())); }Code Link