close

 奇人軼事鑑賞(?)

1209138265155.jpg

1181586779242.jpg  1209138891404.jpg

================================

import java.io.*;

public class guessNumber {
  public static void main(String[] args) throws IOException {
    boolean[] p = new boolean[10000];
    for(int i=0; i<p.length; i++)
      p[i] = notDuplicated(i);
    boolean done = false;
    int g=0;
    for(int i=1; !done; i++) {
      g = takeANumber(p);
      System.out.println("第"+i+"次猜 "+convertToString(g));
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      System.out.print("A = ");
      int a = Integer.parseInt(br.readLine());
      done = a==4;
      System.out.print("B = ");
      int b = Integer.parseInt(br.readLine());
      for(int j=0; j<p.length; j++)
        if(p[j]==true)
          p[j] = isCandidate(j,g,a,b);
    }
    System.out.println("您的數字是 "+g);
  }
  static boolean notDuplicated(int i) {
    char[] m = convertToString(i).toCharArray();
    boolean status = true;
    for(int j=0; j<m.length-1; j++) {
      char c = m[j];
      for(int k=j+1; k<m.length; k++) {
        if(c==m[k])
          status = false;
      }
    }
    return status;
  }
  static int takeANumber(boolean[] p) {
    for(int i=0; i<p.length; i++)
      if(p[i])
        return i;
    return 0;
  }
  static boolean isCandidate(int j, int g, int a, int b) {
    char[] c1 = convertToString(j).toCharArray();
    char[] c2 = convertToString(g).toCharArray();
    for(int i=0; i<c1.length; i++)
      if(c1[i]==c2[i])
        a--;
    for(int i=0; i<c1.length; i++)
      for(int k=0; k<c2.length; k++)
        if(i!=k && c1[i]==c2[k])
          b--;
      return ((a==0)&(b==0));
  }
  static String convertToString(int g) {
    String s = ""+g;
    int l = 4-s.length();
    for(int i=0; i<l; i++)
      s = "0"+s;
    return s;
  }
}

 

================================

好一個彈幕遊戲....(沒記錯是真的有這款同人作)

1223449088042.jpg 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 steven70101 的頭像
    steven70101

    老人家的舊書房

    steven70101 發表在 痞客邦 留言(1) 人氣()