package com.test;
import java.util.*;
public class Quest01 {
public static void main(String[] args) {
//사용할 스캐너, 난수발생 메소드와 StringBuilder 클래스 선언
Scanner sc = new Scanner(System.in);
Random rd = new Random();
//입력
System.out.print("원하는 자릿수 입력?");
int data = sc.nextInt();
//처리
int[] arr = new int[data]; //컴퓨터가 사용할 야구게임번호 입력될 배열
int[] numdata = new int[10]; //0~9까지 총 10개의 숫자배열 준비
int[] arr1 = new int[data]; //추후 사용자가 입력하는 숫자를 저장할 배열
int strike = 0; //스트라이크 저장 변수
int ball = 0; //볼 저장 변수
int num10 = 0; //입력된 숫자를 기초하여 10단위로 나누어 arr1배열에 넣을때 사용하는 변수
for(int a=0; a<numdata.length; a++){
numdata[a] = a;
}
for(int a=0; a<numdata.length*100; a++){ // 준비된 0~9까지의 숫자를 무작위로 재배열
int r = rd.nextInt(10);
int temp = numdata[0];
numdata[0] = numdata[r];
numdata[r] = temp;
}
for(int a=0; a<arr.length; a++) { //무작위로 재배열된 0~9까지의 숫자중 컴퓨터가 소지할 야구게임 번호의 배열을 순차 입력.
arr[a] += numdata[a];
}
//중간 난수 발생완료 문구
System.out.printf("랜덤 숫자(%d자리) 발생 완료!%n", data);
//검수를 위한 샘플숫자 출력문구
System.out.print("(샘플 정답:");
for (int a=0; a<arr.length; a++) {
System.out.printf("%d", arr[a]);
}
System.out.printf(")%n");
//무한반복으로 사용자의 숫자와 컴퓨터의 숫자를 비교시작
do {
System.out.printf("%d자리 숫자 입력(-1:종료)?", data);
int user = sc.nextInt();
if (user == -1){
System.out.println("프로그램을 종료합니다.");
break;
}
//입력된 자릿수를 기초로 10 혹은 100... 단위 숫자 변수를 만듬
for (int i=2, n=2, m=10; i<=data ;i++, n++ ,m*=10){
if(i == n){
num10 = m;
}
}
for (int a=0 ; a<arr1.length; a++){ //사용자에게 입력받은 숫자를 앞에서부터 하나씩 arr1[a] 배열에 저장.
arr1[a] = user/num10;
user = user%num10;
num10 /= 10;
}
// 비교분석하여 Strike와 Ball 변수 카운팅
for(int a=0; a<arr1.length; a++) {
for(int b=0; b<arr.length; b++){
if(arr[a]==arr1[b]) {
if(a==b) {
strike++;
} else {
ball++;
}
}
}
}
//출력
if (strike == data) {
System.out.println("정답입니다!");
break;
} else {
System.out.printf("%d Strike, %d Ball%n", strike, ball);
}
//strike와 ball 변수 초기화
strike = 0;
ball = 0;
}while(true);
}
}