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

public class Computer extends java.applet.Applet
{
	Label LabelNumber = new Label("電腦猜:");
	Label LabelA = new Label("A:");
	Label LabelB = new Label("B:");
	Label LabelStatus = new Label("");
	TextField TextFieldNumber = new TextField(4);
	TextField TextFieldA = new TextField(2);
	TextField TextFieldB = new TextField(2);
	Panel PanelNumber = new Panel();
	Panel PanelAB = 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);
		PanelAB.add(LabelA);
		PanelAB.add(TextFieldA);
		PanelAB.add(LabelB);
		PanelAB.add(TextFieldB);
		PanelButton.setLayout(new BorderLayout());
		PanelButton.add(ButtonReset,"East");
		PanelButton.add(ButtonStart,"West");
		PanelButton.add(LabelStatus,"South");
		this.add(PanelNumber,"North");
		this.add(PanelAB,"Center");
		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){
//									LabelStatus.setText(Integer.toString(n1) + Integer.toString(n2) + Integer.toString(n3) + Integer.toString(n4));
									result.addElement(Integer.toString(n1) + Integer.toString(n2) + Integer.toString(n3) + Integer.toString(n4));
								}
		TextFieldNumber.setText((String)(result.elementAt((int)result.size() / 2)));
		TextFieldA.setText("");
		TextFieldB.setText("");
		LabelStatus.setText("");
	}

	void Count()
	{
		int a,b;
		String NumberString,A,B;
		NumberString = TextFieldNumber.getText();
		A = TextFieldA.getText();
		B = TextFieldB.getText();

		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 == Integer.parseInt(A) && b == Integer.parseInt(B)){
//				LabelStatus.setText((String)(result.elementAt(i)) + " " + a + " " + b + " Right");
			}else{
//				LabelStatus.setText((String)(result.elementAt(i)) + " " + a + " " + b + " Wrong");
				result.removeElementAt(i);
			}
		}

		if(result.size() == 0)
			LabelStatus.setText("輸入錯誤, 重來");
		else if(result.size() == 1)
			LabelStatus.setText("電腦猜中了, 答案是 " + (String)(result.elementAt(0)));
		else{
			TextFieldNumber.setText((String)(result.elementAt((int)result.size() / 2)));
			TextFieldA.setText("");
			TextFieldB.setText("");
			LabelStatus.setText("還有 " + result.size() + " 種可能");
		}
	}
}
