swiftで回文判定
swiftを勉強する機会があったので、忘れないうちにメモ
回文判定については最後にしか触れていない上、大したことはしていません。
ちょっとしか触っていないので簡単なものばかりですが、はてなブログのシンタックス・ハイライトのテストも兼ねて載せておきます。
変数宣言
letで定数宣言、varで変数宣言
宣言時に値を入れておけば、型は明示的に宣言する必要はないらしい…
let hoge : Int // Int型の定数 var huga = 10 // Int型の変数 var tokaiList : [String] = ["Tokyo", "Osaka", "Nagoya"]
制御文
if文
var score : Int = 59 if score < 60 { print("不合格") } else { print("合格") } /* 実行結果 不合格 */
for文
var tokaiList : [String] = ["Tokyo", "Osaka", "Nagoya"] var id : Int // その1 for id = 0; id < count(tokaiList); id++ { println(tokaiList[id] + " is Large City.") } // その2 for id in 0...count(tokaiList)-1 { println(tokaiList[id] + " is Large City.") } /* 実行結果 Tokyo is Large City. Osaka is Large City. Nagoya is Large City. Tokyo is Large City. Osaka is Large City. Nagoya is Large City. */
while文(do-while)
var cash = 500 do { let price : Int = Int(arc4random())%100 + 100 // 100~200円のジュース cash = cash-price println(String(price) + "円のジュースを買いました.") } while cash > 200 /* 実行結果 152円のジュースを買いました. 166円のジュースを買いました. */
関数宣言
func 関数名 ( 引数:型 ) -> 戻り値の型 { // 処理 }
と宣言するらしい
func warikan(fee: Int, nPerson : Int) -> Double { var res = Double(fee)/Double(nPerson) return res } var payment : Double = warikan(10000, 6) println("お代は1人\(payment)円です.") /* 実行結果 お代は1人1666.66666666667円です. */
ちょっとした関数
文字列を文字配列に変換
func charToArray (str:String) -> [Character] { var res : [Character] = [] for i in 0...count(str)-1 { res.append(str[advance(str.startIndex, i)]) } return res } let lchar = charToArray("olympi") var vchar = lchar+"c" println(vchar) /* 実行結果 [o, l, y, m, p, i, c] */
配列内の要素の種類をカウント
func variety(array:[Int]) -> Int { var res:Int = 0 for i in 1...count(array)-1 { let before = array[i-1] let current = array[i] if before != current { res += 1 } } return res } let intArray = [1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 7] var result = variety(intArray) println(result) /* 実行結果 6 */
回文判定
func isPalindrome(str:String) -> Bool { var rev = String(reverse(str)) if str == rev { return true } else { return false } } var result = isPalindrome("testset"); print(result) /* 実行結果 true */
はてなブログのシンタックスハイライト使うなら、いっそGistでコードを埋め込んでやればいいのでは…
しかも、回文判定は空白や文字の大小に対応していないので
No lemon no melon.
のような有名な回文を判定できない始末
lowercaseにして余計なスペースやら消してしまえばいけそうだけど、そのうちちゃんと書きます
というか、swiftで文字列扱うの面倒では