Added Solution for 2023 day 19
This commit is contained in:
parent
61dee8feb9
commit
a8dc1a90cb
5 changed files with 1133 additions and 0 deletions
15
2023/day19_aplenty/Cargo.toml
Normal file
15
2023/day19_aplenty/Cargo.toml
Normal file
|
@ -0,0 +1,15 @@
|
|||
[package]
|
||||
name = "day19_aplenty"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = "0.5.1"
|
||||
|
||||
[[bench]]
|
||||
name = "test_benchmark"
|
||||
harness = false
|
79
2023/day19_aplenty/challenge.txt
Normal file
79
2023/day19_aplenty/challenge.txt
Normal file
|
@ -0,0 +1,79 @@
|
|||
The Elves of Gear Island are thankful for your help and send you on your way. They even have a hang glider that someone [stole](9) from Desert Island; since you're already going that direction, it would help them a lot if you would use it to get down there and return it to them.
|
||||
|
||||
As you reach the bottom of the *relentless avalanche of machine parts*, you discover that they're already forming a formidable heap. Don't worry, though - a group of Elves is already here organizing the parts, and they have a *system*.
|
||||
|
||||
To start, each part is rated in each of four categories:
|
||||
|
||||
* `x`: E*x*tremely cool looking
|
||||
* `m`: *M*usical (it makes a noise when you hit it)
|
||||
* `a`: *A*erodynamic
|
||||
* `s`: *S*hiny
|
||||
|
||||
Then, each part is sent through a series of *workflows* that will ultimately *accept* or *reject* the part. Each workflow has a name and contains a list of *rules*; each rule specifies a condition and where to send the part if the condition is true. The first rule that matches the part being considered is applied immediately, and the part moves on to the destination described by the rule. (The last rule in each workflow has no condition and always applies if reached.)
|
||||
|
||||
Consider the workflow `ex{x>10:one,m<20:two,a>30:R,A}`. This workflow is named `ex` and contains four rules. If workflow `ex` were considering a specific part, it would perform the following steps in order:
|
||||
|
||||
* Rule "`x>10:one`": If the part's `x` is more than `10`, send the part to the workflow named `one`.
|
||||
* Rule "`m<20:two`": Otherwise, if the part's `m` is less than `20`, send the part to the workflow named `two`.
|
||||
* Rule "`a>30:R`": Otherwise, if the part's `a` is more than `30`, the part is immediately *rejected* (`R`).
|
||||
* Rule "`A`": Otherwise, because no other rules matched the part, the part is immediately *accepted* (`A`).
|
||||
|
||||
If a part is sent to another workflow, it immediately switches to the start of that workflow instead and never returns. If a part is *accepted* (sent to `A`) or *rejected* (sent to `R`), the part immediately stops any further processing.
|
||||
|
||||
The system works, but it's not keeping up with the torrent of weird metal shapes. The Elves ask if you can help sort a few parts and give you the list of workflows and some part ratings (your puzzle input). For example:
|
||||
|
||||
```
|
||||
px{a<2006:qkq,m>2090:A,rfg}
|
||||
pv{a>1716:R,A}
|
||||
lnx{m>1548:A,A}
|
||||
rfg{s<537:gd,x>2440:R,A}
|
||||
qs{s>3448:A,lnx}
|
||||
qkq{x<1416:A,crn}
|
||||
crn{x>2662:A,R}
|
||||
in{s<1351:px,qqz}
|
||||
qqz{s>2770:qs,m<1801:hdj,R}
|
||||
gd{a>3333:R,R}
|
||||
hdj{m>838:A,pv}
|
||||
|
||||
{x=787,m=2655,a=1222,s=2876}
|
||||
{x=1679,m=44,a=2067,s=496}
|
||||
{x=2036,m=264,a=79,s=2244}
|
||||
{x=2461,m=1339,a=466,s=291}
|
||||
{x=2127,m=1623,a=2188,s=1013}
|
||||
|
||||
```
|
||||
|
||||
The workflows are listed first, followed by a blank line, then the ratings of the parts the Elves would like you to sort. All parts begin in the workflow named `in`. In this example, the five listed parts go through the following workflows:
|
||||
|
||||
* `{x=787,m=2655,a=1222,s=2876}`: `in` -\> `qqz` -\> `qs` -\> `lnx` -\> `*A*`
|
||||
* `{x=1679,m=44,a=2067,s=496}`: `in` -\> `px` -\> `rfg` -\> `gd` -\> `*R*`
|
||||
* `{x=2036,m=264,a=79,s=2244}`: `in` -\> `qqz` -\> `hdj` -\> `pv` -\> `*A*`
|
||||
* `{x=2461,m=1339,a=466,s=291}`: `in` -\> `px` -\> `qkq` -\> `crn` -\> `*R*`
|
||||
* `{x=2127,m=1623,a=2188,s=1013}`: `in` -\> `px` -\> `rfg` -\> `*A*`
|
||||
|
||||
Ultimately, three parts are *accepted*. Adding up the `x`, `m`, `a`, and `s` rating for each of the accepted parts gives `7540` for the part with `x=787`, `4623` for the part with `x=2036`, and `6951` for the part with `x=2127`. Adding all of the ratings for *all* of the accepted parts gives the sum total of `*19114*`.
|
||||
|
||||
Sort through all of the parts you've been given; *what do you get if you add together all of the rating numbers for all of the parts that ultimately get accepted?*
|
||||
|
||||
Your puzzle answer was `446517`.
|
||||
|
||||
\--- Part Two ---
|
||||
----------
|
||||
|
||||
Even with your help, the sorting process *still* isn't fast enough.
|
||||
|
||||
One of the Elves comes up with a new plan: rather than sort parts individually through all of these workflows, maybe you can figure out in advance which combinations of ratings will be accepted or rejected.
|
||||
|
||||
Each of the four ratings (`x`, `m`, `a`, `s`) can have an integer value ranging from a minimum of `1` to a maximum of `4000`. Of *all possible distinct combinations* of ratings, your job is to figure out which ones will be *accepted*.
|
||||
|
||||
In the above example, there are `*167409079868000*` distinct combinations of ratings that will be accepted.
|
||||
|
||||
Consider only your list of workflows; the list of part ratings that the Elves wanted you to sort is no longer relevant. *How many distinct combinations of ratings will be accepted by the Elves' workflows?*
|
||||
|
||||
Your puzzle answer was `130090458884662`.
|
||||
|
||||
Both parts of this puzzle are complete! They provide two gold stars: \*\*
|
||||
|
||||
At this point, you should [return to your Advent calendar](/2023) and try another puzzle.
|
||||
|
||||
If you still want to see it, you can [get your puzzle input](19/input).
|
228
2023/day19_aplenty/src/lib.rs
Normal file
228
2023/day19_aplenty/src/lib.rs
Normal file
|
@ -0,0 +1,228 @@
|
|||
use core::fmt::Display;
|
||||
use std::num::ParseIntError;
|
||||
use std::collections::HashMap;
|
||||
use std::cmp::Ordering;
|
||||
|
||||
const MIN: usize = 1;
|
||||
const MAX: usize = 4000;
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub enum ParseError<'a> {
|
||||
InvalidCategory(char),
|
||||
InvalidComparison(char),
|
||||
LineMalformed(&'a str),
|
||||
ParseIntError(std::num::ParseIntError),
|
||||
RuleMalformed(&'a str),
|
||||
WrongNewLineCount,
|
||||
}
|
||||
|
||||
impl From<ParseIntError> for ParseError<'_> {
|
||||
fn from(value: ParseIntError) -> Self {
|
||||
Self::ParseIntError(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for ParseError<'_> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::InvalidCategory(c) => write!(f, "Parts may only consist of categories x, m, a, and s. Found \"{c}\" instead."),
|
||||
Self::InvalidComparison(c) => write!(f, "Comparisons can only be <, or >. Found {c} instead."),
|
||||
Self::LineMalformed(v) => write!(f, "Line is malformed: {v}"),
|
||||
Self::ParseIntError(e) => write!(f, "Unable to parse into integer: {e}"),
|
||||
Self::RuleMalformed(v) => write!(f, "Rule is malformed: {v}"),
|
||||
Self::WrongNewLineCount => write!(f, "Input does not consist of two parts separated by an empty line."),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct Rule {
|
||||
category: usize,
|
||||
comparison: Ordering,
|
||||
value: usize,
|
||||
true_id: usize,
|
||||
}
|
||||
|
||||
impl Rule {
|
||||
fn applies_to(&self, part: &Part) -> bool {
|
||||
part.components[self.category].cmp(&self.value) == self.comparison
|
||||
}
|
||||
}
|
||||
|
||||
struct Workflow {
|
||||
id: usize,
|
||||
rules: Vec<Rule>,
|
||||
}
|
||||
|
||||
impl Workflow {
|
||||
fn next(&self, part: &Part) -> usize {
|
||||
for rule in &self.rules {
|
||||
if rule.applies_to(part) {
|
||||
return rule.true_id;
|
||||
}
|
||||
}
|
||||
self.rules.last().unwrap().true_id
|
||||
}
|
||||
}
|
||||
|
||||
struct Part {
|
||||
components: [usize; 4],
|
||||
}
|
||||
|
||||
impl<'a> TryFrom<&'a str> for Part {
|
||||
type Error = ParseError<'a>;
|
||||
|
||||
fn try_from(value: &'a str) -> Result<Self, Self::Error> {
|
||||
let components: Vec<_> = value.split(['{', '=', ',', '}']).collect();
|
||||
if components.len() != 10 {
|
||||
return Err(Self::Error::LineMalformed(value));
|
||||
}
|
||||
let x = components[2].parse()?;
|
||||
let m = components[4].parse()?;
|
||||
let a = components[6].parse()?;
|
||||
let s = components[8].parse()?;
|
||||
|
||||
Ok(Self{ components: [x, m, a, s], })
|
||||
}
|
||||
}
|
||||
|
||||
pub fn run(input: &str) -> Result<(usize, usize), ParseError> {
|
||||
let input_parts: Vec<_> = input.split("\n\n").collect();
|
||||
if input_parts.len() != 2 {
|
||||
return Err(ParseError::WrongNewLineCount);
|
||||
}
|
||||
let workflows = parse_workflows(input_parts[0])?;
|
||||
let parts: Vec<_> = input_parts[1].lines().map(Part::try_from).collect::<Result<Vec<_>, ParseError>>()?;
|
||||
let first = parts.iter().filter(|part| {
|
||||
let mut queue = 0;
|
||||
loop {
|
||||
queue = workflows[queue].next(part);
|
||||
if queue < 3 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
queue == 1
|
||||
}).map(|part| part.components.iter().sum::<usize>()).sum();
|
||||
let second = find_ranges(&workflows, 0, &[(MIN, MAX); 4]).iter()
|
||||
.map(|range| range.iter().map(|(lower, upper)| upper+1-lower).product::<usize>())
|
||||
.sum();
|
||||
Ok((first, second))
|
||||
}
|
||||
|
||||
fn find_ranges(workflows: &[Workflow], current_rule: usize, in_ranges: &[(usize, usize); 4]) -> Vec<[(usize, usize); 4]> {
|
||||
if in_ranges.iter().any(|(lower, upper)| lower > upper) {
|
||||
return Vec::new();
|
||||
}
|
||||
match current_rule {
|
||||
1 => vec![*in_ranges],
|
||||
2 => Vec::new(),
|
||||
_ => {
|
||||
let mut res = Vec::new();
|
||||
let mut ranges_left = *in_ranges;
|
||||
workflows[current_rule].rules.iter().for_each(|rule| {
|
||||
let cat = rule.category;
|
||||
let cmp = rule.comparison;
|
||||
let val = rule.value;
|
||||
let mut out_ranges = ranges_left;
|
||||
match cmp {
|
||||
Ordering::Less => out_ranges[cat].1 = out_ranges[cat].1.min(val-1),
|
||||
Ordering::Greater => out_ranges[cat].0 = out_ranges[cat].0.max(val+1),
|
||||
Ordering::Equal => unreachable!("Equality is not implemented"),
|
||||
};
|
||||
find_ranges(workflows, rule.true_id, &out_ranges).iter().for_each(|range| {
|
||||
res.push(*range);
|
||||
});
|
||||
match cmp {
|
||||
Ordering::Less => ranges_left[cat].0 = ranges_left[cat].0.max(val),
|
||||
Ordering::Greater => ranges_left[cat].1 = ranges_left[cat].1.min(val),
|
||||
Ordering::Equal => unreachable!("Equality is not implemented"),
|
||||
};
|
||||
});
|
||||
res
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_workflows(input: &str) -> Result<Vec<Workflow>, ParseError> {
|
||||
let mut ids = HashMap::from([("in", 0), ("A", 1), ("R", 2)]);
|
||||
let mut workflows = Vec::from([Workflow{id: 1, rules: Vec::new()}, Workflow{id: 2, rules: Vec::new()},]);
|
||||
for line in input.lines() {
|
||||
let components: Vec<_> = line.split(['{', ':', ',', '}']).collect();
|
||||
let name = components[0];
|
||||
let id = match ids.get(name) {
|
||||
Some(i) => *i,
|
||||
None => {
|
||||
let l = ids.len();
|
||||
ids.insert(name, l);
|
||||
l
|
||||
},
|
||||
};
|
||||
let mut rules = Vec::new();
|
||||
for c in components[1..components.len()-2].chunks(2) {
|
||||
let (condition, dest) = (c[0], c[1]);
|
||||
if condition.len() < 3 {
|
||||
return Err(ParseError::RuleMalformed(condition));
|
||||
}
|
||||
let category = match condition.chars().next() {
|
||||
Some('x') => Ok(0),
|
||||
Some('m') => Ok(1),
|
||||
Some('a') => Ok(2),
|
||||
Some('s') => Ok(3),
|
||||
Some(e) => Err(ParseError::InvalidCategory(e)),
|
||||
None => Err(ParseError::RuleMalformed(condition)),
|
||||
}?;
|
||||
let comparison = match condition.chars().nth(1) {
|
||||
Some('<') => Ok(Ordering::Less),
|
||||
Some('>') => Ok(Ordering::Greater),
|
||||
Some(e) => Err(ParseError::InvalidComparison(e)),
|
||||
None => Err(ParseError::RuleMalformed(condition)),
|
||||
}?;
|
||||
let value = condition[2..].parse()?;
|
||||
let true_id = match ids.get(dest) {
|
||||
Some(i) => *i,
|
||||
None => {
|
||||
let l = ids.len();
|
||||
ids.insert(dest, l);
|
||||
l
|
||||
},
|
||||
};
|
||||
rules.push(Rule{ category, comparison, value, true_id });
|
||||
}
|
||||
let default = components[components.len()-2];
|
||||
let true_id = match ids.get(default) {
|
||||
Some(i) => *i,
|
||||
None => {
|
||||
let l = ids.len();
|
||||
ids.insert(default, l);
|
||||
l
|
||||
},
|
||||
};
|
||||
// Last rule is default. Since all components are guaranteed to have values in [1..=4000], this comparison is always true.
|
||||
rules.push(Rule{ category: 0, comparison: Ordering::Less, value: usize::MAX, true_id });
|
||||
workflows.push(Workflow { id, rules, });
|
||||
}
|
||||
workflows.sort_by_key(|workflow| workflow.id);
|
||||
Ok(workflows)
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::fs::read_to_string;
|
||||
|
||||
fn read_file(name: &str) -> String {
|
||||
read_to_string(name).expect(&format!("Unable to read file: {name}")[..]).trim().to_string()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_sample() {
|
||||
let sample_input = read_file("tests/sample_input");
|
||||
assert_eq!(run(&sample_input), Ok((19114, 167409079868000)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_challenge() {
|
||||
let challenge_input = read_file("tests/challenge_input");
|
||||
assert_eq!(run(&challenge_input), Ok((446517, 0)));
|
||||
}
|
||||
}
|
794
2023/day19_aplenty/tests/challenge_input
Normal file
794
2023/day19_aplenty/tests/challenge_input
Normal file
|
@ -0,0 +1,794 @@
|
|||
rr{s>898:A,s>537:A,a>2567:R,A}
|
||||
gmr{x<1782:A,x<1819:R,R}
|
||||
dln{m<1743:R,R}
|
||||
kd{x>1248:xsx,m<797:cxm,ppz}
|
||||
lsv{m<2789:R,A}
|
||||
ld{a>2638:A,x<2418:tsb,sds}
|
||||
bb{x<2091:gb,s>2804:lxr,vz}
|
||||
rjc{s<2734:R,x<709:R,R}
|
||||
ng{x<3090:A,a<3366:R,a>3456:R,R}
|
||||
fdh{a<2472:jbt,chz}
|
||||
pg{x<3179:A,x>3508:R,s<2653:R,A}
|
||||
ckl{x<1338:R,s>1155:R,R}
|
||||
tt{m<3331:R,x<2654:R,a<2193:R,A}
|
||||
vk{x>1759:hzr,xgr}
|
||||
pgn{s>3747:A,R}
|
||||
ksl{a>1008:dq,s>1178:vc,a<669:A,A}
|
||||
frt{s<2175:R,x<3670:R,R}
|
||||
hk{x>767:jn,lvr}
|
||||
dnq{s<1989:A,A}
|
||||
rcp{a>1871:A,x<879:A,s>3196:A,A}
|
||||
vdc{s>1410:A,x<2648:R,R}
|
||||
hp{x>3237:R,R}
|
||||
sps{s<2626:A,A}
|
||||
fsz{a>1966:R,R}
|
||||
dtd{x<3224:A,x<3493:njp,R}
|
||||
nzm{s>1996:R,s>1738:R,R}
|
||||
shm{m<3138:A,m>3515:A,A}
|
||||
rbl{s>2903:A,A}
|
||||
rqr{a<1658:cz,a>2538:hr,cr}
|
||||
mfd{m<2895:bkh,m>3041:R,x>605:R,kpt}
|
||||
cxm{x<733:fqb,m<305:lh,A}
|
||||
mtj{a>682:A,m<514:R,R}
|
||||
nqp{x<1742:xmh,m<2426:qg,a<1664:zn,mdq}
|
||||
qbc{s>1746:R,a>3471:A,A}
|
||||
gcb{a>3873:R,x>901:A,s>2526:R,A}
|
||||
ddt{a<1612:xxx,x>874:pzr,kxp}
|
||||
jln{x>2909:btr,s<3265:R,x>2454:A,fxb}
|
||||
fv{m<3341:crk,nt}
|
||||
fcc{m<1595:R,a>1673:R,R}
|
||||
vdl{a<917:A,x>3085:A,A}
|
||||
xh{x>3911:A,m>1584:A,a<3658:R,R}
|
||||
fb{x<2218:R,a<3097:csq,x<2966:A,R}
|
||||
rg{s<228:A,A}
|
||||
vv{s>2743:R,m<2300:A,gtc}
|
||||
kt{s<3205:A,x<2474:R,R}
|
||||
jd{x>2598:mmz,a>3196:R,a<2880:A,qc}
|
||||
sm{m<3026:R,s<2220:A,R}
|
||||
vpk{m<2927:pnv,s<2002:gbg,fqr}
|
||||
prz{x<2475:A,x>2503:A,A}
|
||||
nn{x<2989:nqs,m>908:A,x<3617:hp,A}
|
||||
nc{m>2293:A,x>2254:A,R}
|
||||
rz{m<1776:A,R}
|
||||
hg{a<3470:A,A}
|
||||
cmk{s<1993:A,R}
|
||||
fph{m<3353:qkz,s>2130:lnd,s<1710:dt,nfk}
|
||||
hx{m>3288:R,x<2240:R,a<3464:A,R}
|
||||
kjk{m<1183:sf,s<3408:nlb,sgz}
|
||||
lzg{x<2160:fcv,x<2444:kc,a<2312:cvn,qs}
|
||||
czj{x<2114:A,x>2307:R,A}
|
||||
sx{s>3037:mgt,qgq}
|
||||
bpz{x>1117:hkk,s<2508:bvv,cgs}
|
||||
lgh{s>2692:ql,s>1935:R,m>346:R,jpx}
|
||||
rfl{a>1490:R,x>3507:R,R}
|
||||
vh{x>2183:bnd,a<2596:R,a>2867:A,A}
|
||||
rb{x<2254:gtn,bdh}
|
||||
ndf{x<2115:lxm,hkf}
|
||||
sv{s<3585:A,m>1776:xrs,a>2949:nl,A}
|
||||
lg{a>1486:R,A}
|
||||
lv{m>893:A,x<1036:R,m>524:A,R}
|
||||
jbt{m>2850:R,m>2575:bpt,ghx}
|
||||
xvd{s<2329:klf,s>2728:A,s>2480:A,qj}
|
||||
gg{a>3498:R,A}
|
||||
ggg{x>1001:A,a<2616:R,s<659:A,R}
|
||||
sgz{a>3756:A,R}
|
||||
zn{a<950:bh,pnj}
|
||||
ps{a>1703:zs,a>670:kl,a<445:pt,lk}
|
||||
jhb{s<568:vsn,s<1048:lz,a<2079:vfv,zkv}
|
||||
bd{s<628:R,x>3025:A,R}
|
||||
dt{m>3610:A,A}
|
||||
mx{m<3109:R,A}
|
||||
ql{a>995:R,a>973:R,A}
|
||||
prb{m>2030:rsc,m>1898:A,s<2334:dnq,A}
|
||||
pxv{s<870:php,m<1064:lx,zf}
|
||||
qhf{m<1946:A,R}
|
||||
fq{a<3277:R,a>3518:R,s<1199:A,R}
|
||||
mvc{x<2140:R,x>2193:A,a>1442:R,R}
|
||||
qn{m<3781:mmd,jgc}
|
||||
kfz{x<2837:A,m>321:R,R}
|
||||
kgb{s<696:A,R}
|
||||
lq{m>541:R,x>1193:A,x>903:A,R}
|
||||
jj{s<479:mjb,jzr}
|
||||
zt{s>3076:jln,qz}
|
||||
csq{m>578:R,R}
|
||||
jm{s<3473:R,A}
|
||||
qkm{x<3127:R,x>3236:R,A}
|
||||
sf{s<3412:kcg,szg}
|
||||
zcd{a<1421:qzl,sv}
|
||||
gpk{x>2366:R,R}
|
||||
sj{x>3520:A,m<2544:R,R}
|
||||
pvd{x>1715:A,a<2497:A,x<1089:R,R}
|
||||
pr{s<1859:R,a>3529:A,a<3397:R,R}
|
||||
djb{m<1114:sh,qrb}
|
||||
czq{s>516:R,x<2218:R,s<218:A,A}
|
||||
vb{s<1894:R,a<184:A,R}
|
||||
vqj{a<2270:vht,R}
|
||||
kvq{a>3727:A,a>3597:hqb,m>1854:A,R}
|
||||
kpt{a>688:A,m>2946:R,s<2011:A,A}
|
||||
tsb{a>2200:A,m>3082:A,m>2940:R,R}
|
||||
vsl{a>1614:A,a>768:R,a<375:A,R}
|
||||
lxm{m>2209:A,x<1948:R,kpl}
|
||||
zbj{a>787:A,a<502:R,R}
|
||||
pt{m<2952:nd,s<361:qk,rf}
|
||||
vqc{a>3208:gh,a<2817:fxj,hph}
|
||||
lx{a<1928:kx,nn}
|
||||
fp{x<2488:A,a>2594:A,a>2565:sd,lqr}
|
||||
pl{s<2435:R,x>3489:R,a>2005:A,R}
|
||||
km{s>2297:gg,s>1995:kr,jmj}
|
||||
mjb{x<3145:R,x<3583:R,R}
|
||||
gbf{m>2386:hsv,a<2812:sgd,s>3107:fkm,xrg}
|
||||
hkf{x<2196:A,m>2222:nc,tfj}
|
||||
hps{m<591:rh,x>2182:kjk,tl}
|
||||
xt{s>3069:tml,x>1527:djf,kb}
|
||||
tts{m<1713:fcc,a>1665:rz,rjc}
|
||||
kcg{a<3603:A,R}
|
||||
xms{a<2083:R,s>1109:A,A}
|
||||
qj{m<1531:A,a>3029:A,R}
|
||||
hqf{s>3712:R,A}
|
||||
zdp{a<631:A,m<2934:R,R}
|
||||
phs{s>2172:R,m<2954:A,s>1925:R,A}
|
||||
sds{x<2514:A,x<2551:A,A}
|
||||
lm{x>2416:A,s<2513:R,a<1459:A,R}
|
||||
bkh{s<2508:R,s>2810:R,A}
|
||||
tlz{a<935:pb,A}
|
||||
mh{x<1362:R,s>1153:R,x>2831:A,R}
|
||||
bvq{m<2140:srz,fjj}
|
||||
lxf{s<1017:A,x>2469:R,A}
|
||||
hm{m<1965:R,s>573:A,s>193:R,A}
|
||||
lvr{x>427:R,A}
|
||||
rtv{x>3401:R,m<2251:R,s>2426:R,A}
|
||||
hqb{s>2435:R,x>720:R,s<1864:A,R}
|
||||
qd{a>2748:ts,s>920:xk,jj}
|
||||
dvr{x>3050:R,A}
|
||||
vht{m<689:A,s<2425:R,s<2806:A,A}
|
||||
zm{x>3152:zhj,fqq}
|
||||
sh{m>993:R,A}
|
||||
mk{m<2712:xb,x>2142:gpk,m<2743:zr,psh}
|
||||
chs{x<3929:R,s>1942:R,m<2796:ffh,mx}
|
||||
khd{x<3748:R,A}
|
||||
pmr{x>2509:A,A}
|
||||
zcq{s<2618:R,A}
|
||||
rs{a<595:R,a>852:A,m>3564:A,A}
|
||||
dxt{m>1128:A,lzj}
|
||||
lng{a<2870:df,A}
|
||||
kpl{s<2493:R,a<1131:R,A}
|
||||
fgg{m>2455:R,m>2339:fz,x<921:A,R}
|
||||
sqz{m<2787:R,x>3528:R,R}
|
||||
qb{a>1416:A,x<3393:A,A}
|
||||
bnd{m>2536:A,a<2513:A,A}
|
||||
tjk{x<2066:R,a<369:A,a>606:R,A}
|
||||
mmd{x<2980:dm,a<3007:zvt,ls}
|
||||
cvp{x<3229:R,A}
|
||||
zb{a>2688:A,x>2968:A,m>700:A,R}
|
||||
nlh{s>1869:A,m>2299:R,A}
|
||||
kx{s<1117:brj,s>1248:zz,x<3062:fnb,lsf}
|
||||
xq{a<1263:A,x>1846:A,x<720:R,A}
|
||||
mmz{a<3150:A,s>2097:A,a>3567:R,R}
|
||||
jxh{a<1249:R,R}
|
||||
fqb{a>2654:A,A}
|
||||
sd{s<1805:R,x<3073:A,a<2580:A,R}
|
||||
fmt{m<2299:R,s>3647:A,A}
|
||||
jn{a>3654:R,a<3493:A,x<1507:A,A}
|
||||
th{m<2025:hm,a>1062:R,R}
|
||||
lz{s>782:bf,R}
|
||||
pvt{m<1601:A,x<3907:A,A}
|
||||
mg{x<723:R,m<1201:A,s<634:A,A}
|
||||
lh{s>3524:A,x<967:A,a<2778:A,R}
|
||||
cjm{a<3316:R,x<2600:xxp,m<2257:A,R}
|
||||
szg{x<2812:R,x>3229:R,A}
|
||||
lsf{m<962:A,x>3551:R,R}
|
||||
cn{x<1332:R,a<3320:R,x<1904:R,A}
|
||||
nnr{x<2403:R,s<1216:A,m>1777:A,A}
|
||||
ppz{s>3407:jv,R}
|
||||
lb{s>3415:A,s<3183:A,R}
|
||||
pnj{s>2768:fv,a>1283:fph,qps}
|
||||
fcv{x<1943:pv,a<2408:A,hhv}
|
||||
bf{s>924:R,s>855:R,A}
|
||||
dmz{a<661:R,A}
|
||||
lk{a<528:R,s>385:R,a<587:A,zdp}
|
||||
pj{a<3750:R,s<626:A,A}
|
||||
xm{m>1846:A,a<1390:A,R}
|
||||
tfj{x<2270:A,R}
|
||||
np{m>2347:R,x<2638:A,s<3079:A,A}
|
||||
pv{s>2196:A,m>2764:A,s>1919:R,A}
|
||||
cz{x>1399:qtt,s>865:ksl,frk}
|
||||
fl{x>2916:R,m<1121:R,R}
|
||||
kmf{m>317:R,A}
|
||||
ss{x<1134:mfd,zjv}
|
||||
klf{s>1901:R,R}
|
||||
ck{m>591:cx,mb}
|
||||
nzj{a<1820:csd,a<2110:pl,A}
|
||||
tml{s<3444:kbk,x>2333:xl,pgn}
|
||||
pd{a<2025:R,x<2085:R,x>2165:R,A}
|
||||
bdh{a<1985:dp,a>3257:dln,dh}
|
||||
kcn{m>3720:nm,s>407:gl,R}
|
||||
ds{s>804:kj,kcn}
|
||||
dkk{x>3424:mpl,x<2914:A,R}
|
||||
njp{a<1942:R,s<1774:A,m<1577:A,A}
|
||||
qq{a<435:shm,x<3562:R,m<3020:jf,A}
|
||||
tl{a<3669:rdm,qf}
|
||||
lvp{m<1360:R,A}
|
||||
grg{s<3251:A,m>3391:rq,s>3321:R,R}
|
||||
qtd{m<2016:cjk,bv}
|
||||
nhp{x>3803:fj,a>2417:R,x>3717:A,A}
|
||||
bk{x>2355:A,A}
|
||||
zj{a>3455:A,s>2113:A,A}
|
||||
kxz{x>2356:qcj,x>2284:R,a<395:vb,R}
|
||||
hc{a<960:czq,s>822:R,m<2057:R,dks}
|
||||
fkm{x>935:lmt,ksg}
|
||||
rn{a<1457:R,x>2594:A,R}
|
||||
hkk{m>3533:A,R}
|
||||
qk{x<1619:A,A}
|
||||
xl{x<3394:mvg,s<3791:gbp,db}
|
||||
srq{s>1922:ttc,s<1675:pm,s>1833:R,R}
|
||||
lmt{a>3368:lth,px}
|
||||
fzq{m>516:szn,x>2314:dlf,m>240:gx,R}
|
||||
jgc{m>3858:gt,s<2009:fxg,zm}
|
||||
sxj{s<1686:R,R}
|
||||
bv{x>746:A,R}
|
||||
gdf{x<2202:A,m>2735:R,x<2226:R,R}
|
||||
xn{s<2594:A,pg}
|
||||
lns{m>209:A,x>1172:A,x>653:A,R}
|
||||
xpm{m>970:R,R}
|
||||
dlf{a<3819:A,s<2152:R,x>3103:R,A}
|
||||
xlm{s>3506:R,s<3114:A,x<237:R,dd}
|
||||
ltl{m<3266:R,x>2923:R,R}
|
||||
fxg{x<3039:R,R}
|
||||
kvd{a<2015:A,a<2203:A,A}
|
||||
xk{a>2472:A,A}
|
||||
dr{m>3536:A,R}
|
||||
lxr{a>314:R,s<3374:zvm,hqf}
|
||||
js{m<2209:brg,mcs}
|
||||
ml{m>1632:R,s<2988:hvt,a>2498:R,gm}
|
||||
cp{s>719:fq,A}
|
||||
mgt{m<3413:A,a>532:R,a<286:R,R}
|
||||
vcf{m<727:R,x<3292:R,s<2732:R,A}
|
||||
btr{x>3446:R,x>3238:R,a>3185:R,A}
|
||||
hn{x>1913:tjk,m<3321:A,R}
|
||||
zl{s<2584:R,vdl}
|
||||
dp{a>968:lm,m>1728:xnm,R}
|
||||
vmx{x<3249:R,x>3273:A,m>2220:A,rvk}
|
||||
mzz{a>2648:cp,x<1344:th,x<2953:hc,xj}
|
||||
vr{a<1115:A,R}
|
||||
vf{m<826:R,gcb}
|
||||
qzc{x<2839:A,s>3582:A,x>3469:R,A}
|
||||
nx{s<2192:A,x>499:R,s>2202:R,A}
|
||||
fjj{m<2326:A,m<2504:A,a>1056:A,dqz}
|
||||
mpl{m<1525:A,s<2419:A,a<1827:R,A}
|
||||
lcl{a<705:A,x<1817:A,A}
|
||||
jpx{s<1668:R,s<1827:R,R}
|
||||
xsx{x>1669:R,A}
|
||||
rjq{s>3727:R,m>3423:pmr,a>568:R,A}
|
||||
ghx{m>2501:A,s>2929:R,s>2720:A,R}
|
||||
gb{a>279:R,s<3000:R,A}
|
||||
jt{a<878:kq,m<2314:jxh,lg}
|
||||
fqk{s<1110:lxf,s>1180:vsl,R}
|
||||
gxx{a>2598:R,x<3064:A,m<3929:A,A}
|
||||
kcp{m>1060:ppk,s<404:R,R}
|
||||
psh{x<1950:A,x<2028:R,A}
|
||||
rm{x<341:jt,x<501:vv,s<2942:lgf,fmt}
|
||||
xch{s<2107:A,R}
|
||||
tmv{a>2923:xg,s<2964:gs,x<2196:kd,hnn}
|
||||
kxp{x<293:A,R}
|
||||
vsn{s>326:A,x>2098:qrr,R}
|
||||
qms{a>1941:A,m<2303:A,A}
|
||||
zh{s<2793:R,R}
|
||||
fsd{m>1626:pld,zq}
|
||||
bsx{x<2013:A,x<2171:A,A}
|
||||
bm{a<3244:A,x<346:A,s<3829:R,R}
|
||||
ct{s>3112:qdp,a>3271:A,R}
|
||||
jp{a<1671:qjv,m<664:smj,R}
|
||||
ddd{a>620:A,A}
|
||||
bcc{x<1209:A,x>1887:pd,m>954:kvd,nr}
|
||||
ppk{a>1976:A,s<567:R,R}
|
||||
hq{a<3395:ltl,a<3598:phj,R}
|
||||
nl{s>3806:R,a>3467:A,a<3193:R,R}
|
||||
hr{s>608:qtz,rg}
|
||||
ngm{m>464:ck,a<2048:gn,x<1680:vqc,qd}
|
||||
sfc{a<2871:R,x<3171:R,A}
|
||||
drh{a<932:rgr,a>1062:zcq,lgh}
|
||||
xb{m<2690:A,m>2699:A,s<2160:R,A}
|
||||
zq{s<2147:R,m>1598:A,R}
|
||||
hf{s>2241:R,R}
|
||||
pld{a>3224:A,x>3679:A,s<2225:R,R}
|
||||
rp{x>2208:gr,m<2385:A,x<2025:R,A}
|
||||
tp{m>642:cb,a<496:bb,drh}
|
||||
dk{m<793:ngm,x<2235:rqr,pxv}
|
||||
kq{x>142:R,a>320:R,m>2119:R,R}
|
||||
brj{x<3156:A,s<1001:A,x<3516:R,A}
|
||||
hzr{m>800:cj,m<350:bnp,dz}
|
||||
dvq{a<2817:rfk,s<3640:hsr,s>3834:hq,nbh}
|
||||
zvt{a<2194:qr,m>3582:A,R}
|
||||
hbc{m>3311:A,s<3819:R,A}
|
||||
xrg{a>3374:kvq,qtd}
|
||||
ldt{a<452:A,a>935:A,R}
|
||||
tv{a>2686:R,R}
|
||||
fnb{x<2659:R,m<950:A,A}
|
||||
bvv{s>2099:rs,x<646:A,dmz}
|
||||
ksg{s<3593:R,s<3769:A,s<3882:bm,A}
|
||||
xc{a>3887:gfs,a>3825:A,ghr}
|
||||
rsd{x<3011:R,x<3633:A,A}
|
||||
nz{x<2602:A,R}
|
||||
skv{s>2643:sk,m<2211:jd,m>2315:rp,cjm}
|
||||
gq{x<213:A,a<3282:R,x<293:R,R}
|
||||
kc{s>2101:R,x<2259:gdf,A}
|
||||
rfk{a>2407:lfs,a>2066:A,x>2992:tnc,R}
|
||||
zdm{x<2998:R,A}
|
||||
kj{m>3825:A,s<1051:A,A}
|
||||
mb{x<1966:A,a>1499:lt,m<543:nmd,vt}
|
||||
qzl{a<793:jqf,m>1686:cpg,R}
|
||||
nfk{s>1960:cvp,R}
|
||||
rlh{m>2779:hpm,mk}
|
||||
cvn{s>1938:dpv,x>2495:R,A}
|
||||
lqr{m<633:A,m<963:R,A}
|
||||
gtc{s<2207:R,A}
|
||||
pb{a>441:R,A}
|
||||
gbp{a>1802:R,m>560:A,A}
|
||||
brg{m<2150:rn,a<1739:ddd,nz}
|
||||
lsb{a>2810:R,a<2751:lr,s>1951:R,nvv}
|
||||
qcj{a>398:R,s>1884:A,A}
|
||||
jhn{s>624:A,a>2215:R,A}
|
||||
mhd{s>2442:lv,m<919:lq,m<1293:R,nmf}
|
||||
xrs{a<2872:A,s>3844:R,a<3570:R,R}
|
||||
xxx{x<724:dr,m>3415:A,m<3044:R,A}
|
||||
tb{s>569:A,s>199:A,s<116:R,R}
|
||||
zhj{s>2372:A,x>3453:A,x>3285:A,A}
|
||||
gl{x<2441:R,R}
|
||||
gfs{s>1715:A,s<1599:A,A}
|
||||
zkv{m<1595:R,a>3150:nnr,s<1240:mh,pvd}
|
||||
chn{x>3256:A,x<3078:R,A}
|
||||
cpz{x>2062:mvc,x<1856:gmr,s>3599:rgb,czs}
|
||||
ghr{a<3760:R,A}
|
||||
gn{x>1698:dhv,kgb}
|
||||
kr{x<1124:A,m>1069:A,s<2187:A,R}
|
||||
sgd{a<2278:mgb,m<1822:ml,prb}
|
||||
dh{m>1731:A,R}
|
||||
dkg{a>2779:A,a<2711:zb,R}
|
||||
ls{x<3343:qkm,s<2028:A,jq}
|
||||
mm{a<846:R,a<1339:xgt,a<1472:xm,rl}
|
||||
lzr{s>2689:A,s<2630:A,x<2720:R,R}
|
||||
gh{a>3561:pj,vtl}
|
||||
nt{x>2734:R,a>1190:A,s>3248:A,A}
|
||||
vs{x<447:R,R}
|
||||
in{s<1496:qfr,m<1482:tj,nqp}
|
||||
zs{m<3096:A,a<2616:tt,hx}
|
||||
cdf{a<3463:R,s<2048:A,m>1382:R,R}
|
||||
dd{a<3213:R,x>308:R,m<2995:R,A}
|
||||
pks{a>1889:A,A}
|
||||
qjv{m<982:R,R}
|
||||
srz{s>2452:jm,s>1986:zp,x<1249:sxj,A}
|
||||
xgr{m>642:km,xxn}
|
||||
bh{s>2773:gsg,vsg}
|
||||
xj{x<3493:chn,R}
|
||||
tj{a>2506:tm,sl}
|
||||
jf{s<3734:A,a<661:A,s<3836:R,R}
|
||||
khx{m>2843:tmp,m<2675:mz,a>3041:rlh,lzg}
|
||||
sk{x<2346:R,x<2697:A,x>2851:A,fjq}
|
||||
vpq{a<663:A,s>2293:R,a>950:A,A}
|
||||
xgt{a<1048:A,A}
|
||||
tnc{a>1862:A,s<3634:R,m<3035:R,R}
|
||||
ln{m>2932:bzj,s>1151:A,R}
|
||||
lff{a<1901:A,x<2187:R,R}
|
||||
nbh{s<3743:mdb,s<3790:ffc,hbc}
|
||||
rhg{a>1320:R,A}
|
||||
vz{a<183:lvq,cmk}
|
||||
fz{x>790:R,m<2400:R,R}
|
||||
vt{a>598:A,x>3231:R,a>341:R,R}
|
||||
qps{m>3221:hpr,s<2321:srq,xn}
|
||||
mcs{a<1515:np,s>2811:A,fsz}
|
||||
dks{m>2130:R,a<1599:A,R}
|
||||
hsv{x>985:ct,x>359:dn,s<2526:lng,xlm}
|
||||
lvq{m<239:A,A}
|
||||
dv{a<410:A,s>2028:R,R}
|
||||
fg{x<1959:A,A}
|
||||
jv{m<1064:A,a<2658:R,x<805:A,A}
|
||||
kl{m>3040:sfh,a<1130:R,a<1421:xq,A}
|
||||
mgb{s>2339:tnz,m>1888:R,x<962:A,jg}
|
||||
cjk{s>2328:A,s<1781:A,R}
|
||||
fxb{s>3309:A,R}
|
||||
php{s<442:dxt,bd}
|
||||
qg{m>2070:hb,x>2549:cns,rb}
|
||||
dm{a>2594:zj,x<2401:R,A}
|
||||
pxr{m<1112:qnh,vpq}
|
||||
hsr{x<2752:R,nh}
|
||||
tqz{s>2208:vf,s<1834:xc,njr}
|
||||
lth{x<1440:R,A}
|
||||
nmd{a<519:R,A}
|
||||
gz{x>3410:R,x<3234:R,m<1288:R,xms}
|
||||
qcz{a<129:R,m<3340:R,a<262:A,R}
|
||||
rq{s<3311:R,A}
|
||||
tgj{s>3014:rlb,a>1111:ddt,m<3242:ss,bpz}
|
||||
vbg{x>3262:R,m>3573:R,m>3497:A,R}
|
||||
mvg{a>1759:R,a>1407:R,A}
|
||||
qrb{m>1334:A,A}
|
||||
fqj{s<2511:A,s<2628:A,x<2454:A,R}
|
||||
jmj{s>1807:R,R}
|
||||
frk{s<428:A,mg}
|
||||
pnv{a>3010:R,vqn}
|
||||
vd{x<1353:tqz,vhs}
|
||||
cgs{m<3529:R,a<683:R,A}
|
||||
dqz{m<2565:A,R}
|
||||
bnp{s<2087:R,R}
|
||||
lrb{m<1290:vdc,rd}
|
||||
fqq{m>3817:R,A}
|
||||
vhs{m>830:djb,fzq}
|
||||
jz{x<3495:rmt,x>3782:bz,m<1563:xvd,fsd}
|
||||
zsr{x>2541:A,a>2559:R,s<3324:A,A}
|
||||
qz{m>3837:vcq,s>2754:R,A}
|
||||
krk{s>3368:dvq,m<3290:fdh,m<3627:tlc,zt}
|
||||
kb{x>523:mhd,gnz}
|
||||
phj{m>3335:R,x>2520:A,A}
|
||||
pzr{a<1772:hf,R}
|
||||
gm{x<594:A,A}
|
||||
zp{x>1210:A,m>1969:R,x<1048:A,R}
|
||||
ts{x>2800:tb,A}
|
||||
tm{a<3317:tmv,s>2777:hps,a<3704:vk,vd}
|
||||
vqt{a>1817:ln,lcl}
|
||||
cns{s>2940:zcd,m>1705:ttp,a>2419:jz,vm}
|
||||
cx{x>1442:dg,A}
|
||||
blp{m>2932:nzm,A}
|
||||
lnd{x<2860:fqj,s>2378:vbg,rfl}
|
||||
cjv{m>1230:R,m<1160:R,x>1829:R,A}
|
||||
vcq{s>2890:A,a<3193:R,R}
|
||||
lt{m>548:A,A}
|
||||
nq{m<1869:ltb,x>754:bvq,rm}
|
||||
dpv{s>2266:R,s>2088:A,R}
|
||||
pq{s>1896:A,a>508:A,R}
|
||||
dn{s<2714:R,A}
|
||||
rmt{a<3310:R,m<1579:qvx,a>3685:R,R}
|
||||
fj{x<3905:A,R}
|
||||
hb{x>3135:ncf,a>2657:skv,x>2312:js,ndf}
|
||||
zjv{x<1393:dv,phs}
|
||||
zrc{m>2599:kh,mf}
|
||||
hmd{x>2391:R,x<2249:A,a<359:qcz,R}
|
||||
qf{m<1072:R,R}
|
||||
ltb{a>1271:tts,sps}
|
||||
vfv{s<1311:rhg,s<1382:R,R}
|
||||
vm{a<1357:sc,s<2086:dtd,m>1566:nzj,dkk}
|
||||
nlb{s>3125:lvp,rbl}
|
||||
qkz{a>1431:lsv,a<1354:drt,m<2748:A,R}
|
||||
fx{m>278:R,R}
|
||||
fxt{m<158:A,s>2504:A,s>2278:A,A}
|
||||
ttc{m>2738:A,x>2531:R,R}
|
||||
xg{s>2648:cpj,fb}
|
||||
cpg{s>3571:A,A}
|
||||
vbf{x<2621:R,A}
|
||||
smj{x>2619:R,s<2380:A,m<229:R,A}
|
||||
rd{x>2635:R,R}
|
||||
ft{a>2590:R,x<1805:A,R}
|
||||
nvv{m<769:R,a<2775:A,x>1901:R,R}
|
||||
zvm{m<425:A,s<3125:A,A}
|
||||
jzr{a>2495:R,m<230:A,m>358:R,R}
|
||||
qrr{x>3109:A,A}
|
||||
pm{x>2979:R,R}
|
||||
hpm{s<2127:qbc,m>2821:A,A}
|
||||
tbj{x<2306:R,vcf}
|
||||
klg{x<2349:fgg,m>2394:rr,mq}
|
||||
tmh{x>1022:R,a<3888:R,R}
|
||||
vqn{s<2159:R,R}
|
||||
hhv{x<2021:R,s<1880:R,A}
|
||||
sl{a<1190:tp,xt}
|
||||
tnz{x<637:A,m<1928:R,A}
|
||||
gtk{x<3823:qnc,a<3156:chs,blp}
|
||||
qr{s>2187:R,R}
|
||||
lr{x>2636:R,a>2729:R,s<2032:R,R}
|
||||
gs{s>2370:tbj,a>2691:lsb,s<2037:fp,ft}
|
||||
cpj{m>531:mr,x>1562:A,fx}
|
||||
rl{m>1941:A,x<3272:A,A}
|
||||
cb{x>1857:ldt,s>2780:jxb,pxr}
|
||||
ffh{a<2544:A,s<1696:R,A}
|
||||
mq{m>2314:tc,R}
|
||||
bz{a<3452:pvt,xh}
|
||||
djf{a>1857:vqj,a>1478:jp,s>2415:qll,mpj}
|
||||
xql{s>3276:R,x>2910:R,R}
|
||||
qnh{x<1118:A,m>843:A,A}
|
||||
xnm{m<1895:A,s>2744:R,a<429:R,R}
|
||||
db{s<3888:A,m>601:R,A}
|
||||
tlc{s<3095:cs,m<3502:grg,tsj}
|
||||
gtn{s<2926:fg,m<1735:lmg,cpz}
|
||||
rdm{s<3565:hg,a<3476:R,A}
|
||||
jxb{x>920:hvd,m<1098:R,R}
|
||||
qvx{m<1542:R,s<2014:R,A}
|
||||
rsc{s<2569:A,x>1132:R,m<2161:A,R}
|
||||
hpr{s<2269:A,x>2982:A,m>3565:A,vr}
|
||||
rk{s>2288:R,A}
|
||||
gsg{s<3382:sx,x>3097:qq,rjq}
|
||||
lgf{s>2430:A,nlh}
|
||||
drt{x>2910:A,R}
|
||||
qnc{x>3593:qcm,m>2860:R,m>2715:sqz,sj}
|
||||
dg{s<957:R,A}
|
||||
szn{m<655:R,s>2167:R,A}
|
||||
mdq{s>2571:krk,m>3381:qn,x<2597:khx,fk}
|
||||
gr{a>3183:R,R}
|
||||
czs{s<3213:A,A}
|
||||
nh{m>3197:A,A}
|
||||
xs{a>2602:A,s>3647:A,x>3027:R,zsr}
|
||||
rlb{m>3367:lb,tlz}
|
||||
mr{x<1877:R,s<3159:R,A}
|
||||
qtz{m>1148:A,x>796:cn,x<350:gq,R}
|
||||
jqf{s<3537:R,m<1818:R,m<1976:A,A}
|
||||
jq{a>3381:R,A}
|
||||
bpt{x>2985:A,R}
|
||||
xmh{a>1944:gbf,m<2610:nq,tgj}
|
||||
cs{x<3029:R,x<3443:R,x>3665:zh,dnz}
|
||||
hvd{a>606:R,m<949:A,m>1293:A,R}
|
||||
njr{x>841:tmh,s<2080:vs,s>2160:nx,tmd}
|
||||
hvt{s<2301:R,A}
|
||||
qgq{s>2891:R,R}
|
||||
zr{m>2727:R,a>3625:A,a<3304:R,A}
|
||||
ncf{x>3563:nhp,x>3308:xhk,vmx}
|
||||
hnn{a<2656:xs,dkg}
|
||||
qc{x<2060:A,s>2092:R,R}
|
||||
rf{m>3287:A,A}
|
||||
vsg{x>2667:nsp,x<2143:hn,s>2296:hmd,kxz}
|
||||
bzh{a>2579:A,R}
|
||||
tmd{x<388:A,s<2111:R,R}
|
||||
zf{x>2922:gz,s<1243:fqk,lrb}
|
||||
dq{x<595:A,R}
|
||||
fxj{a>2401:ggg,jhn}
|
||||
qll{s<2846:glt,s>2969:bk,R}
|
||||
bx{m>3107:A,m<2664:R,s<2211:A,A}
|
||||
qtt{m>1113:cjv,A}
|
||||
mpj{a>1377:R,m<514:kmf,R}
|
||||
mz{a>3073:czj,a>2229:vh,lff}
|
||||
sfh{x<1574:A,s<319:A,R}
|
||||
fcz{m<1841:A,a<1372:R,m<1889:R,R}
|
||||
ttp{a>1724:qhf,s<2454:md,s>2659:mm,zl}
|
||||
vc{a<458:R,m>1073:R,m>916:A,R}
|
||||
gnz{x>273:xpm,pks}
|
||||
nqs{m<968:R,a<2977:R,A}
|
||||
fk{x>3474:gtk,vpk}
|
||||
vtl{s<935:A,x>669:R,m<289:R,A}
|
||||
lmg{s<3290:bsx,R}
|
||||
px{m<2033:A,A}
|
||||
ll{x>918:R,A}
|
||||
chz{s>2904:A,lzr}
|
||||
dnz{x>3587:R,x<3525:R,R}
|
||||
dhv{m>237:kfz,m<129:R,A}
|
||||
qcm{x<3703:A,m<3001:A,A}
|
||||
zhv{a>1975:R,m>3165:R,x<3102:A,R}
|
||||
ffc{a<3463:A,A}
|
||||
nd{x<1799:A,a<282:A,R}
|
||||
kh{m>3492:ds,s>745:vqt,ps}
|
||||
nsp{x<3541:dvr,a>347:bx,x>3714:xch,sm}
|
||||
mpf{s>1573:R,m<3914:R,R}
|
||||
jg{x>1236:A,R}
|
||||
cr{s<913:kcp,m>1073:ckl,bcc}
|
||||
tc{a>2626:A,a>1730:A,a<807:R,R}
|
||||
qs{x<2526:prz,a<2677:A,A}
|
||||
nr{s>1250:R,m>861:A,R}
|
||||
nmf{m>1404:R,R}
|
||||
dz{m<506:vbf,x<3002:R,m<699:A,A}
|
||||
rh{x>2099:qzc,hk}
|
||||
hph{a>3015:R,ll}
|
||||
bzj{m<3249:R,m>3352:A,s>1192:R,R}
|
||||
sc{m>1588:rk,x<3464:zbj,m<1543:khd,frt}
|
||||
csd{a>1549:A,s>2395:R,s>2241:R,A}
|
||||
gbg{m<3100:A,a<3189:A,a>3566:zdm,ng}
|
||||
xxp{s>2181:A,A}
|
||||
df{x>187:R,m>3063:R,R}
|
||||
kbk{x<2193:rcp,m>629:fl,x>2839:R,kt}
|
||||
nm{a<2075:A,x>2139:R,a>2877:R,A}
|
||||
mf{m<1887:jhb,m<2219:mzz,klg}
|
||||
gx{x>1676:A,R}
|
||||
fjq{s>3372:R,R}
|
||||
qdp{a>2663:A,R}
|
||||
xxn{m>393:R,s<2156:pr,fxt}
|
||||
fqr{a>2845:R,a>2145:A,zhv}
|
||||
gt{s>1855:gxx,s<1616:mpf,sfc}
|
||||
crk{m>2882:xql,x>2847:qb,s>3421:R,R}
|
||||
zz{m>927:A,A}
|
||||
tsj{a>2927:R,a<2375:A,bzh}
|
||||
xhk{x<3458:rtv,s>2967:qms,m<2272:A,A}
|
||||
rgb{m>1904:A,m<1840:A,a>1965:R,A}
|
||||
cj{a>3542:A,m<1223:rsd,x<2929:R,cdf}
|
||||
glt{s>2671:R,R}
|
||||
md{m>1924:A,a<858:pq,x<3172:fcz,R}
|
||||
lfs{x<2524:A,x>3069:A,R}
|
||||
lzj{x<2843:R,A}
|
||||
qfr{m<1406:dk,zrc}
|
||||
tmp{x<2199:tv,ld}
|
||||
mdb{x>3031:A,x<2213:R,x<2547:A,A}
|
||||
rgr{m>335:mtj,x<1850:lns,R}
|
||||
rvk{x<3262:A,x>3266:R,R}
|
||||
|
||||
{x=4,m=211,a=430,s=167}
|
||||
{x=469,m=1450,a=3037,s=1084}
|
||||
{x=90,m=929,a=457,s=661}
|
||||
{x=1411,m=2566,a=1085,s=162}
|
||||
{x=770,m=1427,a=132,s=385}
|
||||
{x=213,m=1476,a=443,s=1024}
|
||||
{x=1845,m=1234,a=2052,s=528}
|
||||
{x=261,m=330,a=2087,s=3049}
|
||||
{x=2520,m=545,a=2023,s=1094}
|
||||
{x=687,m=1369,a=716,s=194}
|
||||
{x=1260,m=534,a=959,s=1228}
|
||||
{x=1681,m=824,a=31,s=536}
|
||||
{x=1469,m=527,a=732,s=28}
|
||||
{x=1385,m=318,a=812,s=849}
|
||||
{x=43,m=2439,a=943,s=1751}
|
||||
{x=1281,m=992,a=1310,s=181}
|
||||
{x=1442,m=772,a=529,s=835}
|
||||
{x=2938,m=1243,a=129,s=149}
|
||||
{x=135,m=1141,a=2930,s=233}
|
||||
{x=1183,m=503,a=17,s=794}
|
||||
{x=1365,m=674,a=1118,s=466}
|
||||
{x=1797,m=3174,a=94,s=478}
|
||||
{x=673,m=39,a=1324,s=2}
|
||||
{x=179,m=525,a=1441,s=240}
|
||||
{x=160,m=131,a=569,s=116}
|
||||
{x=6,m=2905,a=2176,s=692}
|
||||
{x=535,m=136,a=976,s=659}
|
||||
{x=48,m=452,a=456,s=111}
|
||||
{x=91,m=752,a=83,s=462}
|
||||
{x=498,m=2390,a=823,s=1728}
|
||||
{x=87,m=463,a=1934,s=290}
|
||||
{x=1089,m=340,a=767,s=325}
|
||||
{x=2231,m=618,a=188,s=2526}
|
||||
{x=949,m=778,a=796,s=3}
|
||||
{x=221,m=834,a=978,s=2262}
|
||||
{x=47,m=1045,a=770,s=2395}
|
||||
{x=1588,m=1497,a=2445,s=2042}
|
||||
{x=328,m=3727,a=965,s=101}
|
||||
{x=983,m=21,a=2960,s=1218}
|
||||
{x=1257,m=568,a=116,s=931}
|
||||
{x=115,m=935,a=672,s=8}
|
||||
{x=1232,m=683,a=524,s=1018}
|
||||
{x=2056,m=55,a=151,s=47}
|
||||
{x=2274,m=3,a=1274,s=1394}
|
||||
{x=820,m=257,a=2131,s=52}
|
||||
{x=77,m=786,a=1227,s=909}
|
||||
{x=1257,m=1794,a=1188,s=164}
|
||||
{x=41,m=148,a=2604,s=2708}
|
||||
{x=959,m=342,a=79,s=867}
|
||||
{x=469,m=1603,a=256,s=1002}
|
||||
{x=1327,m=237,a=1347,s=2324}
|
||||
{x=78,m=3089,a=421,s=3047}
|
||||
{x=906,m=198,a=1236,s=975}
|
||||
{x=1058,m=722,a=2347,s=1361}
|
||||
{x=915,m=1370,a=1440,s=1965}
|
||||
{x=5,m=314,a=394,s=108}
|
||||
{x=3398,m=1630,a=482,s=120}
|
||||
{x=1554,m=93,a=1116,s=2315}
|
||||
{x=1690,m=39,a=2643,s=1211}
|
||||
{x=939,m=2613,a=3295,s=186}
|
||||
{x=840,m=2014,a=3302,s=459}
|
||||
{x=43,m=232,a=964,s=87}
|
||||
{x=667,m=497,a=1160,s=495}
|
||||
{x=2706,m=2042,a=2244,s=483}
|
||||
{x=975,m=449,a=930,s=1339}
|
||||
{x=1151,m=1834,a=527,s=1691}
|
||||
{x=250,m=134,a=49,s=516}
|
||||
{x=1483,m=1059,a=218,s=1478}
|
||||
{x=226,m=66,a=61,s=558}
|
||||
{x=308,m=174,a=40,s=234}
|
||||
{x=405,m=133,a=112,s=788}
|
||||
{x=98,m=1228,a=566,s=141}
|
||||
{x=114,m=107,a=3002,s=156}
|
||||
{x=108,m=246,a=635,s=107}
|
||||
{x=999,m=2323,a=1085,s=742}
|
||||
{x=2503,m=652,a=431,s=349}
|
||||
{x=2282,m=189,a=980,s=109}
|
||||
{x=694,m=647,a=100,s=93}
|
||||
{x=2799,m=2992,a=2464,s=1168}
|
||||
{x=124,m=2107,a=3773,s=275}
|
||||
{x=1483,m=317,a=101,s=549}
|
||||
{x=1336,m=1202,a=391,s=1762}
|
||||
{x=432,m=1018,a=607,s=2628}
|
||||
{x=107,m=1890,a=1284,s=136}
|
||||
{x=1058,m=2632,a=715,s=573}
|
||||
{x=44,m=1094,a=1008,s=320}
|
||||
{x=895,m=505,a=72,s=82}
|
||||
{x=2687,m=1993,a=1872,s=1213}
|
||||
{x=2894,m=477,a=981,s=2140}
|
||||
{x=3112,m=998,a=161,s=790}
|
||||
{x=701,m=173,a=228,s=692}
|
||||
{x=181,m=1880,a=1149,s=2655}
|
||||
{x=1738,m=25,a=1689,s=664}
|
||||
{x=326,m=639,a=898,s=2477}
|
||||
{x=768,m=190,a=798,s=75}
|
||||
{x=1039,m=910,a=220,s=447}
|
||||
{x=3467,m=116,a=2314,s=1479}
|
||||
{x=1658,m=41,a=1785,s=2015}
|
||||
{x=954,m=975,a=1251,s=2291}
|
||||
{x=1800,m=1086,a=89,s=448}
|
||||
{x=3594,m=230,a=448,s=192}
|
||||
{x=451,m=1579,a=112,s=585}
|
||||
{x=2087,m=600,a=1780,s=3617}
|
||||
{x=1922,m=3067,a=2375,s=273}
|
||||
{x=3346,m=2213,a=1478,s=294}
|
||||
{x=285,m=22,a=2823,s=1645}
|
||||
{x=393,m=471,a=180,s=259}
|
||||
{x=1531,m=1343,a=962,s=766}
|
||||
{x=224,m=442,a=246,s=26}
|
||||
{x=104,m=2282,a=249,s=703}
|
||||
{x=235,m=3230,a=958,s=1576}
|
||||
{x=618,m=535,a=1359,s=116}
|
||||
{x=887,m=1569,a=697,s=634}
|
||||
{x=2988,m=56,a=165,s=1516}
|
||||
{x=431,m=485,a=3671,s=3}
|
||||
{x=320,m=835,a=1176,s=821}
|
||||
{x=303,m=1070,a=908,s=2023}
|
||||
{x=1821,m=805,a=32,s=826}
|
||||
{x=1026,m=208,a=495,s=31}
|
||||
{x=68,m=1034,a=776,s=1527}
|
||||
{x=2130,m=2428,a=295,s=2667}
|
||||
{x=2172,m=2671,a=1253,s=1171}
|
||||
{x=260,m=268,a=287,s=2112}
|
||||
{x=670,m=1720,a=2780,s=1252}
|
||||
{x=1342,m=1103,a=29,s=1807}
|
||||
{x=26,m=633,a=1111,s=1011}
|
||||
{x=286,m=281,a=1693,s=19}
|
||||
{x=334,m=339,a=1664,s=695}
|
||||
{x=264,m=73,a=671,s=494}
|
||||
{x=628,m=2637,a=193,s=11}
|
||||
{x=581,m=1288,a=13,s=1968}
|
||||
{x=2739,m=423,a=276,s=235}
|
||||
{x=58,m=853,a=2449,s=403}
|
||||
{x=1372,m=1674,a=530,s=348}
|
||||
{x=1203,m=612,a=2013,s=927}
|
||||
{x=2071,m=38,a=873,s=807}
|
||||
{x=3006,m=484,a=1048,s=1820}
|
||||
{x=2648,m=1457,a=119,s=1726}
|
||||
{x=1452,m=269,a=158,s=1565}
|
||||
{x=1251,m=2330,a=153,s=1006}
|
||||
{x=1092,m=2264,a=122,s=2840}
|
||||
{x=422,m=562,a=555,s=897}
|
||||
{x=280,m=937,a=1348,s=1518}
|
||||
{x=313,m=1531,a=1959,s=633}
|
||||
{x=1288,m=1598,a=880,s=2325}
|
||||
{x=1895,m=104,a=3321,s=501}
|
||||
{x=1924,m=4,a=452,s=2542}
|
||||
{x=2907,m=1684,a=358,s=212}
|
||||
{x=1620,m=593,a=795,s=1268}
|
||||
{x=1041,m=1848,a=643,s=894}
|
||||
{x=436,m=13,a=2,s=35}
|
||||
{x=2010,m=88,a=444,s=711}
|
||||
{x=161,m=412,a=99,s=262}
|
||||
{x=757,m=1129,a=914,s=3258}
|
||||
{x=2688,m=76,a=1494,s=1868}
|
||||
{x=96,m=976,a=1875,s=747}
|
||||
{x=1358,m=489,a=1478,s=472}
|
||||
{x=981,m=1761,a=828,s=36}
|
||||
{x=2085,m=1122,a=1635,s=80}
|
||||
{x=2,m=1466,a=73,s=366}
|
||||
{x=1798,m=748,a=251,s=33}
|
||||
{x=370,m=3060,a=452,s=69}
|
||||
{x=608,m=1287,a=583,s=484}
|
||||
{x=1077,m=1238,a=541,s=2277}
|
||||
{x=1465,m=726,a=235,s=416}
|
||||
{x=429,m=995,a=1610,s=1557}
|
||||
{x=152,m=2480,a=309,s=355}
|
||||
{x=1418,m=357,a=1360,s=18}
|
||||
{x=569,m=425,a=1511,s=385}
|
||||
{x=1116,m=2349,a=1539,s=2429}
|
||||
{x=185,m=1187,a=2544,s=357}
|
||||
{x=1134,m=231,a=209,s=650}
|
||||
{x=1007,m=88,a=195,s=1443}
|
||||
{x=38,m=179,a=1868,s=994}
|
||||
{x=264,m=616,a=397,s=922}
|
||||
{x=153,m=2015,a=3754,s=1093}
|
||||
{x=1284,m=201,a=324,s=1085}
|
||||
{x=21,m=2025,a=13,s=1510}
|
||||
{x=268,m=760,a=1173,s=1210}
|
||||
{x=1563,m=2290,a=260,s=2754}
|
||||
{x=65,m=3398,a=1110,s=320}
|
||||
{x=399,m=379,a=3098,s=1723}
|
||||
{x=1235,m=3170,a=554,s=393}
|
||||
{x=2272,m=16,a=772,s=977}
|
||||
{x=150,m=3141,a=3700,s=3335}
|
||||
{x=456,m=669,a=829,s=961}
|
||||
{x=74,m=2087,a=292,s=1245}
|
||||
{x=232,m=18,a=572,s=1622}
|
||||
{x=153,m=2306,a=1841,s=712}
|
||||
{x=935,m=43,a=822,s=128}
|
||||
{x=959,m=40,a=414,s=312}
|
||||
{x=788,m=1129,a=1275,s=1622}
|
||||
{x=1264,m=1939,a=68,s=9}
|
||||
{x=2201,m=1598,a=133,s=937}
|
||||
{x=479,m=890,a=2502,s=667}
|
||||
{x=318,m=893,a=405,s=17}
|
||||
{x=1066,m=644,a=519,s=67}
|
||||
{x=399,m=1118,a=1010,s=394}
|
||||
{x=236,m=219,a=41,s=90}
|
||||
{x=789,m=1619,a=202,s=1014}
|
17
2023/day19_aplenty/tests/sample_input
Normal file
17
2023/day19_aplenty/tests/sample_input
Normal file
|
@ -0,0 +1,17 @@
|
|||
px{a<2006:qkq,m>2090:A,rfg}
|
||||
pv{a>1716:R,A}
|
||||
lnx{m>1548:A,A}
|
||||
rfg{s<537:gd,x>2440:R,A}
|
||||
qs{s>3448:A,lnx}
|
||||
qkq{x<1416:A,crn}
|
||||
crn{x>2662:A,R}
|
||||
in{s<1351:px,qqz}
|
||||
qqz{s>2770:qs,m<1801:hdj,R}
|
||||
gd{a>3333:R,R}
|
||||
hdj{m>838:A,pv}
|
||||
|
||||
{x=787,m=2655,a=1222,s=2876}
|
||||
{x=1679,m=44,a=2067,s=496}
|
||||
{x=2036,m=264,a=79,s=2244}
|
||||
{x=2461,m=1339,a=466,s=291}
|
||||
{x=2127,m=1623,a=2188,s=1013}
|
Loading…
Add table
Add a link
Reference in a new issue