[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 |