Finish implimenting PartialOrd for PokerHand

This commit is contained in:
2024-03-23 13:50:38 -04:00
parent f707254b28
commit 55fbeb43a0

View File

@@ -89,12 +89,55 @@ impl PartialOrd for PokerHand {
self.cards.partial_cmp(&other.cards)
}
HandType::ThreeOfAKind => todo!(),
HandType::Straight => todo!(),
HandType::Flush => todo!(),
HandType::FullHouse => todo!(),
HandType::FourOfAKind => todo!(),
HandType::StraightFlush => todo!(),
HandType::ThreeOfAKind => {
let selfpairs: Vec<(&CardValue, &u8)> =
selfmap.iter().filter(|&p| *p.1 == 3).collect();
let otherpairs: Vec<(&CardValue, &u8)> =
othermap.iter().filter(|&p| *p.1 == 3).collect();
let pairvalue = selfpairs[0].0;
let otherpairvalue = otherpairs[0].0;
if pairvalue != otherpairvalue {
return pairvalue.partial_cmp(otherpairvalue);
}
self.cards.partial_cmp(&other.cards)
}
HandType::Straight => self.cards.partial_cmp(&other.cards),
HandType::Flush => self.cards.partial_cmp(&other.cards),
HandType::FullHouse => {
let threes: Vec<(&CardValue, &u8)> =
selfmap.iter().filter(|&p| *p.1 == 3).collect();
let otherthrees: Vec<(&CardValue, &u8)> =
othermap.iter().filter(|&p| *p.1 == 3).collect();
if threes[0].0 != otherthrees[0].0 {
return threes[0].0.partial_cmp(otherthrees[0].0);
}
let twos: Vec<(&CardValue, &u8)> = selfmap.iter().filter(|&p| *p.1 == 2).collect();
let othertwos: Vec<(&CardValue, &u8)> =
othermap.iter().filter(|&p| *p.1 == 2).collect();
if twos[0].0 != othertwos[0].0 {
return twos[0].0.partial_cmp(othertwos[0].0);
}
self.cards.partial_cmp(&other.cards)
}
HandType::FourOfAKind => {
let fours: Vec<(&CardValue, &u8)> = selfmap.iter().filter(|&p| *p.1 == 4).collect();
let otherfours: Vec<(&CardValue, &u8)> =
othermap.iter().filter(|&p| *p.1 == 4).collect();
if fours[0].0 != otherfours[0].0 {
return fours[0].0.partial_cmp(otherfours[0].0);
}
self.cards.partial_cmp(&other.cards)
}
HandType::StraightFlush => self.cards.partial_cmp(&other.cards),
}
}
}