0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

poker.c

Last updated at Posted at 2013-05-11
C
# include <stdio.h>
# include <stdlib.h>
# include <string.h>

struct s_hands
{
	int suit;
	int num;
	int cnt;
};

struct s_num
{
	char n[16][4];
};

struct s_hands check_st_cnt(const char * input, const struct s_num c_num )
{
	int i = 0;
	int cnt = 0;
	struct s_hands hd = {0};
	for( i = 0; strcmp(c_num.n[i],"\0") != 0; i++ )
	{
		cnt++;
		if( strstr( input, c_num.n[i] ) == NULL )
			cnt = 0;
		if( hd.cnt < cnt )
		{
			hd.cnt = cnt;
			hd.num = i;
		}
	}
	return hd;
}

struct s_hands check_fl_cnt(const char * input, const char c_suit[][3])
{
	int i = 0;
	int j = 0;
	int cnt = 0;
	struct s_hands hd = {0};
	for( i = 0; strcmp(c_suit[i], "\0") != 0; i++ )
	{
		cnt = 0;
		for( j = 0; j < strlen(input); j++ )
       		if( input[j] == c_suit[i][0] ) cnt++;
		if( hd.cnt < cnt )
		{
			hd.suit = i;
			hd.cnt = cnt;
		}
	}
	return hd;	
}

void test (const char * input, const char * ans)
{
	enum e_hands { ST, FL, SF };
	const char c_suit[][3] = {"a","s","h","d","c","\0"};
	const struct s_num c_num = { {"0","A","2","3","4","5","6","7","8","9","10","J","Q","K","A","\0"} };
	struct s_num num = {0};
	char str[4] = "-";
	int i = 0;
	struct s_hands hd[3] = {0};

	hd[ST] = check_st_cnt(input, c_num );
	hd[FL] = check_fl_cnt(input, c_suit);
	num = c_num;
	for( i = 0; strcmp(c_num.n[i],"\0") != 0; i++ )
		strcat(num.n[i], c_suit[hd[FL].suit]);
	hd[SF] = check_st_cnt(input, num );

	//printf("num=%d, suit=%d, cnt=%d\n", hd[0].num, hd[0].suit, hd[0].cnt);
	//printf("num=%d, suit=%d, cnt=%d\n", hd[1].num, hd[1].suit, hd[1].cnt);
	//printf("num=%d, suit=%d, cnt=%d\n", hd[2].num, hd[2].suit, hd[2].cnt);

	strcpy(str, (hd[SF].cnt == 5 && hd[SF].num == 14) ? "RF"
		   : (hd[SF].cnt == 5) ? "SF"
		   : (hd[FL].cnt == 5) ? "FL"
		   : (hd[ST].cnt == 5) ? "ST"
		   : (hd[SF].cnt == 4) ? "4SF"
		   : (hd[FL].cnt == 4) ? "4F"
		   : (hd[ST].cnt == 4) ? "4S"
		   : "-" );
	printf("%s:%s\n", (strcmp(ans,str) == 0) ? "ooooo GOOD ooooo": "xxxxx BAD xxxxx", str);
}

int main (void)
{
/*0*/ test( "Qs9s3dJd10h", "4S" );
/*1*/ test( "KdAdJd10dQd", "RF" );
/*2*/ test( "QhJhKhAh10h", "RF" );
/*3*/ test( "10dAdJsQdKd", "ST" );
/*4*/ test( "Kd10dAdJd3d", "FL" );
/*5*/ test( "4d3d2dAd5d", "SF" );
/*6*/ test( "5d5d2d3dAd", "FL" );
/*7*/ test( "4d2sAd5d3d", "ST" );
/*8*/ test( "As10dJdQdKd", "ST" );
/*9*/ test( "10d10dQdAsJd", "4F" );
/*10*/ test( "AcJd10dQdKd", "ST" );
/*11*/ test( "Kd2sJdAdQd", "4SF" );
/*12*/ test( "JdAdQcKd2s", "4S" );
/*13*/ test( "KdAdKdJd2s", "4F" );
/*14*/ test( "As2dKdQdJd", "4F" );
/*15*/ test( "AsKdQd2dJh", "4S" );
/*16*/ test( "QhAd2s3dKd", "-" );
/*17*/ test( "Ad4dKh3s2d", "4S" );
/*18*/ test( "3d2dAh5d4s", "ST" );
/*19*/ test( "QcKdAs2dJd", "4S" );
/*20*/ test( "2dQcJdAs10d", "-" );
/*21*/ test( "4d7d5s3c2d", "4S" );
/*22*/ test( "7d5s4dAd3c", "-" );
/*23*/ test( "3s8s10sQs6s", "FL" );
/*24*/ test( "6hAh3h2h8h", "FL" );
/*25*/ test( "3h4hJh9hQh", "FL" );
/*26*/ test( "3s6s5s2sQs", "FL" );
/*27*/ test( "9d3cKdQc2c", "-" );
/*28*/ test( "5sKs7hQcKh", "-" );
/*29*/ test( "Ad6d7h7c9h", "-" );
/*30*/ test( "10h4cAh6s10c", "-" );
/*31*/ test( "9sKsJcQs10d", "ST" );
/*32*/ test( "5d3c2cAs4c", "ST" );
/*33*/ test( "KcQs9c10sJs", "ST" );
/*34*/ test( "9d8s10hJdQd", "ST" );
/*35*/ test( "6c5s10h7d4c", "4S" );
/*36*/ test( "QhJcKsAh8c", "4S" );
/*37*/ test( "JsQc3h10cKs", "4S" );
/*38*/ test( "10c9h7hAd8d", "4S" );
/*39*/ test( "3d4dKd8d5c", "4F" );
/*40*/ test( "10h3hQh9h2s", "4F" );
/*41*/ test( "Qh5h7h9h6c", "4F" );
/*42*/ test( "6s8s7s3sKc", "4F" );
/*43*/ test( "10h8h9hJhQh", "SF" );
/*44*/ test( "10h9hQhKhJh", "SF" );
/*45*/ test( "6d4d7d5d3d", "SF" );
/*46*/ test( "6h9h7h5h8h", "SF" );
/*47*/ test( "Ac6s4s3s5s", "4SF" );
/*48*/ test( "3c9d2c5c4c", "4SF" );
/*49*/ test( "Kh2sQh10hJh", "4SF" );
/*50*/ test( "4h5h2h3h4s", "4SF" );
/*51*/ test( "Js10sAsQsKs", "RF" );
/*52*/ test( "10dKdQdAdJd", "RF" );
	return 0;
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?