2018/02
This commit is contained in:
4
2018/02/Cargo.lock
generated
Normal file
4
2018/02/Cargo.lock
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
[[package]]
|
||||
name = "day-02"
|
||||
version = "0.1.0"
|
||||
|
||||
6
2018/02/Cargo.toml
Normal file
6
2018/02/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "day-02"
|
||||
version = "0.1.0"
|
||||
authors = ["Anders Olsson <anders.e.olsson@gmail.com>"]
|
||||
|
||||
[dependencies]
|
||||
250
2018/02/input.txt
Normal file
250
2018/02/input.txt
Normal file
@@ -0,0 +1,250 @@
|
||||
lutrogkbetprmshdyfiqvzixaw
|
||||
lujnmgkbetprmshdyicqvzivaw
|
||||
lujnogkbetprmshdyfkqvtpxaw
|
||||
lujnqgkbetpmmshdywcqvzixaw
|
||||
lujnogtaetprmshdyffqvzixaw
|
||||
lujnogkbetprmuldyfcqvqixaw
|
||||
luunogkbetprlshdyfcqrzixaw
|
||||
lujnogkketprmshdyhcqvtixaw
|
||||
lyjnogzbetprmsbdyfcqvzixaw
|
||||
eujnogkbetprmshdyfrqvzixmw
|
||||
lujnogcbetprmshdyfvqvziqaw
|
||||
lujnogkbempruahdyfcqvzixaw
|
||||
lujlogkbetprmlhdyfyqvzixaw
|
||||
lrjnogkbetyrmshdofcqvzixaw
|
||||
lujnogkbetprmlheyfaqvzixaw
|
||||
lujoohkbetprmshdyfccvzixaw
|
||||
lijkogkietprmshdyfcqvzixaw
|
||||
lujnoukbetprmshdyfcqvzmxkw
|
||||
lujnogkbetprpshdyfcivzixiw
|
||||
lfjiogkbetprmshdyfwqvzixaw
|
||||
lujnogkbctprmshdffcqvzicaw
|
||||
lujnogkbetprashdckcqvzixaw
|
||||
lwjnogkbetprjshdyfcqvziyaw
|
||||
lujoogkbetpsmshdyfcnvzixaw
|
||||
lujnrgkjetprmsvdyfcqvzixaw
|
||||
luinogkcetprmshdyfccvzixaw
|
||||
lujnlgkbetprmshdyfcqvziirw
|
||||
rujnogkbetprmshdyfcqvzmxag
|
||||
luqnogkbetkrmshdhfcqvzixaw
|
||||
lujnogkbhxprmshdyfcbvzixaw
|
||||
lpjnogkbeyprmshdymcqvzixaw
|
||||
lujnogkbetdymshvyfcqvzixaw
|
||||
lujnoakbetprmshdlfcnvzixaw
|
||||
lujnogabetpumsydyfcovzixaw
|
||||
lpjnogkbetprmshdyfcqvzixzi
|
||||
gujnogkbevprdshdyfcqvzixaw
|
||||
lzjnogkbetprmsddyscqvzixaw
|
||||
lujnolkbmtprmshdyfuqvzixaw
|
||||
lujnogkbexpenshdyfcqvzixaw
|
||||
lujnogknetprmshdrfcqvzpxaw
|
||||
lujnogkbetpfmshayfcqvzwxaw
|
||||
lujnogkbetmrmshdyfcfvzilaw
|
||||
lujnogkqetpqdshdyfcqvzixaw
|
||||
xujnvgkbetprmnhdyfcqvzixaw
|
||||
lujnogkbetprsshdyfcqviixai
|
||||
rujnogkbeiprmshdyfcvvzixaw
|
||||
vujnogkeetprmshdyfcsvzixaw
|
||||
lujnogkbetcrmshdypcqxzixaw
|
||||
vuunogkbdtprmshdyfcqvzixaw
|
||||
nujnogkbetprmsvyyfcqvzixaw
|
||||
lujnogkbhtprmshdtfpqvzixaw
|
||||
lujnogkbetzrmphdyfcqvzixan
|
||||
lujnogkbetprmshdytcqvzixiu
|
||||
luanogkbeturmshdyfcqviixaw
|
||||
lujnogkbefprmshdyfcqvhixaf
|
||||
luvnogkbetprmsfdyfcqvzixhw
|
||||
lujnockbetprfshdyfcqvzixdw
|
||||
luenogkbetprmshdyfacvzixaw
|
||||
lfjnogkbetprmsldyfcxvzixaw
|
||||
xujnogkbetxrmshdufcqvzixaw
|
||||
lsjnogkbdtprmswdyfcqvzixaw
|
||||
lujnogkbetprishdyfcpvgixaw
|
||||
fujnogkbethrmshdyhcqvzixaw
|
||||
lujnogabetprmsydyfcovzixaw
|
||||
lvjnogkbetpvmshzyfcqvzixaw
|
||||
lujnogkbeturmshdufcqvcixaw
|
||||
lujnogkietprmshdyzyqvzixaw
|
||||
lujnogkaatprmshdyfwqvzixaw
|
||||
lujnogkbetpemshoyfcfvzixaw
|
||||
lujiogkbetpumshiyfcqvzixaw
|
||||
lujnvgkbetirmphdyfcqvzixaw
|
||||
lujnkgkbetprmhhdyfcqvzixmw
|
||||
lrjnorkbetprmphdyfcqvzixaw
|
||||
cujnogkietprmshdjfcqvzixaw
|
||||
lpjnogkbetpryshdyfcqvzixbw
|
||||
lujrogkbetprmchdzfcqvzixaw
|
||||
cujnlgkbetprmmhdyfcqvzixaw
|
||||
rujnogkbotprmshdyfcqczixaw
|
||||
lucnogknetprmshdyfcqvzixhw
|
||||
lujnogkbaturmdhdyfcqvzixaw
|
||||
lujnonkbetpcmshcyfcqvzixaw
|
||||
lujnogkbelprmshwyfcqvzihaw
|
||||
luanogkbetprmshdyhcqvzilaw
|
||||
lljnogkbetwrmshdyfcqxzixaw
|
||||
lujnogkbetprmshdyfcqejixaz
|
||||
lujnogkbetbrmshdyfcqizixgw
|
||||
lujeogkbetprkahdyfcqvzixaw
|
||||
lujnogkbevprmshssfcqvzixaw
|
||||
lutnogkbetgrmshdyfcqvmixaw
|
||||
lujnoppbntprmshdyfcqvzixaw
|
||||
lujnogkbetprmsmdyftqvdixaw
|
||||
lujuogubetprmshdyfcqvmixaw
|
||||
lujnorkbetprmsydyqcqvzixaw
|
||||
nujnogkbetprmshdyfcqvzifdw
|
||||
lujnogkbetpryshdygcqvziqaw
|
||||
ldjiogkbetprmuhdyfcqvzixaw
|
||||
lujnogkbetpsmghdyfcqvzixag
|
||||
xujnogkbetprmsrdefcqvzixaw
|
||||
lujnogkbejprmshiyfcqvzoxaw
|
||||
lujnogkletlnmshdyfcqvzixaw
|
||||
aujnogkbetprmwydyfcqvzixaw
|
||||
lujnogkbetprmsvdyfcrvzixap
|
||||
lujnogkbeeprmshdyfcqozixmw
|
||||
lujnogfbethrmshdyfcnvzixaw
|
||||
lujnogkbetprmshsrflqvzixaw
|
||||
lujuogkbnrprmshdyfcqvzixaw
|
||||
lutnogkbetpbmsgdyfcqvzixaw
|
||||
lujnqgkbetzrmshdyfcxvzixaw
|
||||
lujnogqbetprmshgxfcqvzixaw
|
||||
lujnogkbytprmshdyfcqvznxrw
|
||||
lujnogkbetprmshdyfcqvlidxw
|
||||
nljnogkbetprmsqdyfcqvzixaw
|
||||
lujnogkbetprmsidyfcqvfixjw
|
||||
lujnogkbetprmnhdyfcqvzifaq
|
||||
lujnogkbetprmwhdylcqvzixlw
|
||||
lujnogkbstprmshcyffqvzixaw
|
||||
lujnogkbetprmshdtfcqvzeyaw
|
||||
lujvzgkbetprmshdyncqvzixaw
|
||||
bujnogabetprmshdyfcqvzgxaw
|
||||
lujnogkbptpfmshdyfcrvzixaw
|
||||
ludnogkbetpsmshdyfcqvbixaw
|
||||
pgjnogkbttprmshdyfcqvzixaw
|
||||
lxjnogkbetprmshdyfcqezixyw
|
||||
lujnogkbutprmshdyfsqvzixjw
|
||||
lujnpgkbetlrmshdifcqvzixaw
|
||||
lujnogkbetprmshdygczvzixam
|
||||
lujnvgkwetirmshdyfcqvzixaw
|
||||
lujnogkbetprhshdyfcqvvixow
|
||||
lutnogkbetprmshdyfcrvzixgw
|
||||
lujnopkbetprmsudyfcqvzqxaw
|
||||
lujnolkbetprmjhdyftqvzixaw
|
||||
fujoogkbetprmshdyfcqvziuaw
|
||||
lqjnogkqetprmshdyfcqmzixaw
|
||||
lujnogkbetprmgcdyfcqvzibaw
|
||||
lujnogebebprmshdyzcqvzixaw
|
||||
lujnogkbetprmshzgfcnvzixaw
|
||||
luanogkretprmshdsfcqvzixaw
|
||||
nljnogkbetprmshdyfcqnzixaw
|
||||
lujnygkbetprmshdyfaqvzixjw
|
||||
lujnogkbetprmshdlfcqtzixag
|
||||
zujnogkbevprmshdyfcqvzixao
|
||||
lujnogkbbtprmshtyfcyvzixaw
|
||||
lujnogkbetjrmvhdyfcqvzixau
|
||||
fujnojkbetprmshdyfcqyzixaw
|
||||
suonogkbetprmshdyfcqvzexaw
|
||||
lujnogkbetprrshdyfcqvpifaw
|
||||
lujnogkbjtprmshdyfcqkzixat
|
||||
lujnogklxtprmshdyfcqyzixaw
|
||||
lujaogkbetprmshdyfcqvzihat
|
||||
kujnogkbetprmshlyfcqvjixaw
|
||||
lujnogkbetormshdyfcqvzbxap
|
||||
lujnogzuetpemshdyfcqvzixaw
|
||||
lujnogknetprmshdyfcwvlixaw
|
||||
lujnopkbetpfmshdyfcqxzixaw
|
||||
lqjnogkbetprmshdyfcoqzixaw
|
||||
lujnogkbetprmshdyfcdvzhdaw
|
||||
lujrogkbetprmshnyfcqvzijaw
|
||||
luovogkbetprpshdyfcqvzixaw
|
||||
xujnxgkbeturmshdyfcqvzixaw
|
||||
lujnogkbetprmshdyfyquzixav
|
||||
lujnogkbetptmshdyfcqvnitaw
|
||||
lujnoskbetprmvhdyfcqvziyaw
|
||||
dujnogkbetprmshdyfcqgzixae
|
||||
ltjnogkbetprmshdvfcqyzixaw
|
||||
luznogkbetprmshdyfcqvuixsw
|
||||
lujnogkbeiprmshdhfcqvzixav
|
||||
lujtogkbetormkhdyfcqvzixaw
|
||||
lujnogkbetprmssdyfcqvzilas
|
||||
lujnlgkbetprmshwyfcnvzixaw
|
||||
lujnogkbbtprmshdyfcqozfxaw
|
||||
lzjcogkpetprmshdyfcqvzixaw
|
||||
lujnogkketprmshdyfcqvzixfg
|
||||
oujnogkbetprgshdnfcqvzixaw
|
||||
zujnogkbetpbmshdyfcqvzixiw
|
||||
lcjnowkbetprmsmdyfcqvzixaw
|
||||
lujnogkbetprmsedyvcqvzzxaw
|
||||
lujnzikbetprmshdyfcqvzixlw
|
||||
lujnogkbetpyqsgdyfcqvzixaw
|
||||
lujnoukietprmssdyfcqvzixaw
|
||||
lujnogkbetyrmsydywcqvzixaw
|
||||
bujnogkdetprmsxdyfcqvzixaw
|
||||
lujnogkbetprmshdyjcqazixnw
|
||||
lgjnogktetprmsgdyfcqvzixaw
|
||||
lujnogkbeaprmahdyfcmvzixaw
|
||||
lubnoikbetprmshdyfcfvzixaw
|
||||
eusnogkbotprmshdyfcqvzixaw
|
||||
lujnogkbgtprmshdbfjqvzixaw
|
||||
lujnogkketprmshdyfcqvcjxaw
|
||||
lujnogkbetphmshdsfcqvzgxaw
|
||||
lujnhgkbdtprmshdyfeqvzixaw
|
||||
lujnogkbetpamsjdyfcqvlixaw
|
||||
lujnogkbetprmshlyfccvzxxaw
|
||||
lujzogkbetprmshdyfgqvzixpw
|
||||
lujnogkbetprfshdylcqveixaw
|
||||
lujnigkbetprmshdyfcqvzqxrw
|
||||
lujnogkbetpqmshdybcvvzixaw
|
||||
lujnogkbetprmsxdyfvqvzpxaw
|
||||
lujnogkbetprmfhdyfcqvmoxaw
|
||||
lujnoskbetprmhfdyfcqvzixaw
|
||||
lujnogkbetprmsodkfcqvzdxaw
|
||||
lujnogkbetpzrshdyfcqvzixpw
|
||||
mujnogkbetprmshdyfcsvzixan
|
||||
lujnonwbetprmshdyfcqvzixam
|
||||
lujnogkgetgrmshdyfcxvzixaw
|
||||
lujnogkbetpimshdyfcqvzixgs
|
||||
auanogkbetprmshdyfcxvzixaw
|
||||
lujnogkbenprishnyfcqvzixaw
|
||||
mujiogkbetpreshdyfcqvzixaw
|
||||
lujnogkbdipcmshdyfcqvzixaw
|
||||
kujnogkbetprmshdyucqvlixaw
|
||||
lujnogsbetprmshdrfcqvrixaw
|
||||
luynogkbetprhshdyfcqvsixaw
|
||||
lbjnogebetprmshdyfcqezixaw
|
||||
lujnogkbetprmnhtyfcqvzixap
|
||||
lujnogkbetprmszdhfcvvzixaw
|
||||
lujnogkbetprtshdywcqezixaw
|
||||
iuznogkbetprmshdyflqvzixaw
|
||||
nujnogkbetprmkhyyfcqvzixaw
|
||||
aujnogkbetprmshhyfcqvzijaw
|
||||
lujzogkbstprmshdyfcyvzixaw
|
||||
lujmogkbetprmshdtfctvzixaw
|
||||
ljjnogkbetrrmshdyfcqvzixaq
|
||||
lujnjgkbetprmshdyfdcvzixaw
|
||||
lujnogkbettrmshdyzcqvzfxaw
|
||||
dujnogybetvrmshdyfcqvzixaw
|
||||
lujnogkbetermshdmfcqvzvxaw
|
||||
lujnogkbetprmshdjfcdvzixab
|
||||
lujnogkbetirmshjyfcqvjixaw
|
||||
lujnogkbeiurmshdyfcqyzixaw
|
||||
lsjnogkbmtproshdyfcqvzixaw
|
||||
lujnogkqftprmshdyfcqvziwaw
|
||||
lujvogkbetprmshdyfcqvoixyw
|
||||
lujnogkoetprmshdyfpqvcixaw
|
||||
lujnogkbetprmshdyfcqvmghaw
|
||||
lujnmgkbetprmshdifcqveixaw
|
||||
lumlovkbetprmshdyfcqvzixaw
|
||||
lpjnogkretprmshdyfcqvfixaw
|
||||
luvnogpbetprmshdyftqvzixaw
|
||||
lujnogkbeturmshgymcqvzixaw
|
||||
lujiogkbbrprmshdyfcqvzixaw
|
||||
yujnogkbutprmshdyfcqvzixab
|
||||
lujvofubetprmshdyfcqvzixaw
|
||||
lujwogkbrtprmshdyfcqvnixaw
|
||||
lusnogkbetprmsydyfcqvzikaw
|
||||
lujnolkbewprmshdyfyqvzixaw
|
||||
lujnogkbetprvshdyfcivzikaw
|
||||
lujnogxbetprmszdyfzqvzixaw
|
||||
lujnogkvetprmxhdydcqvzixaw
|
||||
lujnogkbetpimsrdwfcqvzixaw
|
||||
lujnomboetprmshdyfcqvzixaw
|
||||
60
2018/02/src/main.rs
Normal file
60
2018/02/src/main.rs
Normal file
@@ -0,0 +1,60 @@
|
||||
use std::collections::HashMap;
|
||||
use std::io::{self, BufRead};
|
||||
|
||||
fn diff(left: &str, right: &str) -> Vec<(usize, (char, char))> {
|
||||
left.chars()
|
||||
.zip(right.chars())
|
||||
.enumerate()
|
||||
.filter(|(_, (a, b))| a != b)
|
||||
.collect::<Vec<_>>()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let stdin = io::stdin();
|
||||
|
||||
let lines = stdin
|
||||
.lock()
|
||||
.lines()
|
||||
.filter_map(Result::ok)
|
||||
.map(|line| {
|
||||
let mut map = HashMap::new();
|
||||
|
||||
for ch in line.chars() {
|
||||
map.entry(ch).and_modify(|x| *x += 1).or_insert(1);
|
||||
}
|
||||
|
||||
(line, map)
|
||||
}).collect::<Vec<_>>();
|
||||
|
||||
let two = lines
|
||||
.iter()
|
||||
.filter(|(_, map)| map.iter().any(|(_, count)| *count == 2))
|
||||
.count();
|
||||
let three = lines
|
||||
.iter()
|
||||
.filter(|(_, map)| map.iter().any(|(_, count)| *count == 3))
|
||||
.count();
|
||||
|
||||
println!("part.one={}", two * three);
|
||||
|
||||
for (i, (left, _)) in lines.iter().enumerate() {
|
||||
let diff = lines
|
||||
.iter()
|
||||
.skip(i + 1)
|
||||
.map(|(right, _)| diff(left, right))
|
||||
.find(|diff| diff.len() == 1)
|
||||
.map(|mut diff| diff.pop().unwrap());
|
||||
|
||||
if let Some((n, _)) = diff {
|
||||
let string = left
|
||||
.chars()
|
||||
.enumerate()
|
||||
.filter(|(i, _)| *i != n)
|
||||
.map(|(_, c)| c)
|
||||
.collect::<String>();
|
||||
|
||||
println!("part.two={:?}", string);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user