Jump to content

Fibonacci word: Difference between revisions

Add Swift
(Add Swift)
Line 4,171:
word.len<30 ? word : '<too long>'))
}</lang>
 
 
=={{header|Swift}}==
 
<lang swift>import Foundation
 
struct Fib: Sequence, IteratorProtocol {
private var cur: String
private var nex: String
 
init(cur: String, nex: String) {
self.cur = cur
self.nex = nex
}
 
mutating func next() -> String? {
let ret = cur
 
cur = nex
nex = "\(ret)\(nex)"
 
return ret
}
}
 
func getEntropy(_ s: [Int]) -> Double {
var entropy = 0.0
var hist = Array(repeating: 0.0, count: 256)
 
for i in 0..<s.count {
hist[s[i]] += 1
}
 
for i in 0..<256 where hist[i] > 0 {
let rat = hist[i] / Double(s.count)
entropy -= rat * log2(rat)
}
 
return entropy
}
 
for (i, str) in Fib(cur: "1", nex: "0").prefix(37).enumerated() {
let ent = getEntropy(str.map({ Int($0.asciiValue!) }))
 
print("i: \(i) len: \(str.count) entropy: \(ent)")
}</lang>
 
{{out}}
 
<pre style="overflow: scroll; height: 25em">i: 0 len: 1 entropy: 0.0
i: 1 len: 1 entropy: 0.0
i: 2 len: 2 entropy: 1.0
i: 3 len: 3 entropy: 0.9182958340544896
i: 4 len: 5 entropy: 0.9709505944546686
i: 5 len: 8 entropy: 0.954434002924965
i: 6 len: 13 entropy: 0.9612366047228759
i: 7 len: 21 entropy: 0.9587118829771318
i: 8 len: 34 entropy: 0.9596868937742169
i: 9 len: 55 entropy: 0.9593160320543777
i: 10 len: 89 entropy: 0.9594579158386696
i: 11 len: 144 entropy: 0.959403754221023
i: 12 len: 233 entropy: 0.9594244469559866
i: 13 len: 377 entropy: 0.9594165437404408
i: 14 len: 610 entropy: 0.9594195626031441
i: 15 len: 987 entropy: 0.9594184095152243
i: 16 len: 1597 entropy: 0.9594188499578098
i: 17 len: 2584 entropy: 0.9594186817240321
i: 18 len: 4181 entropy: 0.9594187459836638
i: 19 len: 6765 entropy: 0.9594187214386755
i: 20 len: 10946 entropy: 0.9594187308140277
i: 21 len: 17711 entropy: 0.959418727232962
i: 22 len: 28657 entropy: 0.9594187286008073
i: 23 len: 46368 entropy: 0.9594187280783368
i: 24 len: 75025 entropy: 0.9594187282779029
i: 25 len: 121393 entropy: 0.9594187282016754
i: 26 len: 196418 entropy: 0.9594187282307918
i: 27 len: 317811 entropy: 0.9594187282196702
i: 28 len: 514229 entropy: 0.9594187282239184
i: 29 len: 832040 entropy: 0.9594187282222958
i: 30 len: 1346269 entropy: 0.9594187282229155
i: 31 len: 2178309 entropy: 0.9594187282226789
i: 32 len: 3524578 entropy: 0.9594187282227691
i: 33 len: 5702887 entropy: 0.9594187282227347
i: 34 len: 9227465 entropy: 0.9594187282227479
i: 35 len: 14930352 entropy: 0.9594187282227428
i: 36 len: 24157817 entropy: 0.9594187282227447</pre>
 
=={{header|Tcl}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.