Commit Graph

19 Commits

Author SHA1 Message Date
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