Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use regex::Regex;
- use std::io::{self, BufRead};
- fn main() {
- let re_gameNumber = Regex::new(r"[0-9]+").unwrap();
- let re_games = Regex::new(r"[:;][^:;]+").unwrap();
- let re_cubes = Regex::new(r"[0-9]+ [a-z]+").unwrap();
- let stdin = io::stdin();
- let mut res: u32 = 0;
- for line in stdin.lock().lines() {
- let str = &line.unwrap();
- let gn = re_gameNumber
- .find(&str)
- .unwrap()
- .as_str()
- .parse::<u32>()
- .unwrap();
- let mut rounds = re_games.find_iter(str).map(|m| m.as_str());
- let possible = rounds.all(|r| {
- return re_cubes
- .find_iter(r)
- .map(|c| c.as_str().split_whitespace())
- .all(|mut cubes| {
- let ct = cubes.next().unwrap().parse::<u32>().unwrap();
- let color = cubes.next().unwrap();
- match color {
- "red" => return ct <= 12,
- "green" => return ct <= 13,
- "blue" => return ct <= 14,
- &_ => return false,
- }
- });
- });
- if possible {
- res += gn;
- }
- }
- print!("{}", res);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement