Open2

Swiftの習得のためパズルソルバーを作る〜テンパズル編〜

hiroperuhiroperu

せっかくMac持ってるのでSwift書けるようになりたい。ので、1からの入門のためにパズルを解くアルゴリズムを実装していくぞ。テンパズルから挑戦だ。(パズルで鍛えるアルゴリズム力 大槻兼資 を参考にします)

hiroperuhiroperu

逆ポーランド記法で書かれた計算式を計算する関数

import Foundation

//逆ポーランド記法で書かれた計算式を計算する

class ReversePolrand {
    
    func calcPoland(exp: String) -> Double {

        var space: [Double] = []
        
        for c in exp {
            if (c >= "0" && c <= "9") {
                let add = Double(String(c))!
                space.append(add)

            } else {
                //演算子の場合
                let second = space.last
                space.removeLast()
                let first = space.last
                space.removeLast()
                
                if( c == "+" ) {
                    space.append(first! + second!)
                } else if ( c == "-" ) {
                    space.append(first! - second!)
                } else if ( c == "*" ) {
                    space.append(first! * second!)
                } else {
                    space.append(first! / second!)
                }
                
            }
        }
        
        return space.last!
    }
}

アンラップを強制でやってるところは直したいね。