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()
{
  vector<int> poker;
  int check[15] = {0};
  int two = 0;
  int three = 0;
  int four = 0;
  int ans = 0;

  string trump;
  getline(cin,trump);

  int a = 0;
  int b = 0;
  for(char e : trump){
    if(e == 49){
      if(b == 0){
        b = 1;
      }
      else{
        a = (e - 48) + 10;
        poker.push_back(a);
        b = 0;
      }
    }
    else if(48 <= e && 57 >= e){
      if(b == 1){
        a = (e - 48) + 10;
        b = 0;
      }
      else{
        a = e - 48;
      }
      poker.push_back(a);
    }
    else{
      if(b == 1){
        poker.push_back(b);
        b = 0;
      }
    }
  }
  
  if(b == 1){
    poker.push_back(b);
  }

  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] == check[i+2] && check[i] == check[i+3] && check[i] == check[i+4] && check[i] != 0){
        cout<<"straight"<<endl;
        ans = 1;
        break;
      }
    }
  }

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

  return 0;
}

C++: #include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int yaku(int*);
void input(string,int*);
int cmp(const void *a, const void *b);
int main() {
	int a[5],ans;
	string in;
	while (cin >> in) {
		input(in, a);
		ans = yaku(a);
		if (ans == 7) {
			cout << "four card\n";
			continue;
		}
		if (ans == 6) {
			cout << "full house\n";
			continue;
		}
		if (ans == 5) {
			cout << "straight\n";
			continue;

		}
		if (ans == 4) {
			cout << "three card\n";
			continue;
		}
		if (ans == 3) {
			cout << "two pair\n";
			continue;
		}
		if (ans == 2) {
			cout << "one pair\n";
			continue;
		}
		cout << "null\n";
	}
}

void input(string in,int *a) {
	int n = 0, m = 0;
	for (int i = 0; i < in.size(); i++) {
		if (in[i] == ',') {
			a[m++] = n;
			n = 0;
			continue;
		}
		n = n * 10 + in[i] - '0';
	}
	a[4] = n;
	qsort(a, 5, sizeof(int), cmp);
	return;
}

int cmp(const void *a, const void *b) {
	return *(int*)a - *(int*)b;
}

int yaku(int *a) {
	bool x = true, y = false;
	for (int i = 1; i < 5; i++) {
		if (a[i - 1] + 1 != a[i]) {
			if (i == 1) {
				if (a[0] == 1) {
					if (a[1] == 10) {
						if (a[2] == 11) {
							if (a[3] == 12) {
								if (a[4] == 13)
									return 5;
							}
						}
					}
				}
			}
			x = false;
			break;
		}
	}
	if (x)
		return 5;
	int n[13] = {}, two = 0, three = 0;
	for (int i = 0; i < 5; i++) {
		if (++n[a[i] - 1] == 4)
			return 7;
		if (n[a[i] - 1] == 3) {
			two--;
			three++;
		}
		if (n[a[i] - 1] == 2)
			two++;
	}
	if (three == 1) {
		if (two == 1)
			return 6;
		return 4;
	}
	if (two == 2)
		return 3;
	if (two == 1)
		return 2;
	return 1;
}

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] && 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;
}