狠狠撸

狠狠撸Share a Scribd company logo
リバーシの条件判定を
LINQ(りんきゅー)で
momo_*(@tututen)
自己紹介
北見から来ました
リバーシの条件判定を濒颈苍辩で
リバーシの条件判定を濒颈苍辩で
自己紹介
北見から来ました
最近CodeIQにてショートコーディングが
熱い
リバーシの条件判定を濒颈苍辩で
自己紹介
北見から来ました
最近CodeIQにてショートコーディングが熱い
分身
Twitter: @tututen
facebook: きっとどこかにいる
本题
リバーシの条件判定?
リバーシの条件判定
=石が裏返せるか
でも、(5分じゃ)
逐次説明できないので
_人人人人人人人_
>?Demo見てね?<
 ̄Y^Y^Y^Y^Y^Y ̄
Demo
(後で资料付きで)
対戦しましょ?
対戦しましょ?
ご静聴
ありがとう
ございました
Presented By momo_*(@tututen)
资料
资料目次
TestAll & TestHalf
選択した自分の周りのマス
自分の周りに相手の石が存在するか?
各相対位置方向に延長する
自分の石の手前まで取得
各相対位置方向に自分の石があるか
自分の石で挟んだマスがすべて相手の石である
ReversiできるWindow
LINQが動作するWindow
LINQが動く条件
戻り値が盤面上の
IEnumerable<System.Drawing.Point>
であること
盤面上の変数は「x」「y」「board」
該当するPointはオレンジになります
TestAll(例)
全部のマスをオレンジにする
TestAll(例)
全部のマスをオレンジにする
TestHalf(例)
網目状にマスをオレンジにする
TestHalf(例)
網目状にマスをオレンジにする
偶数 奇数
選択した自分の周りのマス
自分との相対位置を考えてみる
(-1,1) (0, 1) (1, 1)
(-1,0) (1, 0)
(-1,-1) (0, -1) (1, -1)
選択した自分の周りのマス
自分の位置を(x, y)、
相対位置を(Vx, Vy)と置けば
LINQで書けますよね!
選択した自分の周りのマス
最後のWhereはBoardの範囲設定
選択した自分の周りのマス
角?辺の判定もばっちし
自分の周りに相手の石が存在するか?
前提:上のような状況
自分の周りに相手の石が存在するか?
自分と反転した条件を加えるだけでよい
自分の周りに相手の石が存在するか?
自分と反転した条件を加えるだけでよい
各相対位置方向に延長する
やたらと追加されてます
各相対位置方向に延長する
(x, y)の相対位置に戻す
各相対位置方向に延長する
各相対位置方向に定数倍(1?7倍)
各相対位置方向に延長する
定数倍した位置がBoard上か確認
各相対位置方向に延長する
各相対位置方向のIEnumerable<Point>
をを作る
各相対位置方向に延長する
平滑化する
各相対位置方向に延長する
こうなります
自分の石の手前まで取得
ついにエディタの表示倍率が下がりました
自分の石の手前まで取得
TakeWhileを追加
自分の石の手前まで取得
完成っぽい?
自分の石の手前まで取得
まだまだバグはあるさー
各相対位置方向に自分の石があるか
追加部分はここ
各相対位置方向に自分の石があるか
この部分は全く一緒なので省略
各相対位置方向に自分の石があるか
各相対方向に自分の石があるかチェック
無ければ、ひっくり返せないと判断
各相対位置方向に自分の石があるか
もうちょい頑張りましょう(上方向)
自分の石で挟んだマスがすべて相手の石である
追加部分はここ
自分の石で挟んだマスがすべて相手の石である
下のSelectの中身と一緒なので省略
自分の石で挟んだマスがすべて相手の石である
挟んだマス目の石がすべて相手の石である
自分の石で挟んだマスがすべて相手の石である
Misson Complete
全文(倍率100%)

More Related Content

More from Fumihito Yokoyama (17)

