h******3 发帖数: 351 | 1 the book has one solution for many calls: composing one hashtable for 19,683
boards, each board might have value 0,1,2
return hashtableWinner[board].
I am a little confused about the idea. I am assuming one board might have 3
different results: unknown (it might be a tie, or any other result), 1 (blue
win), 2 (red win). Based on this assumption, each board can have one
specific value. That why we can return hashtableWinner[board].
Also, for the only one call methods, that means: the input is a specific
board, we just need check who is the winner.
Am I right? | l****o 发帖数: 924 | 2 你没弄明白19,683这个数是怎么来的,这是3的9次方。
TTT的board有9个格子,每个格子有三种可能的状态, 空的,X的,O的,所以所有的
TTT的可能board状态不超过3^9
但是现实中是不到19683的,因为有的game不用填满所有格子就结束了,结束时空着的
格子只有空状态,没有X/O的可能了。
如果对空间木有要求,可以用长度为9的一维数组,如果对空间比较苛刻,每个board应
该被hash成一个18 bit的数,每2 bit表示一格,值为00, 01, 10。
每个winner有8种win的方式,挨个验证就行啦。如果还想聪明的方法,可以把要查的
winner状态设为2,每个board的8种连线都加起来算出值,如果有等于6的就是我们要查
的目标winner赢了。 | h******3 发帖数: 351 | 3 Are you saying 19,683 finished boards? I am assuming it includes both
finished and unfinished.
【在 l****o 的大作中提到】 : 你没弄明白19,683这个数是怎么来的,这是3的9次方。 : TTT的board有9个格子,每个格子有三种可能的状态, 空的,X的,O的,所以所有的 : TTT的可能board状态不超过3^9 : 但是现实中是不到19683的,因为有的game不用填满所有格子就结束了,结束时空着的 : 格子只有空状态,没有X/O的可能了。 : 如果对空间木有要求,可以用长度为9的一维数组,如果对空间比较苛刻,每个board应 : 该被hash成一个18 bit的数,每2 bit表示一格,值为00, 01, 10。 : 每个winner有8种win的方式,挨个验证就行啦。如果还想聪明的方法,可以把要查的 : winner状态设为2,每个board的8种连线都加起来算出值,如果有等于6的就是我们要查 : 的目标winner赢了。
| l****o 发帖数: 924 | 4 跟是否finish没关系
【在 h******3 的大作中提到】 : Are you saying 19,683 finished boards? I am assuming it includes both : finished and unfinished.
| h******3 发帖数: 351 | 5 can win/lose be based on unfinished board?
【在 l****o 的大作中提到】 : 跟是否finish没关系
| h******3 发帖数: 351 | 6 Oh, I think the solution can be interpreted as follows:
if the board is
012
210
111
F(012210111) and expected output is 1
683
3
blue
【在 h******3 的大作中提到】 : the book has one solution for many calls: composing one hashtable for 19,683 : boards, each board might have value 0,1,2 : return hashtableWinner[board]. : I am a little confused about the idea. I am assuming one board might have 3 : different results: unknown (it might be a tie, or any other result), 1 (blue : win), 2 (red win). Based on this assumption, each board can have one : specific value. That why we can return hashtableWinner[board]. : Also, for the only one call methods, that means: the input is a specific : board, we just need check who is the winner. : Am I right?
| l****o 发帖数: 924 | 7 我觉得我说的已经很明白了啊~~
难道我真的木有描述技术问题的能力??
哎哎,以后看见技术话题不回帖了。 | l****o 发帖数: 924 | 8 童鞋,你还是木有明白, 010001200的情况,你准备输出虾米捏?
【在 h******3 的大作中提到】 : Oh, I think the solution can be interpreted as follows: : if the board is : 012 : 210 : 111 : F(012210111) and expected output is 1 : : 683 : 3 : blue
|
|