
์ด๋ฒ ์ฃผ์ฐจ ์คํฐ๋๋ ๊ฐ๋จํ ์์ฝํด์ ๋งํ๋ฉด ์ ๋ฒ์ฃผ์ฐจ๊น์ง ๋ฐฐ์ด ํ์ด์ฌ๊ณผ ๋ํ์ด๋ฅผ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋ณต์ตํด๋ณธ๋ค๋ ๋๋์ด ๊ฐํฉ๋๋ค. ์ค์ ๋ก ๊ต์ฌ์์๋ ๋ฌด์ธ๊ฐ ์๋ก์ด ๋ฐฐ์ฐ๊ธฐ ๋ณด๋ค๋ ์ซ์์ผ๊ตฌ๋ผ๋ ์์๋ฅผ ํตํด ํ์ด์ฌ, ๋ํ์ด๋ฅผ ํ์ฉํด ์๊ณ ๋ฆฌ์ฆ์ ์ง๋ณด๋ ๋๋์ด ๊ฐํฉ๋๋ค.
๊ทธ๋์ ์ ๋ ์ด๋ฒ ์ฃผ์ฐจ ์คํฐ๋๋ ์ด๋๊น์ง ๋ฐฐ์ด ํ์ด์ฌ๊ณผ ๊ฐ๋จํ ๋ํ์ด๋ฅผ ๋ณต์ตํ๊ณ ์ด์ ๋ฆฌ ํ๋ค๋ ๋๋์ผ๋ก ํ์ตํด๋ณด์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ ๋ชฉ์ด ํผ๋์ ์๊ณ ๋ฆฌ์ฆ์ธ ์ด์ ๋ ๊ต์ฌ์ ํ์๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ ์ด๋จ๋ค.
ํ์๊ฐ ๊ณ ์ํ ํด๋ฒ์ ๋ฐ๋ผ์๋ง ๋ต์ ์ฐพ์๊ฐ๋ค๋ ์ ์์ ์ด ์ฅ์ ์ ๋ชฉ์ ํผ๋์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ํ์๋ค.
๊ต์ฌ์์ ์ด๋ฒ ์ฃผ์ฐจ ๋ด์ฉ ํต์ฑ๋ก ์ซ์์ผ๊ตฌ๋ผ๋ ๊ฒ์ ํ์ด์ฌ, ๋ํ์ด๋ฅผ ์ด์ฉํด ์์ฑํ๊ณ ์ค๋ช ํ๋ ๋ด์ฉ์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
'์ซ์์ผ๊ตฌ'๋ผ๊ณ ๊ทธ๋ฅ ๋ค์ผ๋ฉด ๋ฌด์์ธ์ง ๊ฐ์ด ์์ค์ค ์๋ ์๋๋ฐ ๊ท์น์ ๋ค์ผ๋ฉด ์? ํ๊ณ ์๊ฐ๋์ค ์ ์์ ๊ฒ๋๋ค. ์๋ง ๋ค๋ค ํ๋ฒ์ฉ ํด๋ดค์ ๊ฒ๋๋ค(์ ๋ ๊ธฐ์ต์์์ ์ด๋ฉ๋ ํด๋ณธ๊ฒ ๋ ์ค๋ฅด๋ค์..ใ ใ ).
๊ฐ์ 3/4์๋ฆฌ์ ์ซ์๋ฅผ ์์๋ก ์ ํ ๋ค, ์๋ก์๊ฒ 3/4์๋ฆฌ์ ์ซ์๋ฅผ ๋ถ๋ฌ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก ์๋๊ฐ ์ ์ ์ซ์๋ฅผ ์์ํ ๋ค ๋งํ๋ค.
์ฌ์ฉ๋๋ ์ซ์๋ 0์์ 9๊น์ง ์๋ก ๋ค๋ฅธ ์ซ์์ด๋ค.
๊ฒฝ์ฐ์ ๋ฐ๋ผ 0์ ์ฌ์ฉํ์ง ์๊ธฐ๋ ํ๋ฉฐ 0์ด ์ฒซ๋ฒ์งธ ์ซ์๋ก ์ฌ ์ ์๊ฒํ๋ ๋ฃฐ๋ ์๋ค.
1. ์ซ์๋ ๋ง์ง๋ง ์์น๊ฐ ํ๋ ธ์ ๋๋ BALL.
2. ์ซ์์ ์์น๊ฐ ์ ๋ถ ๋ง์ผ๋ฉด STRIKE.
(๋ฌผ๋ก ๋ฌด์์ด BALL์ด๊ณ STRIKE์ธ์ง๋ ์๋ ค์ฃผ์ง ์๋๋ค.)
3. ์ซ์์ ์์น๊ฐ ์ ๋ถ ํ๋ฆฌ๋ฉด OUT.
- ๋ ์ซ์๊ฐ ์ค๋ณต๋๋ฉด ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์์ ธ์ ๊ทธ๋ฐ์ง ์ค๋ณต ์ซ์๋ ์ ์ฌ์ฉํ์ง ์๋๋ค.
์ ํฌ๊ฐ ํ์ตํ ์ฝ๋๋ ์ ๋ต ์ซ์๋ฅผ 3์๋ฆฌ๋ก ํ๊ณ 0์ ํฌํจํ์ง ์์ 1~9๊น์ง ์ซ์๋ก ํฉ๋๋ค. ๋ํ ์ซ์ ์ค๋ณต๋ ์๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
๋ํ ์ฝ๋๋ฅผ ์ง๊ธฐ์ ์ฌ์ฉํ ํจํค์ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import numpy as np
์ฐ์ ์ปดํจํฐ๊ฐ ์๋ต์ ์ญํ ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
(์๋ต์๋ผ ํจ์ ์ปดํจํฐ๊ฐ ์ซ์ 3๊ฐ๋ฅผ ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ๋ง๋ค์๋ค ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ฆ ์ปดํจํฐ๊ฐ ์คํธ๋ผ์ดํฌ๊ฐ ๋ช๊ฐ์ธ์ง, ๋ณผ์ด ๋ช๊ฐ์ธ์ง ๋ฑ์ ์๋ ค์ค๋๋ค.)
rsp_nums = [i for i in range(1, 10)]
rsp_nums = np.random.choice(rsp_nums, size = 3, replace = False)
์ฐ์ ์ ์ฝ๋๋ ์ปดํจํฐ ์๋ต์๊ฐ ์ฌ์ฉํ ์ซ์๋ฅผ ๋ฌด์์์ ์ผ๋ก ์์ฑํ๋ ์ฝ๋์ ๋๋ค.
1๋ถํฐ 9๊น์ง์ ์ ์ ์ํ๊ฐ๊ฐ ํฌํจ๋ ๋ฆฌ์คํธ rsp_nums๋ฅผ ์์ฑํ ๋ค์, np.random.choice๋ฅผ ์ฌ์ฉํด์ rsp_nums์ ํฌํจ๋ ์ซ์ ์ค์์ ์ธ๊ฐ์ ์ซ์๋ฅผ ์ค๋ณต์ด ์๋๋ก ๋ฌด์์์ ์ผ๋ก ์ ํํ๋๋ก ํ ํ ๋ฐํ๋๋ ๋ฐฐ์ด ๊ฐ์ฒด์ rsp_nums๋ฅผ ๋ค์ ๋ถ์ฌ ๋ง๋ค์์ต๋๋ค.
๋ค์ ์๋ ์ฝ๋๋ rsp_nums๋ฐฐ์ด๊ณผ ํด๊ฒฐ์(๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ฌ๋)๊ฐ ์ถ์ธกํ ์ธ ๊ฐ์ ์ซ์๊ฐ ๋ด๊ธด guess ๋ฆฌ์คํธ๋ฅผ ์
๋ ฅ๋ฐ๊ณ ์๋ตํ๋ ํจ์์
๋๋ค.
def get_response_from_guess(rsp_nums, guess):
n_stk = 0
n_bll = 0
for i in range(3):
if guess[i] == rsp_nums[i]:
n_stk += 1
elif guess[i] in rsp_nums:
n_bll += 1
else:
pass
respose = (n_stk, n_bll)
return response
n_stk์ n_bll์ ๊ฐ๊ฐ ์คํธ๋ผ์ดํฌ์ ๋ณผ์ ๊ฐ์์ด๊ณ rsp_nums์ guess๋ฅผ ๊ฐ๊ฐ if๋ฌธ์ ํตํด ๋น๊ตํด๊ฐ๋ฉฐ ์คํธ๋ผ์ดํฌ์ ๋ณผ์ ๊ฐ์๋ฅผ ์ฆ๊ฐ์์ผ ๋ฐํํ๋ฉด ๋ฉ๋๋ค.
class Responder():
def __init__(self):
self.rsp_nums = np.random.choice(
[i for i in range(1, 10), size = 3, replace = False)
def get_response_from_guess(rsp_nums, guess):
n_stk = 0
n_bll = 0
for i in range(3):
if guess[i] == rsp_nums[i]:
n_stk += 1
elif guess[i] in rsp_nums:
n_bll += 1
else:
pass
respose = (n_stk, n_bll)
return response
๋ง์ง๋ง์ผ๋ก ์ ๋ ฅ์ ๋ฐ์ guess๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
while True:
guess = input("Guess:")
if len(guess) == 3 and len(set(guess))==3:
break
guess = [int(item) for item in guess]
๋ ์ฌ๊ฒจ ๋ณผ ๊ตฌ๊ฐ์ len(set(guess)) == 3 ์ด๋ถ๋ถ์
๋๋ค. ์ ํฌ๋ ์ค๋ณต์ซ์๋ฅผ ๋ฐ์ง ์๊ธฐ๋ก ํ์๊ธฐ์ set์ ์ด์ฉํ ๊ฒ์
๋๋ค.
(์งํฉ์ ์ค๋ณต์ซ์๋ฅผ countํ์ง ์๊ธฐ ๋๋ฌธ์ด์ฃ )
์ด๋ ๊ฒ ์๋ต์ ์ฝ๋๋ฅผ ์ง๋ณด์์ต๋๋ค.
ํด๊ฒฐ์๋ ์๋ต์์ ๋ฐ๋๋ก ๋ฌธ์ ๋ฅผ ๋ง์ถ๋ ๊ฒฝ์ฐ๋ผ๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค. ์ฆ guess๋ฅผ ์
๋ ฅํ๊ณ ๊ฒฐ๊ณผ๋ก ์๊ฒ๋๋ (num_str, num_bll)์ ํตํด ๋ต์ ์ถ๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด์ฃ .
์ผ์ข
์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ 8๊ฐ๋ก ๊ตฌ๋ถ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๋ธ๋ฃจํํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ๋ณด์
๋ ๋ฉ๋๋ค.
๋์ฌ ์ ์๋ ๊ฒฝ์ฐ๋ 3S0B, 0S3B, 1S2B, 1S0B, 0S1B, 2S0B, 1S1B, 0S2B ์
๋๋ค.
(S๋ ์คํธ๋ผ์ดํฌ ๊ฐ์, B์ ๋ณผ์ ๊ฐ์ ์
๋๋ค.)
ํด๊ฒฐ์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ์์ฑ ๊ฐ๋ฅํฉ๋๋ค.
numbers = [i for i in range(1, 10)]
while True:
init_guess = np.random.choice(nubers, size = 3, replace = False)
nubers.remove(init_guess[0])
nubers.remove(init_guess[1])
nubers.remove(init_guess[2])
pirnt("guess:", "".join([str(n) for n in init_guess]))
#human input
n_stk = int(input("n strikes:"))
n_bll = int(input("n balls :"))
response = (n_stk, n_bll)
if response == (3, 0) or reponse != (0, 0):
break
if response == (0, 3):
guesser = Guesser_0S3B(init_guess)
if response == (1, 2):
guesser = Guesser_0S3B(init_guess)
if response == (1, 0):
guesser = Guesser_0S3B(init_guess)
if response == (0, 1):
guesser = Guesser_0S3B(init_guess)
if response == (2, 0):
guesser = Guesser_0S3B(init_guess)
if response == (1, 1):
guesser = Guesser_0S3B(init_guess)
if response == (0, 2):
guesser = Guesser_0S3B(init_guess)
1๋ถํฐ 9๊น์ง์ ์ซ์์ค 3๊ฐ๋ฅผ ๊ณจ๋ผ guess๋ก ์ ํ๊ณ ์๋ 1๋ถํฐ 9๊น์ง๊ฐ ์๋ number์์ guess๋ก ๊ณ ๋ฅธ ๊ฒ๋ค์ ์ญ์ ํฉ๋๋ค.
๊ทธ ํ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋๋ ์ ํด๋์ค๋ฅผ ์คํ์ํต๋๋ค. ๋ง์ฝ (3, 0)์ธ ๊ฒฝ์ฐ ์ ๋ต์ ๋ง์ถ ๊ฒ์ด๊ธฐ์ ์ถ์ธก์ ํ์ง ์๊ณ break๋ฅผ ํตํด ๊ทธ๋ง๋ก๋๋ค. (0, 0)์ธ ๊ฒฝ์ฐ ๋จ์ number ์ค ๋ค์ guess๋ฅผ ์์ฑํ์ฌ ํ์ํฉ๋๋ค.
์ ์์๋ฅผ ํตํด ํด๊ฒฐ์ ํด๋์ค๋ฅผ ์์ฑ ๊ฐ๋ฅํฉ๋๋ค. ์ฝ๋๊ฐ ๊ฑฐ์ ๊ฐ๊ณ ๊ธธ์ด๊ฐ ๊ธธ๊ธฐ์ ์ฝ๋๋ ์๋ตํ๊ฒ ์ต๋๋ค.
์ถ์ธก๊ธฐ ํด๋์ค๋ ์ ํด๊ฒฐ์ ์ฝ๋์์ guesser๋ก ๋ฐ๋ ํด๋์ค๋ค์ด๋ผ ๋ณด์๋ฉด ๋ฉ๋๋ค.
์ฆ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ถ์ธก๊ธฐ ํด๋์ค๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ์ ๋ต ์ซ์๋ฅผ ์ถ์ธก์ ํ๊ฒ ๋ฉ๋๋ค.
(3, 0)๊ณผ (0, 0)์ ์ด ์ถ์ธก๊ธฐ ํด๋์ค๊ฐ ํ์ ์์ผ๋ฏ๋ก ์ด๊ฒ๋ค์ ์ ์ธํ 7๊ฐ์ ์ถ์ธก๊ธฐ ํด๋์ค๊ฐ ์๋๋ฐ ์ ๋ถ ๋ฐฉ๋ฒ์ ๊ฐ๊ธฐ ๋๋ฌธ์ 2๊ฐ์ง ๊ฒฝ์ฐ๋ง ์ฝ๋๋ฅผ ํตํด ํ์ธํ๊ฒ ์ต๋๋ค.
์ถ์ธกํ ์ซ์๊ฐ abc๋ผ ํ๋ฉด ์ด a, b, c ์ธ๊ฐ์ ์ซ์ ๋ชจ๋ ์ ๋ต ์ซ์์ด์ง๋ง ์๋ฆฌ๋ง ์ ๋ถ ํ๋ฆฐ ๊ฒฝ์ฐ์ ๋๋ค. ์ฆ ์ต๋ ๋ค์ฏ๋ฒ์ ์๋๋ก ์ ๋ต์ ์ฐพ์ ์ ์์ต๋๋ค.
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class Guesser_0S3B():
def __init__(self, init_guess):
self.init_guess = init_guess
self.branch_id = 1
def make_guess(self, response = None):
[a,b,c] = [self.init_guess[0],self.init_guess[1],self.init_guess[2])
if self.branch_id == 1: next_guess = [a,c,b]
if self.branch_id == 2: next_guess = [b,a,c]
if self.branch_id == 3: next_guess = [c,a,b]
if self.branch_id == 4: next_guess = [b,c,a]
if self.branch_id == 5: next_guess = [c,b,a]
self.branch_id += 1
return next_guess
acb, bac, cab, bca, cba ์์ผ๋ก ์ต๋ ๋ค์ฏ๋ฒ์ ์๋๋ก ์ ๋ต์ ์ฐพ์ ์ ์๋ค.
branch_id๋ก ์ถ์ธก๊ณผ์ ์ ๊ธฐ์ตํ๋๋ก ํ์๋ค.
๋ ๊ฐ์ ์ซ์๊ฐ ์ ๋ต ์ซ์์ด๋ฉฐ ์๋ฆฌ๊น์ง ๋ง๋ ๊ฒฝ์ฐ์ ๋๋ค.
| abx | axc | xbc | |
|---|---|---|---|
| abc | 2S0B | 2S0B | 2S0B |
| acb | 1S1B | 1S1B | 0S2B |
| bac | |||
| cab | |||
| bca | |||
| cba | 1S1B | 0S2B |
์ ํ์ ๊ฐ์ด ๊ฒฝ์ฐ๊ฐ ๋์ฌ ์ ์๋๋ฐ ํ๋ฅผ ํด์ํ์๋ฉด ์ ์ฒซ์งธ ์ค์ ab, ac, bc๊ฐ ์ ๋ต ์ซ์์ผ ๊ฒฝ์ฐ๋ฅผ ๋ปํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ์ชฝ ๊ฒฝ์ฐ๋ค์ด ์๋ฆฌ๋ฅผ ๋ฐ๊ฟจ์ ๊ฒฝ์ฐ์ด๊ณ ์.
์ฆ ์ฒ์์ b์ c์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟจ๋๋ฐ 0S2B๊ฐ ๋๋ฉด b์ c๊ฐ ์ ๋ต์ซ์์ ๋๋ค. ๊ทธ ์ธ์๋ a, b ํน์ a, c์ด๊ณ ์. ๊ทธํ cba์์ผ๋ก guess๋ก ํ์ฌ 1S1B์ธ ๊ฒฝ์ฐ a์ b๊ฐ, 0S2B์ธ ๊ฒฝ์ฐ a์ c๊ฐ ์ ๋ต ์ซ์์ ๋๋ค.
์ด๊ฑธ ํ ๋๋ก ์๋์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
class Guesser_2S0B():
def __init__(self, numbers, init_guess):
self.numbers = numbers
self.init_guess = init_guess
self.branch_id = 1
def make_guess(self, response=None):
[a,b,c] = [self.init_guess[0],self.init_guess[1],slef.init_guess[2]]
if self.branch_id == 1:
next_guess[a,c,b]
self.branch_id = 2
return next_guess
if self.branch_id == 2 and response == (0,2):
self.branch_id = "xbc"
if self.branch_id == 2 and response == (1,1):
next_guess = [c,b,a]
self.branch_id = 21
return next_guess
#--------------------------------------------
if self.branch_id == 21 and response == (1,1):
self.branch_id == "abx"
if self.branch_id == 21 and response == (0,2):
self.branch_id == "axc"
#--------------------------------------------
if self.branch_id == "xbc":
x = self.numbers.pop()
next_guess = [x,b,c]
return next_guess
if self.branch_id == "abx":
x = self.numbers.pop()
next_guess = [a,b,x]
return next_guess
if self.branch_id == "axc":
x = self.numbers.pop()
next_guess = [a,x,c]
return next_guess
์ ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์ด์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
์ ์์์ ๋น์ทํ๊ฒ ์ ์กฐํฉ ๋ง์ถ๊ธฐ ๊ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค.
import numpy as np
from itertools import permutations
# ์์ ํ๋ณด
COLORS = ["red", "blue", "green", "yellow", "purple", "orange"]
# ์ฌ์ฉ์ ์
๋ ฅ
def get_secret_color_combination():
while True:
user_input = input(f"๋น๋ฐ ์ ์กฐํฉ 3๊ฐ๋ฅผ ์
๋ ฅํ์ธ์ (์: red blue green): ").split()
if len(user_input) == 3 and len(set(user_input)) == 3
and all(c in COLORS for c in user_input):
return user_input
print("์
๋ ฅ์ด ์๋ชป๋์์ต๋๋ค. ๊ฐ๋ฅํ ์์:", COLORS)
# ํผ๋๋ฐฑ ํจ์
def get_feedback(guess, answer):
exact = sum([g == a for g, a in zip(guess, answer)])
partial = sum([(g in answer) and (g != answer[i]) for i, g in enumerate(guess)])
return exact, partial
# ์ถ์ธก ํด๋์ค
class ColorGuesser:
def __init__(self):
self.candidates = list(permutations(COLORS, 3))
self.prev_guess = None
self.first_guess_done = False
def make_guess(self, feedback=None):
if not self.first_guess_done:
# ์ฒซ ์ถ์ธก์ np.random.choice๋ก ๋ฌด์์๋ก ๋ฝ๊ธฐ
self.prev_guess = list(np.random.choice(COLORS, size=3, replace=False))
self.first_guess_done = True
return self.prev_guess
else:
# ์ด์ ํผ๋๋ฐฑ๊ณผ ์ผ์นํ๋ ํ๋ณด๋ง ๋จ๊ธฐ๊ณ ๋ฌด์์ ์ ํ
self.candidates = [
c for c in self.candidates
if get_feedback(list(c), self.prev_guess) == feedback
]
if not self.candidates:
raise ValueError("ํ๋ณด๊ฐ ์์ต๋๋ค. ์
๋ ฅ์ด ์๋ชป๋์์ ์ ์์ต๋๋ค.")
idx = np.random.choice(len(self.candidates))
self.prev_guess = list(self.candidates[idx])
return self.prev_guess
# ๊ฒ์ ์คํ
def play_color_game():
print("์ ์กฐํฉ ์ถ์ธก ๊ฒ์ - ์ปดํจํฐ๊ฐ ๋ง์ถฅ๋๋ค!")
secret = get_secret_color_combination()
guesser = ColorGuesser()
attempts = 0
feedback = None
while True:
guess = guesser.make_guess(feedback)
attempts += 1
print(f"[{attempts}] ์ปดํจํฐ ์ถ์ธก: {guess}")
feedback = get_feedback(guess, secret)
print(f" โ ์ ํ: {feedback[0]}๊ฐ, ์๋ง ๋ง์: {feedback[1]}๊ฐ")
if feedback[0] == 3:
print(f"\n ์ปดํจํฐ๊ฐ {attempts}๋ฒ ๋ง์ ๋น๋ฐ ์ ์กฐํฉ์ ๋ง์ท์ต๋๋ค!")
break
# ์คํ
if __name__ == "__main__":
play_color_game()
์ด๋๊น์ง ๋ฐฐ์ด python๊ณผ numpy์ np.random์ ์ด์ฉํ์ฌ ์ซ์์ผ๊ตฌ ์ฝ๋๋ฅผ ์์ฑ ๊ฐ๋ฅํ์์ต๋๋ค.
๋ํ ๋น์ทํ ์์ ์ธ ์ ์กฐํฉ ๋ง์ถ๊ธฐ ๊ฒ์ ๋ํ ์ฝ๋๋ก ์์ฑํ์์ต๋๋ค.
(์ ์กฐํฉ ๋ง์ถ๊ธฐ ๊ฒ์์ ๊ต์ฌ์ ์๋ ์์ )
์ฌ์ค ์ฌ๊ธฐ์ numpy๋ ๊ฑฐ์ ์ ์ฐ์๊ธฐ์ ์ฌ์ค์ python์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ํ์๋ค๊ณ ๋ด๋ ๋ ๋ฏ ํฉ๋๋ค.
์ง๊ธ๊น์ง ๊ต์ฌ๋ฅผ 4์ฅ๊น์ง ํ์์ต๋๋ค. ์คํฐ๋๋ฅผ 1์ฃผ์ฐจ๋น ํ ์ฅ์ฉ ๋๊ฐ๊ณ ์์ผ๋ฏ๋ก ๋น์ฐํ๊ธด ํฉ๋๋ค.
๋ค์์ ๊ณต๋ถํ 5์ฅ์ ์ํ์ ํ๋์ด๋ผ๋ ๋จ์์ ๋๋ค. 6์ฅ๊ณผ 7์ฅ์ ๊ฐ๊ฐ ๋ฏธ๋๋งฅ์ค์ ๋ชฌํ ์นด๋ฅผ๋ก ํธ๋ฆฌ ํ์๋ฒ์ ๋ํด ํ์ต์ ํ ๊ฒ์ธ๋ฐ 5์ฅ์ ์ด์ ๊ธฐ์ด๊ฐ ๋๋ ์ํ์ ํ๋์ ๋ฐ๋ฅธ ์ํ์ ๋ณํ๋ฅผ ์๋ ค์ค ์ํ ํด๋์ค์ ๋ํด ํ์ตํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ๋ถํฐ ์ธ๊ณต์ง๋ฅ์ ํ์ต์ ๊ดํ ์๊ณ ๋ฆฌ์ฆ์ ์์ธํ ํ์ตํ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด์ฉ๋ ์ ์ ์ด๋ ค์ ์ง๊ฒ ๊ฐ์ผ๋ ์ด์ฌํ ํด๋ณด์์ผ ๊ฒ ์ต๋๋ค. ์์ฆ ๋ ์จ๊ฐ ๋์์ง๊ณ ์๋๋ฐ ์ด ๊ธ์ ๋ณด์๋ ๋ถ๋ค ๋ชจ๋ ์์ํ ์ฌ๋ฆ ๋์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค!