달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2007. 9. 12. 10:56

[JavaQuiz] 셰익스피어-원숭이 문제 그거/Java2007. 9. 12. 10:56

/**
 *
 * @(#) Monkey.java
 * created date : 2007. 08. 31
 *
 * (c) Copyright by Youbok, Choi.,
 * All rights reserved.

 */
package ybchoi.quiz;

import java.util.Random;

/**
 *
 * @author Youbok, Choi
 * @version 1.0
 *
 */
public class Monkey {

 char[] msg;
 String mem;

 Random random;
 int length;

 Monkey(String arg) {
  msg = arg.toUpperCase().toCharArray();
  length = msg.length;
  random = new Random(System.currentTimeMillis());
 
  // 비교할 문자열 초기화
  for(int i = 0 ; i < length ; i++ ) {
   mem += " ";
  }
 }

 /**
  * A ~ Z 까지중에 무작위 생성
  *
  * @return A ~ Z 까지의 문자중 하나
  */
 private char getRandomAlpha() {
  int result = 0;

  do {
   result = random.nextInt(90);
  } while( result < 65) ;

  return (char)result;
 }

 /**
  *
  * @param _Min
  * @param _Max
  * @return
  */
// private char getRandomAlpha(int _Min, int _Max) {
//  return (char) (Math.random() * ( _Max - _Min ) + _Min);
// }
 
 /**
  * 입력받은 문자열의 길이와 같은 무작위 문자열 생성
  * 문자열 중에 입력받은 문자열과 같은 문자는 그냥 두고 나머지만 무작위로 생성
  *
  * @return 문자열
  */
 private String makeRandomString() {
  StringBuffer sb = new StringBuffer();

  for(int i = length, j = 0 ; i > 0 ; i--, j++) {

   if( mem.charAt(j) == msg[j] ) {
    sb.append(msg[j]);
   } else {
    sb.append(getRandomAlpha());
   }  
  }
 
  return sb.toString();
 }

 /**
  *
  */
 public void doIt() {
  int i = 1;

  do {
   mem = makeRandomString();
   
   try { Thread.sleep(200); } catch(Exception e) {}
   
   System.out.println(i++ + " : " + mem + " # " + String.valueOf(msg));
  }while( !String.valueOf(msg).equals(mem) );
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  Monkey m = new Monkey("ABCDEF");
  m.doIt();
 }

}

# 문자열을 입력 받고, 해당 문자열과 같은 길이의 무작위 문자열을 생성하고
# 생성된 문자열에서 입력 받았던 문자열과 같은 위치의 같은 문자가 있으면
# 해당 문자는 그냥 두고 다른 문자만 무작위로 생성하여
# 처음에 입력 받았던 문자열이 나올때까지 수행한다.

'그거 > Java' 카테고리의 다른 글

WebLogic 8.1 SP6 Download URL  (0) 2007.09.17
[JavaQuiz] 3n+1  (0) 2007.09.12
[Java Quiz] 주민등록 번호와 바코드 유효성 체크  (0) 2007.09.12
Java Anti-Pattern  (2) 2007.08.20
JDK 5.0의 새로운 기능 Annotation  (0) 2007.08.14
:
Posted by 뽀기