Top Banner
Programming Complex Algorithm in Swift Kaz Yoshikawa
37

Programming Complex Algorithm in Swift

Aug 06, 2015

Download

Engineering

Kaz Yoshikawa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programming Complex Algorithm in Swift

Programming Complex Algorithm in Swift

Kaz Yoshikawa

Page 2: Programming Complex Algorithm in Swift

Background

• Swift について深く学びたい

• 超複雑なアルゴリズムを要する課題に取り込めばいいのでは?

• そんな課題は…

Page 3: Programming Complex Algorithm in Swift
Page 4: Programming Complex Algorithm in Swift

Quick Review Rules

Page 5: Programming Complex Algorithm in Swift

Shogi Rules• 9x9の将棋盤を用意する

• 歩、香、桂、銀、金、角、飛、王の駒を使う

• 先手、後手交互に指す

• 敵陣内に移動、敵陣内で移動した場合は成る事ができる

• 金、王は成る事ができない

• 一度なった駒は元に戻せない

Page 6: Programming Complex Algorithm in Swift

Shogi Rules• 自駒の移動先に敵駒がある場合は取る事ができる

• 先に相手の王を取った方が勝ちとなる

• 王がどこに移動しても、相手の駒に取られてしまう状態を詰みとし、勝負がついたものとする

• 取った駒は空いている場所に打つ事ができる

• 成った駒をとっても、打つときは成った状態で打てない

Page 7: Programming Complex Algorithm in Swift

Shogi Rules• 歩は同じ列に2つ置いてはいけない(2歩)

• 歩を打って、相手の王を詰めてはいけない(打ち歩詰め)

• 歩、香、桂は次の手で移動できなくなる手は指してはならない

• 千日手や相入玉などの特殊な状態がある

Page 8: Programming Complex Algorithm in Swift

駒の動き 出典:早わかり将棋Book・日本将棋連盟

Page 9: Programming Complex Algorithm in Swift

駒の動き 出典:早わかり将棋Book・日本将棋連盟

Page 10: Programming Complex Algorithm in Swift

成り 出典:早わかり将棋Book・日本将棋連盟

Page 11: Programming Complex Algorithm in Swift

成り 出典:早わかり将棋Book・日本将棋連盟

Page 12: Programming Complex Algorithm in Swift

Pain in the Ass

• 間違いなく面倒くさそう

• C/C++ でもなかなか綺麗にかけなさそう

• 実は Objective-C で以前トライしていた

Page 13: Programming Complex Algorithm in Swift

DEMO

Page 14: Programming Complex Algorithm in Swift

将棋盤Kit(仮)

Page 15: Programming Complex Algorithm in Swift

将棋盤Kit• Framework または Library

• 将棋の基本的な駒の動作・制限・ルールを実装

• 実際のAIには手を出さない…

• 絶対に…

• おそらく…

(仮)

Page 16: Programming Complex Algorithm in Swift

Using Unicode for identifiers

Page 17: Programming Complex Algorithm in Swift

Using Unicode Names• せっかくなので、積極的に日本語を使っていこう

• クラス名

• 変数名

• 関数名、メソッド名

• パラメータ名など

Page 18: Programming Complex Algorithm in Swift

Unicode in type name

Page 19: Programming Complex Algorithm in Swift

Capitalization Issue

Page 20: Programming Complex Algorithm in Swift

Solution1.タイプ名では英語を使う

• 変数は日本語で

2.日本語タイプ名にプレフィックスをつける

Page 21: Programming Complex Algorithm in Swift

Using Unicode for Variables, Parameters

• 変数名、パラメータ名、などでは大文字小文字問題はなさそう

Page 22: Programming Complex Algorithm in Swift

Unicodes for Identifiers😀

🐶

🍎

🀀

♞☁

OK NG

Page 23: Programming Complex Algorithm in Swift

Plural Issue

• 日本語は単数形・複数形を意識しない場合が多い

• object ↔ objects OK

• オブジェクト ↔ オブジェクト群 ?

• var pieces: Piece → var 駒s: Piece

Page 24: Programming Complex Algorithm in Swift

Plural Issue• 英語でも実は同じ問題がある

• Data の複数形は → 実は datum の複数形

• sheep の複数形は / fish の複数形?

• 文法を気にせず太く生きる

• (例)Toronto Maple Leafs

Page 25: Programming Complex Algorithm in Swift

Naming Issue

Page 26: Programming Complex Algorithm in Swift

Expressions

Page 27: Programming Complex Algorithm in Swift

Implement Movement• 動きは2種類

• 決まった方向へ決まったマスの数だけ移動

• 連続して移動

http://www.geocities.co.jp/Playtown/6157/oboeru/ugoki.html

Page 28: Programming Complex Algorithm in Swift

Step Movement

Array of Tuple

Page 29: Programming Complex Algorithm in Swift

Fly Movement

Page 30: Programming Complex Algorithm in Swift

Checkmate, Foul and other rules

Page 31: Programming Complex Algorithm in Swift

Now Printing

誠意、実装中

Page 32: Programming Complex Algorithm in Swift

DEMO

Page 33: Programming Complex Algorithm in Swift

Conclusion

Page 34: Programming Complex Algorithm in Swift

Hasn't come that far yet..

そこまで、深いところには、まだだどりついていなかった…

Page 35: Programming Complex Algorithm in Swift

Last word

Page 36: Programming Complex Algorithm in Swift

–Kaz Yoshikawa

“May the Swift be with you”

Page 37: Programming Complex Algorithm in Swift

Thank you

[email protected] Yoshikawa