⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heyi.java

📁 用Java编的人工智能的最简单合一者算法
💻 JAVA
字号:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Heyi extends JFrame 
{
	private JLabel E1Label,E2Label;
	private JButton  jieguoButton,exitButton;
	private JTextField E1Field,E2Field,jieguoField;	
    String stringE1;
    String stringE2;
    String output="";
    
  public Heyi()
  {
  	super("求最简单合一者");
      
    Container container=getContentPane();
    container.setLayout(new FlowLayout());
    
    E1Label=new JLabel("请输入E1,以空格分隔,如g(h) A H(p)");
    container.add(E1Label);
    E1Field=new JTextField(20);
    container.add(E1Field);
    
    E2Label=new JLabel("请输入E2,以空格分隔,如g(h) A H(p)");
    container.add(E2Label);
    E2Field=new JTextField(20);
    container.add(E2Field);
    
    jieguoButton=new JButton("求最简单合一者UNIFY(E1,E2)");
    container.add(jieguoButton);
    jieguoField=new JTextField(20);
    jieguoField.setEditable(false);
    container.add(jieguoField);
    
    exitButton=new JButton("Exit");
    container.add(exitButton);
    
    ActionEventHandler handler=new ActionEventHandler();
    E1Field.addActionListener(handler);
    E2Field.addActionListener(handler);
    jieguoButton.addActionListener(handler);
    exitButton.addActionListener(handler);
    
    setSize(270,300);
    setVisible(true);
  }
    
    private class ActionEventHandler implements ActionListener
    {
    	public void actionPerformed (ActionEvent event)
    	{
    		if(event.getSource()==exitButton)
    		System.exit(0);
    		
    		 if(event.getSource()==E1Field)
    		{ 
    			 String E1string=event.getActionCommand();
    			 stringE1=E1string;
    			 
    	     }
    	     
    	     
    	    if(event.getSource()==E2Field)
    		{ 
    		 	String E2string=event.getActionCommand();
    		 	stringE2=E2string;
    		 	
    	     }
    	     
    	     if(event.getSource()==jieguoButton)
    	     { 
    	       
    	        Unify(stringE1,stringE2);
    	      	jieguoField.setText(output);
    	     	output="";     
    	     }
    	 }
    }
    
    public String Unify(String E1,String E2)
{	
	
	

    String F1="",T1="",F2="",T2="",G1,G2,Z1="",Z2="";
	StringTokenizer tokensE1=new StringTokenizer(E1);
	StringTokenizer tokensE2=new StringTokenizer(E2);  
	if(tokensE1.countTokens()==0) return "";
	
   	if(tokensE1.countTokens()!=tokensE2.countTokens())
	      return  output+="FAIL";
	
    if(tokensE1.countTokens()==1&&tokensE2.countTokens()==1&&E1.length()!=1&&E2.length()!=1)
     {	
       
     	if(E1.equals(E2)) return E1+"/"+E2;
     	 else 
     	  {	
     	    String S1="";
     	    S1+=E1.charAt(0);
     		String S2="";
     		S2+=E2.charAt(0);
     		if(S1.equals(S2))
     		{ 
     		  Character c3=new Character(E1.charAt(2));
    	      Character c4=new Character(E2.charAt(2));
    	   	   if(c3.hashCode()>=97&&c3.hashCode()<=122&&c4.hashCode()>=65&&c4.hashCode()<=90)
    	   	    {
     		      output+=E2.charAt(2)+"/"+E1.charAt(2)+" ";
     		      return E2.charAt(2)+"/"+E1.charAt(2);
     	        }
     	        else
     	        {
     	        
     	        output+=E1.charAt(2)+"/"+E2.charAt(2)+" ";
     		      return E1.charAt(2)+"/"+E2.charAt(2);
     	        
     	        }
     	        
     	        
     	    }
     	        
     	        
     		else 
     		  {  
     		     output+=E2+"/"+E1+" ";
     		     return E2+"/"+E1;
     		  }
     	  }
      }
     	
  if(tokensE1.countTokens()==1&&tokensE2.countTokens()==1
     	&&E1.length()!=1&&E2.length()==1)
     {
     	output+=E1+"/"+E2+" ";
     	return E1+"/"+E2;
    }
    	
     if(tokensE1.countTokens()==1&&tokensE2.countTokens()==1
     	&&E1.length()==1&&E2.length()!=1)
    	   {
    	   	output+=E2+"/"+E1+" ";
    	    return  E2+"/"+E1;
           }
    
     if(tokensE1.countTokens()==1&&tokensE2.countTokens()==1&&E1.length()==1&&E2.length()==1)
    	 {
    	 	if(E1.equals(E2)) return E1+"/"+E2+" ";
    	    
    	   	  if(E1.charAt(0)>='a'&&E1.charAt(0)<='z')
    	   	  {
    	   		output+=E2+"/"+E1+" ";
    	        return  E2+"/"+E1;
    	        }
    	      else 
    	         if(E2.charAt(0)>='a'&&E2.charAt(0)<='z')
    	     {
    	     	output+=E1+"/"+E2+" ";
    	        return  E1+"/"+E2;
    	     }
          }	
   
 if(tokensE1.countTokens()==tokensE2.countTokens()&&
    tokensE1.countTokens()!=1&&tokensE2.countTokens()!=1)
  {
    StringTokenizer tokensE11=new StringTokenizer(E1);
	StringTokenizer tokensE22=new StringTokenizer(E2); 
    
    int a=0;
	int b=0;
	String SE1[]=new String[10];
	String SE2[]=new String[10];
	while(tokensE11.hasMoreTokens())
	{
		SE1[a]=tokensE11.nextToken();
		a++;
	}
	while(tokensE22.hasMoreTokens())
	{
		SE2[b]=tokensE22.nextToken();
		b++;
	}
	String ddd,ttt;
	for(int i=0;i<a;i++)
	   for(int j=0;j<b;j++)
	   {
	   	ddd="";
	   	ddd+=SE1[i].charAt(0);
	   	ttt="";
	   	ttt+=SE2[j].charAt(0);
	   	if(ddd.equals(ttt))
	   	     {
	   	     String temp="";
	   	     temp=SE2[i];
	   	     SE2[i]=SE2[j];
	   	     SE2[j]=temp;
	   	   }
	    }
	  E1="";
	  E2="";
	 for(int k=0;k<a;k++)
	 E1+=SE1[k]+" ";
	 for(int h=0;h<b;h++)
	 E2+=SE2[h]+" ";
	 
	StringTokenizer tokensE111=new StringTokenizer(E1);
	StringTokenizer tokensE222=new StringTokenizer(E2);  
	F1=tokensE111.nextToken();
    while(tokensE111.hasMoreTokens())
	      T1+=tokensE111.nextToken()+" ";
	
    
	F2=tokensE222.nextToken();
    while(tokensE222.hasMoreTokens())
	     T2+=tokensE222.nextToken()+" ";
    
    
    Z1=Unify(F1,F2);
    if(Z1.equals("FAIL"))
       return "FAIL";
   else
   {
    StringTokenizer tokensZ1=new StringTokenizer(Z1,"/");
	String t=tokensZ1.nextToken();
	String d=tokensZ1.nextToken();
	G1="";
	StringTokenizer tokensT1=new StringTokenizer(T1);
	String t1;
	while(tokensT1.hasMoreTokens())
	{
		t1=tokensT1.nextToken();
		if(d.equals(t1))
		G1+=t+" ";
		else
		G1+=t1+" ";
	}
    
    G2="";
	StringTokenizer tokensT2=new StringTokenizer(T2);
	String t2;
	while(tokensT2.hasMoreTokens())
	{
		t2=tokensT2.nextToken();
		if(d.equals(t2))
		G2+=t+" ";
		else
		G2+=t2+" ";
	}

    Z2=Unify(G1,G2);
    if(Z2.equals("FAIL"))
    	return "FAIL"; 
  }
 }
  
    return "";
   
}


  public static void main(String args[])
    {
    	Heyi application=new Heyi();
    	application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -