Go: package main

import (
	"bufio"
	"os"
	"strings"
	"strconv"
	"sort"
	"fmt"
)

var scanner = bufio.NewScanner(os.Stdin)

func main() {
	for scanner.Scan() {
		input := strings.Split(scanner.Text(), ",")
		cards := make([]int, 5)
		for i :=range input {
			cards[i], _ = strconv.Atoi(input[i])
		}
		sort.Sort(sort.IntSlice(cards))
		if cards[0] == cards[1] && cards[2] == cards[3] && cards[2] == cards[1] {
			fmt.Println("four card")
		} else if cards[1] == cards[2] && cards[3] == cards[4] && cards[3] == cards[2]{
			fmt.Println("four card")
		} else if cards[0] == cards[1] && cards[1] == cards[2] && cards[3] == cards[4] {
			fmt.Println("full house")
		} else if cards[0] == cards[1] && cards[2] == cards[3] && cards[3] == cards[4] {
			fmt.Println("full house")
		} else if cards[0] == 1 && cards[1] == 10 && cards[2] == 11 && cards[3] == 12 && cards[4] == 13 {
			fmt.Println("straight")
		} else if cards[0]+1 == cards[1] && cards[1]+1 == cards[2] && cards[2]+1 == cards[3] && cards[3]+1 == cards[4] {
			fmt.Println("straight")
		} else if (cards[0] == cards[1] && cards[1] == cards[2]) || (cards[1] == cards[2] && cards[2] == cards[3]) || (cards[2] == cards[3] && cards[3] == cards[4]) {
			fmt.Println("three card")
		} else if ((cards[0] == cards[1]) && ((cards[2] == cards[3]) || (cards[3] == cards[4]))) || ((cards[1] == cards[2]) && (cards[3] == cards[4])) {
			fmt.Println("two pair")
		} else if cards[0] == cards[1] || cards[1] == cards[2] || cards[2] == cards[3] || cards[3] == cards[4] {
			fmt.Println("one pair")
		} else {
			fmt.Println("null")
		}
	}
}

C++: #include<bits/stdc++.h>
using namespace std;
int main(){
	int a[6] = {};
	while(scanf("%d",&a[0])!=EOF){
		for(int i=1;i<5;i++)scanf(",%d", &a[i]);
			int cnt=0,flag=true,card[13]={},max = 4;
		sort(a,a+5);
		for (int i=0;i<4;i++)for(int j=i+1;j<5;j++)
			if (a[i]==a[j])cnt++;
		int i=0;
		if(a[i]==1&&a[i+1]==10){
			i=1;
			max=5;
			a[5]=14;
		}
		for(;i<max;i++)if(a[i]+1!=a[i+1])flag=0;
if (cnt == 6)printf("four card\n");
else if (cnt == 4)printf("full house\n");
else if (flag)printf("straight\n");
else if (cnt == 3)printf("three card\n");
else if (cnt == 2)printf("two pir\n");
else if (cnt == 1)printf("one pair\n");
else printf("null\n");
}
}

C++: #include<bits/stdc++.h>

using namespace std;

int main()
{
  vector<int> poker;
  int check[15] = {0};
  int two,three,four = 0;
  int ans = 0;

  for(int i = 0;i < 5;++i){
    int trump;
    cin>>trump;

    poker.push_back(trump);
  }
  sort(poker.begin(),poker.end());

  for(int e : poker){
    ++check[e];
  }
  check[14] = check[1];

  for(int i = 1;i < 14;++i){
    if(check[i] == 4){
      ++four;
    }
    else if(check[i] == 3){
      ++three;
    }
    else if(check[i] == 2){
      ++two;
    }
  }

  if(four == 1){
    cout<<"four card"<<endl;
    ans = 1;
  }
  else if(three == 1){
    ans = 1;
    if(two == 1){
      cout<<"full house"<<endl;
    }
    else{
      cout<<"three card"<<endl;
    }
  }
  else if(two == 2){
    ans = 1;
    cout<<"two pair"<<endl;
  }
  else if(two == 1){
    ans = 1;
    cout<<"one pair"<<endl;
  }
  else{
    for(int i = 1;i < 11;++i){
      if(check[i] == check[i+1] == check[i+2] == check[i+3] == check[i+4]){
        cout<<"straight"<<endl;
        ans = 1;
        break;
      }
    }
  }

  if(ans == 0){
    cout<<"null"<<endl;
  }

  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define FOR(i, s, n) for(int i = s; i < (int)n; i++)
#define per(i, n) for(int i = n; i >= 0; i--)
#define ROF(i, s, n) for(int i = s; i >= (int)n; i--)
#define FORIT(i, A) for (auto i : A)
#define PRINT(x) cout << (x) << "\n"
#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define MP make_pair
#define EACH(i, n) for (__typeof((n).begin()) i = (n).begin(); i != (n).end(); ++i)
#define SZ(a) int((a).size())
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())
#define CLR(a) memset((a), 0 ,sizeof(a))
#define NCLR(a) memset((a), -1 ,sizeof(a))
#define dump(x) cout << #x << " = " << (x) << "\n";
#define debug(x) cout << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << "\n";
#define sq(n) (n) * (n)
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;
typedef vector<LL> VLL;
typedef vector<VLL> VVLL;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef priority_queue<int> maxpq;
typedef priority_queue< int, vector<int>, greater<int> > minpq;
static const double EPS = 1e-10;
static const double PI = acos( -1.0 );
static const int mod = 1000000007;
static const int INF = 1 << 25;
static const LL LL_INF = 1152921504606846976;
static const int dx[] = { -1, 0, 1, 0, 1, -1, 1, -1 };
static const int dy[] = { 0, -1, 0, 1, 1, 1, -1, -1 };


string _str[ 7 ] = { "null", "one pair", "two pair", "three card", "straight", "full house", "four card" };
int ans = 0;
int _hand[ 5 ];

int main() {
	while ( ~scanf( "%d,%d,%d,%d,%d", &_hand[ 0 ], &_hand[ 1 ], &_hand[ 2 ], &_hand[ 3 ], &_hand[ 4 ] ) ) {
		ans = 0;
		sort( _hand, _hand + 5 );
		bool is_straight = true;
		for ( int i = 0; i < 4; i++ ) {
			if ( _hand[ i + 1 ] - _hand[ i ] != 1 ) {
				is_straight = false;
				break;
			}
		}
		if ( is_straight ) {
			ans = 4;
		}
		for ( int i = 0; i < 5; i++ ) {
			if ( _hand[ i ] == 1 ) {
				_hand[ i ] += 13;
			}
		}
		sort( _hand, _hand + 5 );
		is_straight = true;
		for ( int i = 0; i < 4; i++ ) {
			if ( _hand[ i + 1 ] - _hand[ i ] != 1 ) {
				is_straight = false;
				break;
			}
		}
		if ( is_straight ) {
			ans = 4;
		}

		bool is_three_card = false;
		bool is_one_pair = false;
		for ( int i = 1; i <= 20; i++ ) {
			int many = upper_bound( _hand, _hand + 5, i ) - lower_bound( _hand, _hand + 5, i );
			if ( many == 4 ) {
				ans = 6;
				break;
			}
			if ( many == 3 ) {
				is_three_card = true;
				ans = 3;
				if ( is_one_pair ) {
					ans = 5;
					break;
				}
			}
			if ( many == 2 ) {
				if ( is_one_pair ) {
					ans = 2;
					break;
				}
				if ( is_three_card ) {
					ans = 5;
					break;
				}
				is_one_pair = true;
				ans = 1;
			}
		}
		printf( "%s\n", _str[ ans ].c_str() );
	}
	return 0;
}

C++: #include<iostream>
using namespace std;
int main(){
  int c[5];
  char cm;
  while(cin>>c[0]>>cm>>c[1]>>cm>>c[2]>>cm>>c[3]>>cm>>c[4]){
    int card[14];
    for(int i=0;i<14;i++)
      card[i] = 0;
    bool fourcard = false;
    bool threecard = false;
    bool twopair = false;
    bool onepair = false;
    bool fullhouse = false;
    for(int i=0;i<5;i++){
      card[c[i]]++;
      switch(card[c[i]]){
      case 2:
	if(threecard)
	  fullhouse = true;
	else if(onepair)
	  twopair = true;
	else
	  onepair = true;
	break;
      case 3:
	if(twopair)
	  fullhouse = true;
	else
	  threecard = true;
	break;
      case 4:
	fourcard = true;
	break;
      default:
	break;
      }
    }
    if(fullhouse){
      cout<<"full house"<<endl;
      continue;
    }
    if(fourcard){
      cout<<"four card"<<endl;
      continue;
    }
    if(threecard){
      cout<<"three card"<<endl;
      continue;
    }
    if(twopair){
      cout<<"two pair"<<endl;
      continue;
    }
    if(onepair){
      cout<<"one pair"<<endl;
      continue;
    }
    bool straight = false;
    for(int i=1;i<10;i++)
      if(card[i]&&card[i+1]&&card[i+2]&&card[i+3]&&card[i+4])
	straight = true;
    if(card[10]&&card[11]&&card[12]&&card[13]&&card[1])
      straight = true;
    if(straight)
      cout<<"straight"<<endl;
    else
      cout<<"null"<<endl;
  }
  return 0;
}