-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add 5x5 Go env #21
Add 5x5 Go env #21
Conversation
しょうもないですけど5×5の碁ってなんかおもろいです |
再帰はたぶんですけど本質的に動的に深さが決まるので動かない気がします😭 |
でもとりあえず動いてるものを書いてテスト作るという意味ではいいと思います! |
😭😭😭 |
やっぱ動かないですね |
固定長forかなんかうまいこと行列演算考えるしかない。。。 |
For以外のアイデアだと、囲み方のテンプレートというかパターンを全通り持っておいて、それと一致するかを判断するとか? |
while(True)で再帰まがいのことができないかという案が出てきました |
@sotetsuk |
駄目ですね |
固定長じゃないと思われるので Forもn=実行時最初に決まる値で以後不変、かつ長くない |
んーというか、まあループで実装はできると思いますがwhileでもforでも最大いくつで終わるのかわかってないと駄目です |
一旦ここは置いておいてもいいかもしれないです正直。他のところを先にやっても |
しかし「囲まれているか」の判定って囲碁の根幹を成しているといいますか、合法手の判定にも使われますし不可欠な機能です。。。 |
forで回せる回数の上限って流石に1000とか10000くらいは行けますよね…? |
んーどうだろうな。。。試してみないとなんとも。。。 |
まあでもforでかけるならそれがいいです。 |
再帰よりは |
まさかbreak文も可変長と見なされたりするんですか…? |
_is_surrounded()
_is_surrounded_v2()
|
MiniGoStateの中身
関数 |
legal_action返してればルール違反負けはないって考えであってます? |
大丈夫です! |
legal_actionが合法手になるテストimport numpy as np
from pgx.mini_go import init, legal_actions, show, step
state = init()
done = False
while not done:
actions = np.where(legal_actions(state))
if actions[0].size == 0:
a = None
else:
i = np.random.randint(0, actions[0].size)
a = np.array([actions[0][i], actions[1][i]])
state, _, done = step(state=state, action=a)
if state.turn[0] > 300:
break |
これを数十回ほど回しましたがルール違反で終了することはありませんでした |
了解です! |
明日の朝に見返して、問題なければマージします! |
cf. #18