開発環境
- OS X Mavericks - Apple(OS)
- Xcode 6.0 Beta 6
- Swift (プログラミング言語)
Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 9(Repeating Code Using Loops)、9.10(Exercises) 15.をSwiftで考えてみる。
9.10(Exercises) 15.
コード(Xcode)
main.swift
//
// main.swift
// sample15
//
// Created by kamimura on 9/20/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
println("13.")
var i:Int = 1
while i <= 7 {
println("T" * i)
i += 1
}
println("14.")
i = 6
while i >= 0 {
println(" " * i + "T" * (7 - i))
i -= 1
}
string.swift
//
// string.swift
// string
//
// Created by kamimura on 8/10/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
extension String {
var swapcaseString:String {
var result: String = ""
for ch in self {
let s = String(ch)
result += s.uppercaseString == s ? s.lowercaseString : s.uppercaseString
}
return result
}
var isUpper:Bool { return self.uppercaseString == self }
var isLower:Bool { return self.lowercaseString == self }
var length:Int { return (self as NSString).length }
var strip:String { return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())}
var floatValue:Float { return (self as NSString).floatValue }
var doubleValue:Double { return (self as NSString).doubleValue }
func count(sub:String) -> Int {
var result:Int = 0
var s = self
let index:String.Index = "a".endIndex
while s != "" {
if s.hasPrefix(sub) {
result += 1
s = s.substringFromIndex(sub.endIndex)
} else {
s = s.substringFromIndex(index)
}
}
return result
}
func find(sub:String, start:Int = 0, end:Int? = nil) -> Int {
var s = self as NSString
var s_temp = s.substringFromIndex(start)
let end_temp:Int = end != nil ? end! : s.length
for i in start..<end_temp {
if (s_temp.hasPrefix(sub)) {
return i
}
s_temp = s.substringFromIndex(i + 1) as NSString
}
return -1
}
func indexAt(i:Int) -> String {
if i >= 0 {
return (self as NSString).substringWithRange(NSRange(location: i, length: 1))
}
let new_i = self.length + i
return (self as NSString).substringWithRange(NSRange(location: new_i, length: 1))
}
func replace(old_str:String, new_str:String) -> String {
return self.stringByReplacingOccurrencesOfString(old_str, withString: new_str)
}
func slice(start:Int=0, end:Int?=nil) -> String {
let s = self as NSString
var new_end:Int
if (end != nil) {
new_end = end!
} else {
new_end = s.length
}
return s.substringWithRange(NSRange(location: start, length:new_end - start))
}
func split(sep:String = "") -> [String] {
var result:[String] = []
if (sep == "") {
for ch in self {
result.append(String(ch))
}
return result
}
var s:String = self
var len = sep.length
var temp:String = ""
while s != "" {
if s.hasPrefix(sep) {
if temp != "" {
result.append(temp)
temp = ""
}
s = s.slice(start: len)
} else {
temp += s.slice(start: 0, end: 1)
s = s.slice(start: 1)
}
}
if temp != "" {
result.append(temp)
}
return result
}
var reversed:String { return "".join(self.split().reverse()) }
func repeat(n:Int) -> String {
var result:String = ""
for i in 0..<n {
result += self
}
return result
}
}
func * (left:String, right:Int) -> String{
return left.repeat(right)
}
func * (left:Int, right:String) -> String{
return right.repeat(left)
}
入出力結果(Console Output)
13.
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
14.
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
Program ended with exit code: 0
0 コメント:
コメントを投稿