import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class Player extends java.applet.Applet
{
	Label LabelNumber = new Label("你猜:");
	Label LabelStatus = new Label("");
	TextField TextFieldNumber = new TextField(4);
	Panel PanelNumber = new Panel();
	Panel PanelButton = new Panel();
	Button ButtonReset = new Button("重新開始");
	Button ButtonStart = new Button("開始判斷");
	Vector result = new Vector();
	
	public void init()
	{
		ButtonStart.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Count();}});
		ButtonReset.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Initial();}});

		this.setLayout(new BorderLayout());
		PanelNumber.add(LabelNumber);
		PanelNumber.add(TextFieldNumber);
		PanelButton.setLayout(new BorderLayout());
		PanelButton.add(ButtonReset,"East");
		PanelButton.add(ButtonStart,"West");
		PanelButton.add(LabelStatus,"South");
		this.add(PanelNumber,"North");
		this.add(PanelButton,"South");

		Initial();
	}

	void Initial()
	{
		result.removeAllElements();
		for(int n1 = 0;n1 < 10;n1++)
			for(int n2 = 0;n2 < 10;n2++)
				if(n2 != n1)
					for(int n3 = 0;n3 < 10;n3++)
						if(n3 != n1 && n3 != n2)
							for(int n4 = 0;n4 < 10;n4++)
								if(n4 != n1 && n4 != n2 && n4 != n3)
									result.addElement(Integer.toString(n1) + Integer.toString(n2) + Integer.toString(n3) + Integer.toString(n4));
		TextFieldNumber.setText("");
		LabelStatus.setText("");
	}

	void Count()
	{
		int A, B, a, b, na = 0, nb = 0, max, count;
		String NumberString;
		NumberString = TextFieldNumber.getText();

		max = 0;
		for(A = 0;A <= 4;A++)
		{
			for(B = 0; B <= 4 - A;B++)
			{
				count = 0;
				for(int i = 0;i < result.size();i++)
				{
					a = 0;b = 0;
					for(int j = 0;j < 4;j++)
						for(int k = 0;k < 4;k++)
							if(((String)(result.elementAt(i))).charAt(j) == NumberString.charAt(k)){
								if(j == k)
									a++;
								else
									b++;
							}
					if(a == A && b == B)
						count++;
				}
				if(count > max){
					na = A;	nb = B; max = count;
				}
//				LabelStatus.setText(Integer.toString(A) + " A " + Integer.toString(B) + " B " + Integer.toString(count) + " 種可能");
			}
		}

		for(int i = result.size() - 1;i >= 0;i--)
		{
			a = 0; b = 0;
			for(int j = 0;j < 4;j++)
				for(int k = 0;k < 4;k++)
					if(((String)(result.elementAt(i))).charAt(j) == NumberString.charAt(k))
					{
						if(j == k)
							a++;
						else
							b++;
					}
			if(a != na || b != nb)
				result.removeElementAt(i);
		}

		if(na == 4)
			LabelStatus.setText("你猜中了, 答案是 " + NumberString);
		else{
			TextFieldNumber.setText("");
			LabelStatus.setText(Integer.toString(na) + " A " + Integer.toString(nb) + " B");
		}
	}
}
