開発環境
- OS X Mavericks - Apple(OS)
- Xcode 6.0 Beta 6
- Swift (プログラミング言語)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の6章(データ構造と動的メモリ: 架け橋を築く)、プールパズル(p.287)をSwiftで考えてみる。
プールパズル(p.287)
コード(Xcode)
main.swift
//
// main.swift
// sample287
//
// Created by kamimura on 9/4/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
class Island {
let name:String
let opens:String
let closes:String
var next:Island?
init(name:String, opens:String, closes:String, island:Island? = nil) {
self.name = name
self.opens = opens
self.closes = closes
self.next = island
}
func display() {
println("名前:\(self.name)\n 営業時間:\(self.opens)-\(self.closes)")
self.next?.display()
}
}
var start:Island? = nil
var i:Island? = nil
var next:Island? = nil
while true {
let name:String = input()
if name == "" {
break
}
next = Island(name: name, opens: "9:00", closes: "17:00")
if start == nil {
start = next
} else {
i?.next = next
}
i = next
}
start?.display()
stdio.swift
//
// stdio.swift
// stdio
//
// Created by kamimura on 8/21/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
// 標準入力(STDIN)から読み込む
func input(msg:String = "") -> String {
print(msg)
var in_fh = NSFileHandle.fileHandleWithStandardInput()
var data = in_fh.availableData
var s = NSString(data: data, encoding: NSUTF8StringEncoding)
s = s.substringToIndex(s.length - 1)
return s
}
func read(path:String) -> String? {
return String.stringWithContentsOfFile(path)
}
func print(s:String, path:String, end:String = "\n") {
(s + end).writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
}
func error(msg:String) {
let stderr = NSFileHandle.fileHandleWithStandardError()
stderr.writeData((msg + "\n").dataUsingEncoding(NSUTF8StringEncoding)!)
exit(1)
}
// コマンドライン引数
let argv:[String] = NSProcessInfo.processInfo().arguments.map({(x:AnyObject) -> String in x as String})
入出力結果(Console Output, Terminal)
$ ./sample287 アトランティス ティッチマーシュ島 名前:アトランティス 営業時間:9:00-17:00 名前:ティッチマーシュ島 営業時間:9:00-17:00 $
0 コメント:
コメントを投稿