Programming Complex
Algorithm in Swift
Kaz Yoshikawa
Background
• Swift について深く学びたい
• 超複雑なアルゴリズムを要する課題に取り込めばい
いのでは?
• そんな課題は…
Programming Complex Algorithm in Swift
Quick Review Rules
Shogi Rules
• 9x9の将棋盤を用意する
• 歩、香、桂、銀、金、角、飛、王の駒を使う
• 先手、後手交互に指す
• 敵陣内に移動、敵陣内で移動した場合は成る事ができる
• 金、王は成る事ができない
• 一度なった駒は元に戻せない
Shogi Rules
• 自駒の移動先に敵駒がある場合は取る事ができる
• 先に相手の王を取った方が勝ちとなる
• 王がどこに移動しても、相手の駒に取られてしまう状態
を詰みとし、勝負がついたものとする
• 取った駒は空いている場所に打つ事ができる
• 成った駒をとっても、打つときは成った状態で打てない
Shogi Rules
• 歩は同じ列に2つ置いてはいけない(2歩)
• 歩を打って、相手の王を詰めてはいけない(打ち歩
詰め)
• 歩、香、桂は次の手で移動できなくなる手は指して
はならない
• 千日手や相入玉などの特殊な状態がある
駒の動き
出典:早わかり将棋Book・日本将棋連盟
駒の動き
出典:早わかり将棋Book・日本将棋連盟
成り
出典:早わかり将棋Book・日本将棋連盟
成り
出典:早わかり将棋Book・日本将棋連盟
Pain in the Ass
• 間違いなく面倒くさそう
• C/C++ でもなかなか綺麗にかけなさそう
• 実は Objective-C で以前トライしていた
DEMO
将棋盤Kit
(仮)
将棋盤Kit
• Framework または Library
• 将棋の基本的な駒の動作・制限・ルールを実装
• 実際のAIには手を出さない…
• 絶対に…
• おそらく…
(仮)
Using Unicode for
identifiers
Using Unicode Names
• せっかくなので、積極的に日本語を使っていこう
• クラス名
• 変数名
• 関数名、メソッド名
• パラメータ名など
Unicode in type name




Capitalization Issue




Solution
1.タイプ名では英語を使う
• 変数は日本語で
2.日本語タイプ名にプレフィックスをつける






Using Unicode for
Variables, Parameters
• 変数名、パラメータ名、などでは大文字小文字問題
はなさそう
Unicodes for Identifiers
😀
🐶
🍎 



🀀
♞
☁


OK NG
Plural Issue
• 日本語は単数形・複数形を意識しない場合が多い
• object objects OK
• オブジェクト オブジェクト群 ?
• var pieces: Piece → var 駒s: Piece
Plural Issue
• 英語でも実は同じ問題がある
• Data の複数形は → 実は datum の複数形
• sheep の複数形は / fish の複数形?
• 文法を気にせず太く生きる
• (例)Toronto Maple Leafs
Naming Issue
Expressions
Implement Movement
• 動きは2種類
• 決まった方向へ決まったマスの数だけ移動
• 連続して移動
http://www.geocities.co.jp/Playtown/6157/oboeru/ugoki.html
Step Movement
Array of Tuple
Fly Movement
Checkmate, Foul
and other rules
Now Printing
誠意、実装中
DEMO
Conclusion
Hasn't come that far yet..
そこまで、深いところには、

まだだどりついていなかった…
Last word
–Kaz Yoshikawa
May the Swift be with you
Thank you
kyoshikawa@electricwoods.com
Kaz Yoshikawa

More Related Content

PDF
Extracting text from PDF (iOS)
PDF
Programming Language Swift Overview
PDF
Idioms in swift 2016 05c
PDF
Newsstand
PPT
Everything you need for your cd & dvd
PPTX
الوسائط المتعددة وعناصرها-1
PPTX
Spring finished
PDF
En Venta/Renta Casa en condominio a 7 min de Sanata Fe,
Extracting text from PDF (iOS)
Programming Language Swift Overview
Idioms in swift 2016 05c
Newsstand
Everything you need for your cd & dvd
الوسائط المتعددة وعناصرها-1
Spring finished
En Venta/Renta Casa en condominio a 7 min de Sanata Fe,

Viewers also liked (17)

PDF
Juniper Wi-Fi
PPTX
We're abcd & dvd ltd
DOCX
Ngay hoi isic
PDF
Clowds collaborate
PPTX
обл конкур эко_безопасность
PPT
Tarea 5 cuál seria la forma para que la edu del siglo xxi
PPTX
керженец
DOCX
Este es el codigo del primer ejercicio que desarrollamos en clases que lleva ...
PPTX
A divine devotion
PDF
Getting started
PPTX
программашкола
PPTX
я и класс
PPTX
Aartselaar Aquafin water , Environmental water plant .
PDF
Ameril herzallah ludevese_nicomel_rifai (applied statistics project)
PPT
Tarea 4 como considera su incursion en el entorno educativo
PDF
Byline: Harris CapRock Communications - "Global Maritime Communications: Deli...
Juniper Wi-Fi
We're abcd & dvd ltd
Ngay hoi isic
Clowds collaborate
обл конкур эко_безопасность
Tarea 5 cuál seria la forma para que la edu del siglo xxi
керженец
Este es el codigo del primer ejercicio que desarrollamos en clases que lleva ...
A divine devotion
Getting started
программашкола
я и класс
Aartselaar Aquafin water , Environmental water plant .
Ameril herzallah ludevese_nicomel_rifai (applied statistics project)
Tarea 4 como considera su incursion en el entorno educativo
Byline: Harris CapRock Communications - "Global Maritime Communications: Deli...
Ad

Programming Complex Algorithm in Swift