-
Notifications
You must be signed in to change notification settings - Fork 28
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
[Shogi] Add and fix buggy test samples #358
Conversation
|
初期盤面での検証だが、駒を複数(同じもの二枚でも)持っている場合はちゃんと生成される。一種一枚の時だけ生成されない(歩はいけるけど) |
飛車とかの駒打ちの時にも二歩条件がかかっているっぽい。自分の歩が存在するラインにあらゆる駒を置けなくなっている |
とりあえずテストケースとして
を追加してマージします。 |
@youyou-ku マージはちょっとまってもらっていいですか?テストケース追加したらテスト落ちますよね |
tests/test_shogi.py
Outdated
#c_action = jnp.zeros(27 * 81, dtype=jnp.int8) | ||
#c_action = c_action.at[1701:2187].set(1) | ||
#c_action = c_action.at[jnp.arange(81 * 21 + 6, 81 * 27, 9)].set(1) | ||
#c_action = c_action.at[jnp.arange(5, 81, 9)].set(1) | ||
#assert (legal_action == c_action).all |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここよくわからないです。
多分べつに all
で判定しなくても、いいと思うんですけど
テストももう少しコメントしたりわかりやすくしてほしいです
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
座標していはなるべく xy2i
を使ってください
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@youyou-ku visualize使って画像も追加してください(他のテスト参考にしてください)
l+B6l/6k2/3pg2P1/p6p1/1pP1pB2p/2p3n2/P+r1GP3P/4KS1+s1/LNG5L b RGN2sn6p 1 |
tests/test_shogi.py
Outdated
# 成駒のpromotion判定 | ||
sfen = "9/2+B1G1+P2/9/9/9/9/9/9/9 b - 1" | ||
legal_action = _to_direction(_legal_actions(_sfen_to_state(sfen))) | ||
legal_action = jnp.where(legal_action, 1, 0) | ||
# promotionは生成されてたらダメ | ||
assert jnp.all(legal_action[810:] == 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このテスト意味がわからないんですけどどういう意味ですか?
legal_action = jnp.where(legal_action, 1, 0)
で全部0になってますよね?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
とりあえずコメントを参考に修正済
tests/test_shogi.py
Outdated
# 三列目には打てる | ||
assert (legal_action[81*22+1:81*23:9] == False).all() | ||
assert (legal_action[81*22:81*23:9] == False).all() | ||
assert (legal_action[81*21+5:81*22:9] == False).all() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
== False
みたいなコードを書くのはやめましょう
(~legal_action[81*21+5:81*22:9]).all()
cshogiと挙動が違う盤面を探す。とりあえずは挙動が変わってしまいそうな(両王手など)盤面をいくつかサンプルで入れて比較、みたいなことをする
cshogiでランダムな盤面を作って、それをStateに変換し、それぞれのlegal_action_maskを比較、みたいなことも必要か
検証用コード