package com.bassoli.poker; public class SortHand { public static void sort(Card[] cards) { for (int i = 0 ; i < cards.length ; i++) { for (int j = 0 ; j < cards.length ; j++) { if (cards[i].isGreaterThan(cards[j])) { Card temp = cards[i]; cards[i] = cards[j]; cards[j] = temp; } } } } public static void sort_aceProvision(Card[] cards) { for (int i = 0 ; i < cards.length ; i++) { for (int j = 0 ; j < cards.length ; j++) { if (cards[i].isGreaterThan_aceProvision(cards[j])) { Card temp = cards[i]; cards[i] = cards[j]; cards[j] = temp; } } } } public static Card[] removeFirstPair(Card[] cards) { boolean pairFound = false; SortHand.sort(cards); int i = 0; for ( ; i < cards.length ; i++) { if ((i < cards.length - 1)&&(cards[i].isSameValue(cards[i+1]))) { pairFound = true; break; } } Card[] newCards = new Card[cards.length - 2]; int counter = 0; if (pairFound) { for (int j = 0 ; j < cards.length ; j++) { if ((j == i)||(j == i + 1)) continue; newCards[counter++] = cards[j]; } return newCards; } else { return cards; } } public static Card[] removeFirstTrip(Card[] cards) { boolean tripFound = false; SortHand.sort(cards); int i = 0; for ( ; i < cards.length ; i++) { if ((i < cards.length - 2)&&(cards[i].isSameValue(cards[i+1]))&&(cards[i].isSameValue(cards[i+2]))) { tripFound = true; break; } } Card[] newCards = new Card[cards.length - 3]; int counter = 0; if (tripFound) { for (int j = 0 ; j < cards.length ; j++) { if ((j == i)||(j == i + 1)||(j == i + 2)) continue; newCards[counter++] = cards[j]; } return newCards; } else { return cards; } } public static Card[] removeFirstQuad(Card[] cards) { boolean tripFound = false; SortHand.sort(cards); int i = 0; for ( ; i < cards.length ; i++) { if ((i < cards.length - 3)&&(cards[i].isSameValue(cards[i+1]))&&(cards[i].isSameValue(cards[i+2]))&&(cards[i].isSameValue(cards[i+3]))) { tripFound = true; break; } } Card[] newCards = new Card[cards.length - 4]; int counter = 0; if (tripFound) { for (int j = 0 ; j < cards.length ; j++) { if ((j == i)||(j == i + 1)||(j == i + 2)||(j == i + 3)) continue; newCards[counter++] = cards[j]; } return newCards; } else { return cards; } } public static Card[] removeDuplicates(Card[] cards) { SortHand.sort(cards); boolean[] marks = new boolean[cards.length]; int count = 0; int prev = 0; for (int i = 0 ; i < cards.length ; i++) { marks[i] = false; if (i == 0) { prev = cards[i].getValueInt(); continue; } else { prev = cards[i-1].getValueInt(); } if (prev == cards[i].getValueInt()) { marks[i] = true; count++; } } if (count > 0) { int counter = 0; Card[] newCards = new Card[cards.length - count]; for (int i = 0 ; i < marks.length ; i++) { if (marks[i]) { continue; } else { newCards[counter++] = cards[i]; } } return newCards; } else { return cards; } } public static void main(String[] args) { Card[] cards = new Card[7]; cards[0] = new Card("H2"); cards[1] = new Card("C5"); cards[2] = new Card("D2"); cards[3] = new Card("C6"); cards[4] = new Card("C7"); cards[5] = new Card("C2"); cards[6] = new Card("H7"); cards = SortHand.removeDuplicates(cards); for (int i = 0 ; i < cards.length ; i++) { System.out.println(cards[i]); } //Hand.view(cards); } }