投け?銭叠辞虫の飞别产クライアントを作ってみた
投け?銭叠辞虫の飞别产クライアントを作ってみた投け?銭叠辞虫の飞别产クライアントを作ってみた
投け?銭叠辞虫の飞别产クライアントを作ってみた
Fumihito Yokoyama
?
Clrh87 minecraftて?のタートルのこ?紹介
Clrh87 minecraftて?のタートルのこ?紹介Clrh87 minecraftて?のタートルのこ?紹介
Clrh87 minecraftて?のタートルのこ?紹介
Fumihito Yokoyama
?
Ohotech 特盛#5 长距离运転の考察ver2
Ohotech 特盛#5 长距离运転の考察ver2Ohotech 特盛#5 长距离运転の考察ver2
Ohotech 特盛#5 长距离运転の考察ver2
Fumihito Yokoyama
?
Code jp2013て?行った ショートコーテ?ィンク? について
Code jp2013て?行った ショートコーテ?ィンク? についてCode jp2013て?行った ショートコーテ?ィンク? について
Code jp2013て?行った ショートコーテ?ィンク? について
Fumihito Yokoyama
?
长距离运転の考察
长距离运転の考察长距离运転の考察
长距离运転の考察
Fumihito Yokoyama
?
Clrh81 windowsで定期的にキャプチャするために
Clrh81 windowsで定期的にキャプチャするためにClrh81 windowsで定期的にキャプチャするために
Clrh81 windowsで定期的にキャプチャするために
Fumihito Yokoyama
?
monoを使ってlt countdowntimerを動かしてみる
monoを使ってlt countdowntimerを動かしてみるmonoを使ってlt countdowntimerを動かしてみる
monoを使ってlt countdowntimerを動かしてみる
Fumihito Yokoyama
?
密着!わたしのコンソールアフ?リ开発环境
密着!わたしのコンソールアフ?リ开発环境密着!わたしのコンソールアフ?リ开発环境
密着!わたしのコンソールアフ?リ开発环境
Fumihito Yokoyama
?
尝颈苍辩で画像処理
尝颈苍辩で画像処理尝颈苍辩で画像処理
尝颈苍辩で画像処理
Fumihito Yokoyama
?
LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話
Fumihito Yokoyama
?
Ldd kitami(宣伝用 clrh70)
Ldd kitami(宣伝用 clrh70)Ldd kitami(宣伝用 clrh70)
Ldd kitami(宣伝用 clrh70)
Fumihito Yokoyama
?
関数型忘年会尝迟用
関数型忘年会尝迟用関数型忘年会尝迟用
関数型忘年会尝迟用
Fumihito Yokoyama
?
Ohotech #8 tututen pdf用
Ohotech #8 tututen pdf用Ohotech #8 tututen pdf用
Ohotech #8 tututen pdf用
Fumihito Yokoyama
?
忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞
忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞
忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞
Fumihito Yokoyama
?
Pysap#3.1 Pythonでショートコーディング
Pysap#3.1 PythonでショートコーディングPysap#3.1 Pythonでショートコーディング
Pysap#3.1 Pythonでショートコーディング
Fumihito Yokoyama
?
コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)
Fumihito Yokoyama
?
コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)
Fumihito Yokoyama
?
投け?銭叠辞虫の飞别产クライアントを作ってみた
投け?銭叠辞虫の飞别产クライアントを作ってみた投け?銭叠辞虫の飞别产クライアントを作ってみた
投け?銭叠辞虫の飞别产クライアントを作ってみた
Fumihito Yokoyama
?
Clrh87 minecraftて?のタートルのこ?紹介
Clrh87 minecraftて?のタートルのこ?紹介Clrh87 minecraftて?のタートルのこ?紹介
Clrh87 minecraftて?のタートルのこ?紹介
Fumihito Yokoyama
?
Ohotech 特盛#5 长距离运転の考察ver2
Ohotech 特盛#5 长距离运転の考察ver2Ohotech 特盛#5 长距离运転の考察ver2
Ohotech 特盛#5 长距离运転の考察ver2
Fumihito Yokoyama
?
Code jp2013て?行った ショートコーテ?ィンク? について
Code jp2013て?行った ショートコーテ?ィンク? についてCode jp2013て?行った ショートコーテ?ィンク? について
Code jp2013て?行った ショートコーテ?ィンク? について
Fumihito Yokoyama
?
Clrh81 windowsで定期的にキャプチャするために
Clrh81 windowsで定期的にキャプチャするためにClrh81 windowsで定期的にキャプチャするために
Clrh81 windowsで定期的にキャプチャするために
Fumihito Yokoyama
?
monoを使ってlt countdowntimerを動かしてみる
monoを使ってlt countdowntimerを動かしてみるmonoを使ってlt countdowntimerを動かしてみる
monoを使ってlt countdowntimerを動かしてみる
Fumihito Yokoyama
?
密着!わたしのコンソールアフ?リ开発环境
密着!わたしのコンソールアフ?リ开発环境密着!わたしのコンソールアフ?リ开発环境
密着!わたしのコンソールアフ?リ开発环境
Fumihito Yokoyama
?
LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話
Fumihito Yokoyama
?
忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞
忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞
忙しい人のための厂辫丑颈苍虫 入门 诲别尘辞
Fumihito Yokoyama
?
Pysap#3.1 Pythonでショートコーディング
Pysap#3.1 PythonでショートコーディングPysap#3.1 Pythonでショートコーディング
Pysap#3.1 Pythonでショートコーディング
Fumihito Yokoyama
?
コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)
Fumihito Yokoyama
?
コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)コードゴルフのススメ(颁言语)
コードゴルフのススメ(颁言语)
Fumihito Yokoyama
?

リバーシの条件判定を濒颈苍辩で