코딩을 배울 때 꼭 나오는 예제 중 하나는 야구 게임이다. 생성된 3개의 난수를 찾아가는 것이다. 자리와 숫자가 같을 때는 스트라이크, 자리는 다르지만 숫자가 같을 때는 볼이다.
예를 들어, 생성된 난수가 3 5 9일 때,
3 0 2는 1S,
2 3 6은 1B,
3 9 2는 1S 1B이다.
이런 식으로 숫자들과 자리를 맞춰가면서 최종적으로 3 5 9를 찾아가는 것이다.
그냥 머리 식힐겸 MATLAB으로 야구 게임을 코딩해보았다. 예전에 C와 파이썬으로 해봤었지만..
아래는 작성한 코드와 실행 결과이다.
clc, clear, close all
num1 = randi(10) - 1; % 0과 9사이의 난수 생성
num2 = num1;
while num2 == num1
num2 = randi(10) - 1; % 0과 9사이의 난수 생성
end
num3 = num2;
while num3 == num2 || num3 == num1
num3 = randi(10) - 1; % 0과 9사이의 난수 생성
end
num = [num1, num2, num3]; % 생성된 3개의 난수. 각각 다른 값이며 0에서 9의 값을 갖는다.
s_cnt = 0;
challenge_num = 0;
while s_cnt ~= 3
challenge_num = challenge_num + 1;
disp(['<Round ', num2str(challenge_num), '>'])
s_cnt = 0;
b_cnt = 0;
prompt1 = 'num1:';
x1 = input(prompt1);
prompt2 = 'num2:';
x2 = input(prompt2);
prompt3 = 'num3:';
x3 = input(prompt3);
if x1 == num1
s_cnt = s_cnt + 1;
end
if x2 == num2
s_cnt = s_cnt + 1;
end
if x3 == num3
s_cnt = s_cnt + 1;
end
if x1 == num2 || x1 == num3
b_cnt = b_cnt + 1;
end
if x2 == num1 || x2 == num3
b_cnt = b_cnt + 1;
end
if x3 == num1 || x3 == num2
b_cnt = b_cnt + 1;
end
result = [num2str(s_cnt), 'S ', num2str(b_cnt), 'B.'];
disp(result)
disp(' ')
end
disp('The end')
disp(['The number of challenges: ', num2str(challenge_num)])
남이 짜놓은 코드를 읽고 해석하는 것은 꽤나 스트레스를 주지만, 스스로 코딩해서 어떤 결과를 내는 것은 참 즐거운 일인 것 같다.
'Dev > matlab' 카테고리의 다른 글
[MATLAB] identity matrix 생성하기, eye 함수 (0) | 2019.10.09 |
---|---|
[MATLAB] 연립방정식 해 구하기, mldivide 함수 (0) | 2019.10.09 |
[MATLAB] 다양한 정도로 압축된 jpeg 이미지 만들기, imwrite 함수 (0) | 2019.07.03 |
[MATLAB] 표준화된 z-점수 산출하기, zscore 함수 (0) | 2019.06.14 |
[MATLAB] 문자열에서 필요한 데이터만 추출하기, sscanf 함수 (2) | 2019.04.18 |
[MATLAB] 숫자형을 문자형으로, 문자형을 숫자형으로 변환하기, num2str 함수와 str2num 함수 (2) | 2019.04.16 |
matlab에서 문자열 비교하기, strcmp 함수 (0) | 2019.04.12 |
matlab을 이용해서 파일 복사하기, copyfile 함수 (0) | 2019.04.11 |