Commit e2cd58a4 authored by Jonathan Klimt's avatar Jonathan Klimt

Solution for Day 2

parent 4550e164
[[package]]
name = "day2"
version = "0.1.0"
[package]
name = "day2"
version = "0.1.0"
authors = ["Jonathan Klimt <jonathan.klimt@rwth-aachen.de>"]
[dependencies]
pnebjqralgdgckzfifvtxywomu
pnebjqsalrdgcqzfihotxhwomu
pneajqsalrdgckzfihytxywoml
pnepjqsalrwgckztihvtxywomu
pnhbjqsalrdgckzfimvtxywodu
pnwbjqsdlrdgckzfihvnxywomu
inebjqnalrdgckzfihvtxzwomu
pnebjssalhdgckzfihvtsywomu
pnebjqjalrdgckzfiavtxywoku
vnebjqsalrdgckzfihvbxmwomu
phebjksaurdgckzfihvtxywomu
pneojqealrdgckzhihvtxywomu
snebjqsalrdgckzqihvtxyzomu
pnebjqsalrtackzfihvtxswomu
bnebjqlalrdgckzfihvtxywhmu
pnebjqfalrdgckzfijvtxywomi
fnehjbsalrdgckzfihvtxywomu
pnebjasalrdgckzdihvtxqwomu
pnebjhsaljdgckzfihvtxywmmu
pnebjqsalrdgckzfihvsxykoau
pnebjqsalrdgckzbihvtdywomc
pnobjqsalrxgckzfihvtxywomh
pnebjqstlrdgchzfihvtxywnmu
pnebjquaxrdgckzfihvtxywolu
pqebjqsalrdgcdzfihvtcywomu
xnabjqsalrdgckzfihvtxywmmu
rnebjqsalrdgckzfihvtxmwouu
vaebjqsalrdgckcfihvtxywomu
pnebjqsalrpgcnzfihvbxywomu
pcvbjqsalrdjckzfihvtxywomu
pneyjqsafrdgckzfihdtxywomu
pxedjqsalrdgckzfihvtxyzomu
pnebjqsalrdgctzfihnyxywomu
pnebjqsalrdgckzfihvtnylsmu
pnebjqsalrdyckzfihvbxycomu
fnebjqsalrdgckzfihvtxtwomc
pnobjqsalrdgckdfihvtxywomh
pqebjqsalrdgcqzfihvtxywymu
pnebxqsalrdgckzficvtwywomu
pnebjqshlragczzfihvtxywomu
pnebqqsalrdackzfihttxywomu
pnebjqsalrdsckwfbhvtxywomu
pnehjqsalrdgcuzfxhvtxywomu
pnebjqsavrdgckzfihvexywomn
pnebunsalrdgckzfihvtxywomi
pnebjxsalrdgckzfmhvtpywomu
rnebjqsalrdghkzfihztxywomu
pnebjqsalrigcbzfihvfxywomu
pnebqqsalrggckzfihvtxyromu
pnebjqsalrdgchzfihvtxylmmu
pnebeqsalrdgckzdihvtxywoms
pnebjqsalrdgckzzihvfxywozu
pnzbjgsalrtgckzfihvtxywomu
pnebjqsaledgckzjihvtxzwomu
pnebjqsalydgckqfihvtxywouu
pnebjqsalrdgckufihvqxdwomu
pnebjqsylrdgckzfihvdxyjomu
pnemjqsalrdgckzeihvtxywoqu
plebjasalrdgckzfihvtxywomb
pnebjqsadrdgckufihvtxyfomu
pbebjqsaardgckzfihvtxmwomu
pnebjqsalrdgcmzfihotxywgmu
pnebjqsaprdgcizfihvtxywhmu
pnebjqsalrkgcuzfihvtlywomu
pnebjqsalrdnckzfihvtxysomg
pnebjqdafrdgckzfihctxywomu
pnebjqsalrdgckzfihutxkwomp
pnebvqsalrdgclzfimvtxywomu
pnebjqralrdgcktfihvtxiwomu
pneujqsalrdsckzfzhvtxywomu
pnebfqgalrdgckzfihvtxywjmu
pneyjqsalrkgckzfihctxywomu
pndbjqsalrdgckzfjhvtxywouu
pneljnsalrdgcozfihvtxywomu
phebjqsalrdgckzfihxtxdwomu
pnlbjqsalrhgckzfzhvtxywomu
pnebjqsalrsgckzfiovtxywwmu
pncbjqsalrdgfkzfivvtxywomu
nnebjqsalrdgckzfthvtxycomu
pnebjqwalsdgckzfixvtxywomu
pnebjtsalrdgcfzfimvtxywomu
pnebjqsvlrdgckzfihutxfwomu
pnebjmsalrdgckzkxhvtxywomu
pnekjqsllrdgckzfinvtxywomu
pneijqsxlrdgckzfihvtxywjmu
wnxbjqsafrdgckzfihvtxywomu
pnebjqskledgokzfihvtxywomu
pnebjqvalrdgckzfihvtxytoju
pneqjqsalrdgckzfilvthywomu
pnebjqsalrdgckzfihvokywomf
bnebjqsalrdgckufihvtxywimu
pnebjqsaurdgckzfihvtrywosu
pnebjmsaludgckzfihvtxywomn
pnebdqsalrdgcktfihvtxywodu
pnebjqjylzdgckzfihvtxywomu
piebjqsalrdgcrzfihstxywomu
pnebjqsaurdgckwfnhvtxywomu
pnebxqsajrdgcjzfihvtxywomu
pnebjqsalrdghsdfihvtxywomu
pnebcqsxlrdgckzfihvtxyaomu
pnefjqsalrdgckzfuhvtxyworu
pnebjqsalrdlcksfihvteywomu
pnebjqlalrgackzfihvtxywomu
pnebdqsalrdickzfihvtxdwomu
pneujksalrdgctzfihvtxywomu
pnebjqsalrduckzfihvsxywomf
pnebjqsalrdgckcfihotxywomd
envbjqsalsdgckzfihvtxywomu
pnebjqsalzdgcvzzihvtxywomu
pnebjqsalrdyckzflhvyxywomu
pnebjqsalrdglkzfihstxymomu
pnebmqsalrdgokzfihvtxywoml
pnebjqsylrdnckzfihatxywomu
pnebjqaflndgckzfihvtxywomu
pneboqsagragckzfihvtxywomu
peebjqstlndgckzfihvtxywomu
onebjqsklrdgckzfihvtxmwomu
pnebjqjnlrdgckrfihvtxywomu
pnebjqsalrhgckzfihvqxywomh
pnebjqsalrdgckzzihvtxowomw
pnebjgsalrdgckffihltxywomu
znebaqsalcdgckzfihvtxywomu
pnnbjqeasrdgckzfihvtxywomu
rnebjqaalrxgckzfihvtxywomu
pnebjqsalrdgckaxphvtxywomu
pnebjcnalrdgnkzfihvtxywomu
pnebjasalbdgckzmihvtxywomu
pnebjqsalrdgckefjhvtmywomu
pnebjqsalrdgmkzfihvtxyoomb
pnebjqsalrkgckogihvtxywomu
pnwbjqsalrdgckztihvtxywomt
pnebjqsalrdgckzfihotgnwomu
pnebjqsdlrrgckzfihvtxyaomu
pnebvasalrdgckzfihvtsywomu
pnebrqqalrvgckzfihvtxywomu
tnebjqsglrdgqkzfihvtxywomu
pnebjqsatrsgckifihvtxywomu
pneboqsalrdgckzfihvkxywomi
pnezaqsalrdgcktfihvtxywomu
pnebjqsnlrdgckzfihvfxqwomu
pneajqsaxrmgckzfihvtxywomu
pnebjosalodgckzfihvxxywomu
pnebjqsalndgckmfihvtfywomu
pneejqsalidgckzfihgtxywomu
pnecjqsalrdgckzfihptxiwomu
tnebjqsalrdgckznihvxxywomu
ptebjqsalrdgckzfimvtxywomm
wnebjqsalndgckzfihvtxywoju
fnebmqsplrdgckzfihvtxywomu
pnlbjqsalrdghkzficvtxywomu
pnebjqsesrdgckzdihvtxywomu
pnebjqsalregokzfirvtxywomu
pnebjtualrtgckzfihvtxywomu
pnebjwsdlrdgckzfihvtxywoml
pnlbjqsayrdgckzfqhvtxywomu
pnebjwsalpdgckzfihvtxywomc
pnqbjqsalcdgckzhihvtxywomu
pneujqsalrdgckzfhhvtxrwomu
pnebjqsalqdgcizfihvtxywimu
pnebjqsacldgckzfihvwxywomu
puebjqsalrdgckzfbhvtxyeomu
pnebjqsalrdgcyimihvtxywomu
pnebjlsalrdgckzfihvtxiwome
pnebfusalrdgckzfihvtxywodu
pnebjqsalrdgvazfirvtxywomu
pnebjqsalrdgckyfohvtxywomz
gnenjqsalrdgckzfihvtxynomu
mnebjqsalrdgckhfihvtxycomu
phebjqsalrdgckzfihvtxtworu
pnebjqsalrdgdkzfihvtxywfmj
pneveqsairdgckzfihvtxywomu
pnebjqsalcdlckzfihvtxywomg
pneajqsalrdgckzfihvtxygoxu
puebjqdclrdgckzfihvtxywomu
tuebjqsalrdgckzfihvtxywoou
pwenjqsalrdgckzfihvtxywomg
pnebjqsalrdgckzfihhltywomu
pnebjqsalrdgchzqievtxywomu
pnegjqsalrdgckzfiovtxywdmu
pnebjaralrqgckzfihvtxywomu
pnebjqsalrdrckzfimvtxywomm
pnebjqsalrdgckzfpgvtxewomu
pnebjqsalrdhcqzfihitxywomu
pnebjqsalrjgckefihmtxywomu
pnebjcsalrdgcksfikvtxywomu
pnebjqsalrdgckzfihvtxywdjc
pnebjqsazrjgckzjihvtxywomu
pnfbjqsclrdgckzfihvtxybomu
pnebjqsalrdgckuqihvtxyaomu
pfpbjzsalrdgckzfihvtxywomu
pnevjqsalrdgckwfihytxywomu
pnebjqsqlrkgckzfihvtvywomu
pneejqsalrdlckzfihvtxywopu
pnebjqsalcdgxkzfihvtxywomd
pneqjqsalrdgcvzzihvtxywomu
pnvbjqsalydgctzfihvtxywomu
pnebjqsalrdgckzzihvfxywomn
pnybjqsaerdgckzfihstxywomu
pnobjqsalrdkckzfihvtxywomv
pnebjqsalridckzfihvtxywfmu
pnhbjqsaludgckyfihvtxywomu
pnetjqsaprdgykzfihvtxywomu
wnebjqsalrdvcfzfihvtxywomu
pnetjqsalrdmckwfihvtxywomu
pnebjysalrdgcszfihvtxnwomu
pnebjqsrlrdgckzfihvtxywkhu
pnubjqsplrdgcjzfihvtxywomu
pnebjqsalrdzckzficjtxywomu
pnebjqsalregckzfinvtxywoku
pnebjqsalrcgckyfivvtxywomu
pyenjqsalrdgckzfihvnxywomu
prebjqsalrdnckzfihvtxysomg
pnebjnsalrdgchzfihvaxywomu
pnebjqsalrdgckzfihxagywomu
pnebjqsalrdgckzvihvtoywoml
pnebjqsilrdgckzfihvtfywgmu
pnebjqmalrdgckzfihvtvawomu
pnebqqsalrdgckzfiuvtfywomu
pneqjqsalrdgckzfihvqxywomi
pnebjesalrsgckzfihvtxywmmu
znebjqsblrdgckzfihvlxywomu
pnebjqsalrdgckzfuhvtlyworu
pnebjqsylrdgckzfihvqxpwomu
onebjqsalfdgckifihvtxywomu
pnebjusalrdgckzfihvtxywyml
pnebjssflrdgckzfigvtxywomu
pnebjfsdzrdgckzfihvtxywomu
pnebjqsalrdgcktfihvixywocu
gnebjqnaqrdgckzfihvtxywomu
pnebjqsaqrugckzfihhtxywomu
pnebjqsxlrdgckzfihvtxlwosu
pnebjzsalrdgckzmihvtxywovu
pnebgqsalrdgckzfizvtxyjomu
pnebjqsmlrdgckzfihvtxywsmi
pnebjqsakmdgckzjihvtxywomu
pnebjqdglrdgckvfihvtxywomu
pnebmhsalrdgckxfihvtxywomu
pneejqsalrdlckzfihvnxywomu
bnebjqsalmdgckzfihvfxywomu
bnebjnsalrdgcizfihvtxywomu
pnebjqsalhdgcdzfihvbxywomu
pnebjqsjlrdgckzfihvgiywomu
pnebjisalrdgckzfihvtxywqmi
pdebjqsalrdickzfihhtxywomu
pnebjqsalrdkckzfihvjeywomu
pneyjqsalrqgckzfihvtxywohu
pnebjqsalrdgckcfihvtxjlomu
plebqwsalrdgckzfihvtxywomu
pnebjqlalrdgckzfihetxynomu
sngbjqsalrdgckzfihvmxywomu
use std::fs::File;
use std::io::BufRead;
use std::io::BufReader;
use std::io::Error;
fn main() -> Result<(), Error> {
let (doubles, triples) = part1()?;
println!("First Part:");
println!("Nr of IDs with duplicate letters: {}", doubles);
println!("Nr of IDs with three same letters: {}", triples);
println!("Solution: {}", doubles*triples);
println!("Second Part:");
println!("Solution: {}", part2()?);
Ok(())
}
fn part1() -> Result<(i64,i64), Error> {
let f = File::open("input.txt")?;
let file = BufReader::new(&f);
let mut doubles = 0;
let mut triples = 0;
for line in file.lines() {
let l = line?;
let mut v : Vec<(char, u64)> = Vec::new();
for c in l.chars() {
if let Some(mut entr) = v.iter_mut().find(|&&mut(i,_)| i==c ) {
entr.1 += 1;
continue;
}
v.push((c, 1));
}
if v.iter().any(|(_, i)| *i==2) {
doubles += 1;
}
if v.iter().any(|(_, i)| *i==3) {
triples += 1;
}
// println!("ID: {} Doubles: {} Triples {}", l, doubles, triples);
}
Ok((doubles, triples))
}
fn different_chars(s1: &String, s2: &String) -> usize{
assert_eq!(s1.len(), s2.len());
let iter = s1.chars().zip(s2.chars());
iter.filter(|(c1, c2)| c1 != c2).count()
}
fn part2() -> Result<String, Error> {
let f = File::open("input.txt")?;
let file = BufReader::new(&f);
let mut v : Vec<String> = Vec::new();
let mut s1 : String = "".to_string();
let mut s2 : String = "".to_string();
'outer: for line in file.lines() {
s1 = line?;
for elem in v.iter() {
s2 = elem.to_string();
if different_chars(&s1 , &s2) == 1 {
println!("s1: {}\ns2: {}", s1, s2);
break 'outer;
}
}
v.push(s1.clone());
}
Ok(s1.chars().zip(s2.chars())
.filter(|(c1, c2)| c1 == c2)
.map(|(c1, _)| c1)
.collect::<String>())
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment