Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: stud 26. 08. 2015, 14:57:42

Název: Dynamické programování ve Swiftu
Přispěvatel: stud 26. 08. 2015, 14:57:42
Jak se dá napsat ve Swiftu generická funkce pro ukládání mezivýsledků? Něco jako

f = dynamicFunction(faktoriál)
print(f(5))

Vzhledem k funkcionalitě jazyka by to mělo jít, ale vůbec nevím, kde začít :(
Název: Re:Dynamické programování ve Swiftu
Přispěvatel: zboj 27. 08. 2015, 12:57:12
Kód: [Vybrat]
func memoize<T:Hashable,U>(block:(T->U,T)->U) -> T -> U {
    var memo = Dictionary<T,U>()
    var result:(T->U)!
    result = { x in
        if let q = memo[x] { return q }
        let r = block(result, x)
        memo[x] = r
        return r
    }
    return result
}
let faktoriál = memoize { f, n in n <= 1 ? 1 : n * f(n - 1) }
Název: Re:Dynamické programování ve Swiftu
Přispěvatel: zboj 08. 12. 2015, 03:11:06
http://babel.blog.root.cz/2015/12/08/swift-pro-linux/