[OSX]Mandelbrot Set Playground

<p>Swiftは進化が早い。Playgroundでフラクタル！と喜んでいたが、最新の環境で実行するとエラー。残念。</p>

<a href="https://developer.apple.com/swift/blog/?id=26">New Playgrounds Part 2 - Sources</a>

<p>このまま諦めるのは悔しいので、動作するように修正してみた。</p>

<p>このブログで公開されているプロジェクトは、Palygroundプロジェクトにソースファイルをリソースとして追加する例だ。プロジェクトを開くといきなりエラー。そして、問題のコードがない！と戸惑ってしまうが、Viewメニューの Navigators / Show Project Navigator を選択して、プロジェクト・ウィンドウの左側にソースファイルを表示させると問題のコードが見えるようになる。</p>

<p>修正内容を列挙すると以下のとおり。</p>

## ComplexNumbers.swift

<pre><code>3c3
< public struct Complex: Equatable, Printable {
---
> public struct Complex: Equatable, CustomStringConvertible {
18c18
<             let p = -2
---
>             // let p = -2
68c68
< public struct ComplexRect: Equatable, Printable {
---
> public struct ComplexRect: Equatable, CustomStringConvertible {
</code></pre>

<p>PrintableプロトコルはCustomStringConvertibleと名前が変わったので変更する。18行めのコードは無意味なのでコメントアウトする。</p>

## MandelbrotView.swift
<pre><code>16c16
<         println("Elapsed time: \(elapsedTime) seconds")
---
>         Swift.print("Elapsed time: \(elapsedTime) seconds")
55c55
<                 var c_f : CGFloat = CGFloat(c)
---
>                 let c_f : CGFloat = CGFloat(c)
76c76
<     func viewCoordinatesToComplexCoordinates(#x: Double, y: Double, rect: CGRect) -> Complex {
---
>     func viewCoordinatesToComplexCoordinates(x: Double, y: Double, rect: CGRect) -> Complex {
93,94c93,94
<         var width:Double = Double(rect.size.width)
<         var height:Double = Double(rect.size.height)
---
>         let width:Double = Double(rect.size.width)
>         let height:Double = Double(rect.size.height)
97,99c97,99
<         for x in stride(from: 0, through: width, by: blockiness) {
<             for y in stride(from: 0, through: height, by: blockiness) {
<                 let cc = viewCoordinatesToComplexCoordinates(x: x, y: y, rect: rect)
---
>         for x in 0.stride(through: width, by: blockiness) {
>             for y in 0.stride(through: height, by: blockiness) {
>                 let cc = viewCoordinatesToComplexCoordinates(x, y: y, rect: rect)
105c105
<         println("Calculation time: \(elapsedTime)")
---
>         Swift.print("Calculation time: \(elapsedTime)")

</code></pre>

<p>printlnをprintに変更する。この名前だと衝突するようなので名前空間Swiftをつける。値の変更がないという警告が出ている変数への代入をvarからletに変更する。stride関数の仕様が変わったようなので変更する。</p>

## Contents.swift
<pre><code>19c19
<     println("Exploring: \(triple.0)")
---
>     print("Exploring: \(triple.0)")
</code></pre>

<p>printlnをprintに変更する。</p>

<p>エラーが取れて、図が表示された。</p>

![Mandelbrot_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/12540/8369cdfd-c6c1-12a9-1839-fe4d0e91b0b7.jpeg)
![Mandelbrot_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/12540/a8ef3653-f9c1-9dc7-2398-749ad758d00c.jpeg)
![Mandelbrot_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/12540/cc3760f7-868a-bb41-87ef-04c349f92476.jpeg)
![Mandelbrot_4.jpg](https://qiita-image-store.s3.amazonaws.com/0/12540/8f83e7a8-0b7b-be97-d9a0-cda39f9139a4.jpeg)


関連情報
<a href="https://developer.apple.com/swift/blog/?id=26">New Playgrounds Part 2 - Sources</a><br />

【Cocoa練習帳】
<a href="http://www.bitz.co.jp/weblog/">http://www.bitz.co.jp/weblog/</a><br />
<a href="http://ameblo.jp/bitz/">http://ameblo.jp/bitz/</a>（ミラー・サイト）<br />
<a href="https://t.co/6P3h2jtbRk</a>note<br />
<a href="http://qiita.com/m_yukio">Qiita</a><br />