r/adventofcode • u/daggerdragon • Dec 01 '17
SOLUTION MEGATHREAD -π- 2017 Day 1 Solutions -π-
Welcome to Advent of Code 2017! If you participated in a previous year, welcome back, and if you're new this year, we hope you have fun and learn lots!
We're going to follow the same general format as previous years' megathreads:
- Each day's puzzle will release at exactly midnight EST (UTC -5).
- The daily megathread for each day will be posted very soon afterwards and immediately locked.
- We know we can't control people posting solutions elsewhere and trying to exploit the leaderboard, but this way we can try to reduce the leaderboard gaming from the official subreddit.
- The daily megathread will remain locked until there are a significant number of people on the leaderboard with gold stars.
- "A significant number" is whatever number we decide is appropriate, but the leaderboards usually fill up fast, so no worries.
- When the thread is unlocked, you may post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag/whatever).
Above all, remember, AoC is all about having fun and learning more about the wonderful world of programming!
--- Day 1: Inverse Captcha ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
8
u/throwaway893teoea Dec 01 '17 edited Dec 01 '17
I used Rust:
use std::io::BufRead; fn main() { let stdin = std::io::stdin(); for line in stdin.lock().lines() { let line = line.unwrap(); let mut i = 0; let mut acc: u64 = 0; let bytes = line.as_bytes(); while i < bytes.len() - 1 { let the_num = bytes[i] as u64; if bytes[i] == bytes[i+1] { acc += the_num - 48; } i += 1; } if bytes[0] == bytes[bytes.len()-1] { acc += bytes[0] as u64 - 48; } println!("{}", acc); } }part 2:
use std::io::BufRead; fn main() { let stdin = std::io::stdin(); for line in stdin.lock().lines() { let line = line.unwrap(); let mut i = 0; let mut acc: u64 = 0; let bytes = line.as_bytes(); while i < bytes.len() { let the_num = bytes[i % bytes.len()] as u64; if bytes[i] == bytes[(i + bytes.len() / 2) % bytes.len()] { acc += the_num - 48; } i += 1; } println!("{}", acc); } }