Aryadev Chavali
83ab81a569
modes:pair:tests: ordering implemented
2026-04-05 04:45:51 +01:00
Aryadev Chavali
555b82d671
modes:pair:tests: refactor exhaustive_deck
2026-04-05 04:45:51 +01:00
Aryadev Chavali
8a2cbf1bc9
modes:pair:ord: Remove useless case
2026-04-05 04:45:51 +01:00
Aryadev Chavali
e035f53234
modes:pair: refactor tests to utilise Rank::iter_all and Rank::cards
2026-04-05 04:45:51 +01:00
Aryadev Chavali
6119410496
card: new -> make_joker and make_playing-card
...
Always better to be explicit with our constructor names.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
f40596bc1d
modes:pair:tests: implement test::new
2026-04-05 04:45:51 +01:00
Aryadev Chavali
cb2c220a5b
modes:pair:tests:exhaustive_pairs: refactor for accuracy
2026-04-05 04:45:51 +01:00
Aryadev Chavali
e9c37d49e3
modes:pair:ord: make improper pairs worse than proper pairs
...
If the highcard of two pairs are equivalent, but one is improper while
the other is proper, the proper pair is always greater.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
27f9f79416
modes:mod:Hand: is_proper and is_improper indicator functions
...
A "proper" hand is one that has no wild cards - an "improper" hand is
one that does have at least one wild card.
~is_proper~ should be implemented for any Hand - ~is_improper~ falls
out for free.
Implemented for Single and Pair.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
534da2ed71
modes:pair: test skeletons for pairs.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
6a86f7d62b
modes:single|pair: Use square brackets instead of braces for display
...
Helps distinguish from the Debug print.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
30a7c466e5
modes:pair: Implement Hand for Pair
...
The footstool condition here is super simple since we just utilise the
Single footstool condition against Pair::1 of both pairs.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
0328a828c8
modes:pair: document that Pair::1 is always a playing card in Pair::new
2026-04-05 04:45:51 +01:00
Aryadev Chavali
0267a6f567
modes:pair: adjust Ord impl for Pair
...
Instead of doing a deep-check where we compare their best member
before their worst member, we just compare by the best member.
This allows (Joker, 4S) to be equal to (4C, 4S).
2026-04-05 04:45:51 +01:00
Aryadev Chavali
a24d85572d
modes:single|pair: make fields of Single and Pair public
...
So strange that this isn't default for tuple-like constructors. I can
kinda get it for record-like constructors, but not for this. Better
safe than sorry I guess?
2026-04-05 04:45:51 +01:00
Aryadev Chavali
5ef0b7e58a
modes:pair: implement Eq and Ord for Pair
...
If we auto-derived Ord it would look at Pair::0 first, when it should
look at Pair::1. Hence the custom implementation.
2026-04-05 04:45:51 +01:00
Aryadev Chavali
599fb44edb
modes:pair: implement Display for Pair
2026-04-05 04:45:51 +01:00
Aryadev Chavali
439b787040
modes:pair: add doc string for Pair::new
2026-04-05 04:45:51 +01:00
Aryadev Chavali
e1db8af26c
modes:pair: Added pair type
...
Slightly more complex pattern since we've got two cards, but still
relatively trivial.
2026-04-05 04:45:51 +01:00