
這難寫的要死的作業是怎麼回事阿~~~~~!
================================
請建立一個目錄,並將您的程式放於該目錄下
請根據您的目錄名稱,正確指定各類別的所屬套件
目錄與主類別命名規則: s+學號 (以一位同學為代表)
所以我在主程式 evaluater.java 所在的資料夾中新增了一個 s9458050 資料夾
然後在 s9458050 資料夾中 新增一JAVA檔案 s9458050.java
內容如下:
-----------------------------------------------------------------------------------------------------
package s9458050;
import objs.*;
import objs.cls.*;
public class s9458050 implements AnswerNumber{
TeamMember team = new TeamMember("9458050");
NumberBall nball;
boolean[] b = new boolean[5040];
String[] ansary = new String[5040];
String sss;
int times = 0;
public TeamMember getTeamMember(){
return team;
}
public NumberBall getNewBall(){
return new NumberBall(generateNumber());
}
public void xAyB(NumberBall nb){
nball = nb;
sss = nball.toString();
int reada = sss.charAt(8) - '0';
int readb = sss.charAt(10) - '0';
for(int x=0;x<5040;x++){
if(!b[x]) continue;
if(Ast(ansary[x],sss)!=reada || Bnd(ansary[x],sss)!=readb)
b[x] = false;
}
}
public void init(){
for(int q=0;q<5040;q++)
b[q] = true;
}
public int[] generateNumber() {
String s = "";
int[] digits = new int[4];
int[] p = new int[10];
int runtime = 0;
if(times == 0){
int st=0;
for (int n1=0; n1<10; n1++) {
for (int n2=0; n2<10; n2++) {
if ( n2 == n1)
continue;
for (int n3=0; n3<10; n3++) {
if (n3 == n2 || n3 == n1 )
continue;
for (int n4=0; n4<10; n4++) {
if ( n4==n1 || n4==n2 || n4==n3)
continue;
ansary[st] = Integer.toString(n1)+n2+n3+n4;
st++;
}}}}
for(int r=0;r<5040;r++)
b[r] = true;
}
alio:{
while(true){
//System.out.print(runtime);
if(runtime >= 5){
for (int i=0; i<5040; i++) {
if (!b[i]) continue;
for(int y=0;y<4;y++){
digits[y] = ansary[i].charAt(y)-'0';
}
break alio;
}
}
for(int i=1; i<=4; i++) {
int d;
do {
d = (int)(Math.random()*10);
} while(p[d]!=0);
p[d] = i;
digits[i-1] = d;
s += Integer.toString(d);
}
alio2:{
for(int j=0;j<5040;j++){
if(ansary[j].equals(s)){
if(b[j]){
break alio;}
else{
s = "";
//System.out.println("alio2");
break alio2;}
}
}
}
for(int t=0;t<10;t++)
p[t] = 0;
runtime++;
}
}
times++;
runtime = 0;
return digits;
}
public static int Ast(String s1,String s2){
int a = 0;
for(int i=0;i<4;i++){
if(s1.charAt(i) == s2.charAt(i))
a++;
}
return a;
}
public static int Bnd(String s1,String s2){
int b = 0;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(i==j)continue;
if(s1.charAt(i) == s2.charAt(j))
b++;
}
}
return b;
}
}
真懷念去年,老師說因為找不到適合練習繼承的題目所以上機考取消XDXD
--------------------------------------------------------------------------------------------
我只是個專業的「家裡蹲」!(Neet)