std::vector<Quintet> NewPartnerLeptonic::Quintets(boca::Event const& event, std::function<Quintet(Quintet&)> const& function)
{
    return Pairs(top_reader_.Multiplets(event), boson_reader_.Multiplets(event), [&](Triplet const & triplet, Doublet const & doublet) {
        Quintet quintet(triplet, doublet);
        if (quintet.Overlap()) throw Overlap();
        return function(quintet);
    });
}
Beispiel #2
0
// Scoring system: calculates points for a given hand's value
int CalculatePoints(struct card hand[HAND_SIZE]) {

	InsertionSort(hand);
	
	if (Repeats(hand))									// Check hand for cards with repeated ranks
	{
		if (Triple(hand))								// Check if it contains 3 of a kind
		{
			if (Pairs(hand) == 1) { return 6; }			// FULL HOUSE
			else { return 3; }							// 3 OF A KIND
		}

		else 
		{
			int pairs = Pairs(hand);					// Check for pairs
			if (pairs == 1) { return 1; }				// ONE PAIR
			else if (pairs == 2) { return 2; }			// TWO PAIRS
			else if (pairs == 4) { return 7; }			// 4 OF A KIND
		}
	}

	else												// Hands without repeated ranks
	{
		if (SameSuit(hand))								// Check if all cards have the same suit
		{
			if (IsSequence(hand))						// Check if hand is a straight
			{
				if (IsRoyal(hand[0])) { return 9; }		// ROYAL FLUSH
				else { return 8; }						// STRAIGHT FLUSH
			}
			else { return 5; }							// FLUSH
		}
		else 
		{
			if (IsSequence(hand)) { return 4; }			// STRAIGHT
			else { return 0; }							// HIGH CARD
		}
	} 

	return 0;
}
Beispiel #3
0
int main(int argc, char const *argv[])
{
	/* code */
	int n, k;
	scanf("%d %d", &n, &k);

	int * number_array = (int *) malloc (n * sizeof(int));
	for (int i = 0; i < n; i++) {
		scanf("%d", &number_array[i]);
	}

	printf("%d\n", Pairs(number_array, n, k));

	return 0;
}