parent
e596f64a69
commit
7b82b90b4c
@ -1,29 +0,0 @@
|
|||||||
use std::collections::HashSet;
|
|
||||||
use failure::Error;
|
|
||||||
|
|
||||||
pub fn solve(input: &str) -> Result<String, Error> {
|
|
||||||
Ok(input
|
|
||||||
.trim()
|
|
||||||
.lines()
|
|
||||||
.map(|line| Passphrase { words: line.into() })
|
|
||||||
.filter(Passphrase::is_valid)
|
|
||||||
.count()
|
|
||||||
.to_string())
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Passphrase {
|
|
||||||
words: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Passphrase {
|
|
||||||
fn is_valid(&self) -> bool {
|
|
||||||
let mut words = HashSet::new();
|
|
||||||
return !self.words.split_whitespace().any(|word| {
|
|
||||||
if words.contains(word) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
words.insert(word);
|
|
||||||
return false;
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue