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 <stdio.h>
#include <iostream>
 
using namespace std;
 
int main() {
 
    int a[5];
    int kari;
    char d;
     
    while (cin >> a[0] >> d >> a[1] >> d >> a[2] >> d >> a[3] >> d >> a[4]) {
        for (int i = 4; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (a[j] > a[j+1]) {
                    kari = a[j];
                    a[j] = a[j+1];
                    a[j+1] = kari;
                }
            }
        }
        if (a[0] == a[1] || a[1] == a[2] || a[2] == a[3] || a[3] == a[4]) {
            if ((a[0] == a[1] && a[1] == a[2]) || (a[1] == a[2] && a[2] == a[3]) || (a[2] == a[3] && a[3] == a[4])) {
                if (((a[0] == a[1] && a[1] == a[2]) && (a[3] == a[4])) || ((a[0] == a[1]) && (a[2] == a[3] && a[3] == a[4]))) {
                    cout << "full house" << endl;
                } else if ((a[0] == a[1] && a[1] == a[2] && [2]==a[3]) || (a[1] == a[2] && a[2] == a[3] && a[3] == a[4])){
                    cout << "four card" << endl;
                }else {
                    cout << "three card" << endl;
                }
            } else if ((a[0] == a[1] && a[2] == a[3]) || (a[0] == a[1] && a[3] == a[4]) || (a[1] == a[2] && a[3] == a[4])) {
                if ((a[0] == a[1] && a[1] == a[2] && a[2] == a[3]) || (a[1] == a[2] && a[2] == a[3] && a[3] == a[4])) {
                    cout << "four card" << endl;
                } else {
                    cout << "two pair" << endl;
                }
            } else {
                cout << "one pair" << endl;
            }
        } else if ((a[1] == a[0] + 1 && a[2] == a[1] + 1 && a[3] == a[2] + 1 && a[4] == a[3] + 1) || (a[0]  == 1 && a[1] == 10 && a[2] == a[1] + 1 && a[3] == a[2] + 1 && a[4] == a[3] + 1)){
            cout << "straight" << endl;
        } else {
            cout << "null" << endl;
        }
    }
    return 0;
}

C++: #include <iostream>
using namespace std;

int main(){
  int a,b,c,d,e,k[14],max,max2,str,straight;
  char s;
  while(cin>>a>>s>>b>>s>>c>>s>>d>>s>>e){
    for(int i=1;i<=13;i++)k[i]=0;
    k[a]++;
    k[b]++;
    k[c]++;
    k[d]++;
    k[e]++;
    max=0;
    max2=0;
    str=0;
    straight=0;
    for(int i=1;i<=13;i++){
      if(max<=k[i]){//??°???
	max2=max;
	max=k[i];
      }else if(max2<=k[i])max2=k[i];

      if(k[i]==1){
	str++;
	if(str==5)straight=1;
      }else str=0;
      
    }
    
    if(max==4&&max2==1)cout<<"four card"<<endl;
    else if(max==3&&max2==2)cout<<"full house"<<endl;
    else if(straight==1)cout<<"straight"<<endl;
    else if(k[10]==1&&k[11]==1&&k[12]==1&&k[13]==1&&k[1]==1)cout<<"straght"<<endl;
    else if(max==3&&max2==1)cout<<"three card"<<endl;
    else if(max==2&&max2==2)cout<<"two pair"<<endl;
    else if(max==2&&max2==1)cout<<"one pair"<<endl;
    else cout<<"null"<<endl;
    
							

  }
  return 0;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    char c1, c2, c3, c4;
    int card[5] = {};
    
    while (cin >> card[0] >> c1 >> card[1] >> c2 >> card[2] >> c3 >> card[3] >> c4 >> card[4]) {
        sort(card, card + 5);

        if (card[0] == card[3] || card[1] == card[4]) {
            cout << "four card" << endl;
        }
        else if ((card[0] == card[2] && card[3] == card[4]) || (card[0] == card[1] && card[2] == card[4])) {
            cout << "full house" << endl;
        }
        else if (card[0] + 1 == card[1] && card[1] + 1 == card[2] && card[2] + 1 == card[3] && card[3] + 1 == card[4]) {
            cout << "straight" << endl;
        }
        else if (card[0] == 1 && card[1] == 10 && card[2] == 11 && card[3] == 12 && card[4] == 13) {
            cout << "straight" << endl;
        }
        else if (card[0] == card[2] || card[1] == card[3] || card[2] == card[4]) {
            cout << "three card" << endl;
        }
        else if ((card[0] == card[1] && (card[2] == card[3] || card[3] == card[4])) || (card[1] == card[2] && card[3] == card[4])) {
            cout << "two pair" << endl;
        }
        else if (card[0] == card[1] || card[1] == card[2] || card[2] == card[3] || card[3] == card[4]) {
            cout << "one pair" << endl;
        }
        else {
            cout << "null" << endl;
        }
    }
    return 0;
}

C++: #define _USE_MATH_DEFINES
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdio>
#include<deque>
#include<list>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<map>
#include<queue>
#include<vector>
using namespace std;

string b(int a[]) {
	int cnt[14+4] = {};
	for (int i = 0; i < 5; i++)
		cnt[a[i]]++;

	string r = "null";
	int c[6] = {};
	for (int i = 1; i <= 13; i++) {
		c[cnt[i]]++;
		if (cnt[i] && cnt[i + 1] && cnt[i + 2] && cnt[i + 3] && cnt[i + 4])
			r = "straight";
	}
	if (cnt[10] && cnt[11] && cnt[12] && cnt[13] && cnt[1])
		r = "straight";

	if (c[4])r = "four card";
	else if (c[3] && c[2])r = "full house";
	else if (c[3])r = "three card";
	else if (c[2] == 2)r = "two pair";
	else if (c[2])r = "one pair";

	return r;
}

int main() {
	int a[5];
	char c;
	while (cin >> a[0] >> c >> a[1] >> c >> a[2] >> c >> a[3] >> c >> a[4])
		cout << b(a) << endl;

	return 0;
}