📄 twentyfour.java
字号:
import java.io.*;
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Func
{
float func[]=new float[6];
float add(float x,float y){
return x+y;
}
float sub(float x,float y){
return x-y;
}
float mul(float x,float y){
return x*y;
}
float div(float x,float y){
return x/y;
}
void operate(float x,float y){
func[0]=add(x,y);
func[1]=sub(x,y);
func[2]=mul(x,y);
func[3]=div(x,y);
func[4]=-func[1];
func[5]=1/func[3];
}
}//f,g,h;
class forprinti{
private int w;
int vi[]=new int[3];
String si;
public static void printf(String s){
System.out.print(s);
}
void GetMethod(int a,int b,int i,boolean bi){
w=i;
if(w==0){ if(bi) printf("("+a+"+"+b+")"); vi[0]=a;vi[1]=0;vi[2]=b;
si="("+a+"+"+b+")";
}
if(w==1){ if(bi) printf("("+a+"-"+b+")"); vi[0]=a;vi[1]=1;vi[2]=b;
si="("+a+"-"+b+")";
}
if(w==2){ if(bi) printf("("+a+"*"+b+")"); vi[0]=a;vi[1]=2;vi[2]=b;
si="("+a+"*"+b+")";
}
if(w==3){ if(bi) printf("("+a+"/"+b+")"); vi[0]=a;vi[1]=3;vi[2]=b;
si="("+a+"/"+b+")";
}
if(w==4){ if(bi) printf("("+b+"-"+a+")"); vi[0]=b;vi[1]=1;vi[2]=a;
si="("+b+"-"+a+")";
}
if(w==5){ if(bi) printf("("+b+"/"+a+")"); vi[0]=b;vi[1]=3;vi[2]=a;
si="("+b+"/"+a+")";
}
}
}//rr;
class forprintj extends forprinti{
private int w;
int vj[]=new int[5];
forprinti rr=new forprinti();
String sj;
void GetMethod(int a,int b,int c,int i,int j,boolean bi,boolean bj){
w=j;
if(w==0){ if(bj) printf("(");rr.GetMethod(a,b,i,bi);
if(bj) printf("+"+c+")");
vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=0; vj[4]=c;
sj="("+rr.si+"+"+c+")";
}
if(w==1){ if(bj) printf("(");rr.GetMethod(a,b,i,bi);
if(bj) printf("-"+c+")");
vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=1; vj[4]=c;
sj="("+rr.si+"-"+c+")";
}
if(w==2){ if(bj) printf("(");rr.GetMethod(a,b,i,bi);
if(bj) printf("*"+c+")");
vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=2; vj[4]=c;
sj="("+rr.si+"*"+c+")";
}
if(w==3){ if(bj) printf("(");rr.GetMethod(a,b,i,bi);
if(bj) printf("/"+c+")");
vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=3; vj[4]=c;
sj="("+rr.si+"/"+c+")";
}
if(w==4){ if(bj) printf("("+c+"-");rr.GetMethod(a,b,i,bi);
if(bj) printf(")");
vj[0]=c; vj[1]=1; vj[2]=rr.vi[0]; vj[3]=rr.vi[1]; vj[4]=rr.vi[2];
sj="("+c+"-"+rr.si+")";
}
if(w==5){ if(bj) printf("("+c+"/");rr.GetMethod(a,b,i,bi);
if(bj) printf(")");
vj[0]=c; vj[1]=3; vj[2]=rr.vi[0]; vj[3]=rr.vi[1]; vj[4]=rr.vi[2];
sj="("+c+"/"+rr.si+")";
}
}
}//ss;
class forprintk extends forprintj{
private int w;
int vk[]=new int[7];
forprintj ss=new forprintj();
static int counter;
String sk;
void GetMethod(int a,int b,int c,int d,int i,int j,int k,boolean bi,boolean bj,boolean bk){
w=k;
if(w==0){
ss.GetMethod(a,b,c,i,j,bi,bj); if(bk) printf("+"+d);
vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2];
vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=0; vk[6]=d;
sk=ss.sj+"+"+d;
}
if(w==1){
ss.GetMethod(a,b,c,i,j,bi,bj); if(bk) printf("-"+d);
vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2];
vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=1; vk[6]=d;
sk=ss.sj+"-"+d;
}
if(w==2){
ss.GetMethod(a,b,c,i,j,bi,bj); if(bk) printf("*"+d);
vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2];
vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=2; vk[6]=d;
sk=ss.sj+"*"+d;
}
if(w==3){
ss.GetMethod(a,b,c,i,j,bi,bj); if(bk) printf("/"+d);
vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2];
vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=3; vk[6]=d;
sk=ss.sj+"/"+d;
}
if(w==4){
if(bk) printf(d+"-"); ss.GetMethod(a,b,c,i,j,bi,bj);
vk[0]=d; vk[1]=1; vk[2]=ss.vj[0]; vk[3]=ss.vj[1];
vk[4]=ss.vj[2]; vk[5]=ss.vj[3]; vk[6]=ss.vj[4];
sk=d+"-"+ss.sj;
}
if(w==5){
if(bk) printf(d+"/"); ss.GetMethod(a,b,c,i,j,bi,bj);
vk[0]=d; vk[1]=3; vk[2]=ss.vj[0]; vk[3]=ss.vj[1];
vk[4]=ss.vj[2]; vk[5]=ss.vj[3]; vk[6]=ss.vj[4];
sk=d+"/"+ss.sj;
}
}
}//tt;
class Print extends forprintk{
forprintk tt=new forprintk();
void Prt(int a,int b,int c,int d,int i,int j,int k,boolean bi,boolean bj,boolean bk){
tt.counter++;
tt.GetMethod(a,b,c,d,i,j,k,bi,bj,bk);
}
}
class Exce extends forprinti{
boolean IsPrint,dis;
void IsOutOfRange(int a,int b,int c,int d){
IsPrint=true;
dis=true;
if((a<1)|(a>13)) Display(dis,a);
if((b<1)|(b>13)) Display(dis,b);
if((c<1)|(c>13)) Display(dis,c);
if((d<1)|(d>13)) Display(dis,d);
}
void Display(boolean b,int ii){
if(b) printf(ii+ " is out of range ;\n");
IsPrint=false;
}
}//e
public class Twentyfour extends WindowAdapter implements ActionListener{
JFrame f;
JPanel p1,p2,p3;
JButton Gene,Calc,Clear,Quit;
TextArea Resu;
JLabel lab1,lab2;
JTextField n1,n2,n3,n4;
MenuBar mb;
Menu about;
PopupMenu inf;
Dialog d;
Label l;
int input[]=new int[4];
public void Display(){
f=new JFrame("Twenty-Four By Shoarh");
f.setLocation(230,70);
f.setSize(500,500);
f.setBackground(Color.lightGray);
f.addWindowListener(new WinClose());
f.addWindowListener(this);
addMenu(f);
setPopupMenu();
showDialog();
p1=new JPanel();
Resu=new TextArea(" SHOARH \n July 8th, 2006..");
Resu.setEditable(false);
Resu.setRows(16);
Resu.setColumns(60);
p1.add(Resu);
p1.setLayout(new FlowLayout(FlowLayout.CENTER));
p2=new JPanel();
lab1=new JLabel("Pls Input Four Integers that Their Values Between ONE and THIRTEEN . . . ");
lab2=new JLabel("Or You can Cilck the Button 'Generate' to Generate the Num by Random . . . ");
n1=new JTextField(7); n2=new JTextField(7);
n3=new JTextField(7); n4=new JTextField(7);
Gene=new JButton("Generate");
p2.setLayout(new FlowLayout(FlowLayout.CENTER));
p2.add(lab1); p2.add(lab2);
p2.add(n1); p2.add(n2); p2.add(n3); p2.add(n4);
p2.add(Gene);
p3=new JPanel();
Calc=new JButton("Calculate");
Clear=new JButton("Clear");
Quit=new JButton("Quit");
p3.setLayout(new FlowLayout(FlowLayout.CENTER));
p3.add(Calc); p3.add(Clear); p3.add(Quit);
Clear.addActionListener(this);
Quit.addActionListener(this);
Gene.addActionListener(this);
Calc.addActionListener(this);
f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.CENTER);
f.add(p3,BorderLayout.SOUTH);
f.setVisible(true);
}
public void setPopupMenu(){
inf=new PopupMenu("Information");
inf.add(new MenuItem("About"));
inf.addActionListener(this);
f.add(inf);
}
public void showDialog(){
d=new Dialog(f,"INFORMATION...",true);
l=new Label();
d.add(l,"Center");
d.setSize(300,200);
d.setLocation(400,270);
d.addWindowListener(this);
}
public void addMenu(JFrame f){
mb=new MenuBar();
f.setMenuBar(mb);
about=new Menu("About");
mb.add(about);
about.add(new MenuItem("About"));
about.addActionListener(this);
}
public void windowClosing(WindowEvent e){
if(e.getSource()==d)
d.setVisible(false);
else
System.exit(0);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==Clear){
Resu.setText("");
}
if(e.getSource()==Quit){
System.exit(0);
}
if(e.getSource()==Gene){
Random rand=new Random();
n1.setText(String.valueOf(rand.nextInt(13)+1));
n2.setText(String.valueOf(rand.nextInt(13)+1));
n3.setText(String.valueOf(rand.nextInt(13)+1));
n4.setText(String.valueOf(rand.nextInt(13)+1));
}
if(e.getSource()==Calc){
String S1=n1.getText().trim();
String S2=n2.getText().trim();
String S3=n3.getText().trim();
String S4=n4.getText().trim();
input[0]=Integer.parseInt(S1);
input[1]=Integer.parseInt(S2);
input[2]=Integer.parseInt(S3);
input[3]=Integer.parseInt(S4);
Resu.setText("");
Calculating();
}
if(e.getSource()==about){
l.setText(" BY SHOARH JULY 8th,2006 ");
l.setBackground(Color.CYAN);
d.show();
}
}
void Calculating(){
int a,b,c,d;
int i,j,k;
int counterloop=-1;
int buffer[][]=new int[1000][7];
boolean NoFound=true;
int Fcounter=0;
Exce e=new Exce();
e.IsOutOfRange(input[0],input[1],input[2],input[3]); //CHECK IF THE INPUT IS VALID
int InitPossible[][]={
{input[0],input[1],input[2],input[3]},
{input[0],input[1],input[3],input[2]},
{input[0],input[2],input[1],input[3]},
{input[0],input[2],input[3],input[1]},
{input[0],input[3],input[1],input[2]},
{input[0],input[3],input[2],input[1]},
{input[1],input[0],input[2],input[3]},
{input[1],input[0],input[3],input[2]},
{input[1],input[2],input[0],input[3]},
{input[1],input[2],input[3],input[0]},
{input[1],input[3],input[0],input[2]},
{input[1],input[3],input[2],input[0]},
{input[2],input[1],input[0],input[3]},
{input[2],input[1],input[3],input[0]},
{input[2],input[0],input[1],input[3]},
{input[2],input[0],input[3],input[1]},
{input[2],input[3],input[1],input[0]},
{input[2],input[3],input[0],input[1]},
{input[3],input[1],input[2],input[0]},
{input[3],input[1],input[0],input[2]},
{input[3],input[2],input[1],input[0]},
{input[3],input[2],input[0],input[1]},
{input[3],input[0],input[1],input[2]},
{input[3],input[0],input[2],input[1]}
};
forprintk tt=new forprintk();
if(e.IsPrint){
for(int ii=0;ii<24;ii++){
a=InitPossible[ii][0];
b=InitPossible[ii][1];
c=InitPossible[ii][2];
d=InitPossible[ii][3];
float r[] =new float[6];
float s[][] =new float[6][6];
float t[][][]=new float[6][6][6];
Func f=new Func();
Func g=new Func();
Func h=new Func();
f.operate(a,b);
for(i=0;i<=5;i++){
r[i]=f.func[i];
g.operate(r[i],c);
for(j=0;j<=5;j++){
s[i][j]=g.func[j];
h.operate(s[i][j],d);
for(k=0;k<=5;k++){
t[i][j][k]=h.func[k];
// printf(t[i][j][k]+"\n"); //PRINT ALL THE VALUES
int check;
if((t[i][j][k]>=23.9999)&&(t[i][j][k]<=24.0001)){ //DISPLAY THE RESULT IF THE RESULT EQUALS 24
NoFound=false;
counterloop++;
boolean IsRedundant=true;
int sign;
tt.GetMethod(a,b,c,d,i,j,k,false,false,false);
for( sign=0;sign<7;sign++){
buffer[counterloop][sign]=tt.vk[sign];
}
for(check=0;check<counterloop;check++){
if(
buffer[check][0]==buffer[counterloop][0]&&
buffer[check][1]==buffer[counterloop][1]&&
buffer[check][2]==buffer[counterloop][2]&&
buffer[check][3]==buffer[counterloop][3]&&
buffer[check][4]==buffer[counterloop][4]&&
buffer[check][5]==buffer[counterloop][5]&&
buffer[check][6]==buffer[counterloop][6]
){
IsRedundant=false;
break;
}
}
Print p=new Print();
if(IsRedundant){
Resu.append(tt.sk+" = 24 "+"\n");
Fcounter++;
}//END IsRedundant
}
}//END K
}//END J
}//END I
}//END FOR
}//END ISPRINT
if(NoFound){
Resu.append(String.valueOf(input[0])+" "+String.valueOf(input[1])+" "
+String.valueOf(input[2])+" "+String.valueOf(input[3])+" "
+"\nNo method was found by calculating that can accece to TWENTY-FOUR point...\n"); //IF NO METHOD FOUND
}
Resu.append("There was "+Fcounter+" method(s) found in total\n");
Resu.append("\n");
}
public static void main(String[] args){
(new Twentyfour()).Display();
}
}
class WinClose extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -