Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
65
Task/Active-object/Swift/active-object.swift
Normal file
65
Task/Active-object/Swift/active-object.swift
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
// For NSObject, NSTimeInterval and NSThread
|
||||
import Foundation
|
||||
// For PI and sin
|
||||
import Darwin
|
||||
|
||||
class ActiveObject:NSObject {
|
||||
|
||||
let sampling = 0.1
|
||||
var K: (t: NSTimeInterval) -> Double
|
||||
var S: Double
|
||||
var t0, t1: NSTimeInterval
|
||||
var thread = NSThread()
|
||||
|
||||
func integrateK() {
|
||||
t0 = t1
|
||||
t1 += sampling
|
||||
S += (K(t:t1) + K(t: t0)) * (t1 - t0) / 2
|
||||
}
|
||||
|
||||
func updateObject() {
|
||||
while true {
|
||||
integrateK()
|
||||
usleep(100000)
|
||||
}
|
||||
}
|
||||
|
||||
init(function: (NSTimeInterval) -> Double) {
|
||||
S = 0
|
||||
t0 = 0
|
||||
t1 = 0
|
||||
K = function
|
||||
super.init()
|
||||
thread = NSThread(target: self, selector: "updateObject", object: nil)
|
||||
thread.start()
|
||||
}
|
||||
|
||||
func Input(function: (NSTimeInterval) -> Double) {
|
||||
K = function
|
||||
|
||||
}
|
||||
|
||||
func Output() -> Double {
|
||||
return S
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// main
|
||||
func sine(t: NSTimeInterval) -> Double {
|
||||
let f = 0.5
|
||||
|
||||
return sin(2 * M_PI * f * t)
|
||||
}
|
||||
|
||||
var activeObject = ActiveObject(function: sine)
|
||||
|
||||
var date = NSDate()
|
||||
|
||||
sleep(2)
|
||||
|
||||
activeObject.Input({(t: NSTimeInterval) -> Double in return 0.0})
|
||||
|
||||
usleep(500000)
|
||||
|
||||
println(activeObject.Output())
|
||||
Loading…
Add table
Add a link
Reference in a new issue