Fibonacci word: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) m (→{{header|11l}}) |
(Add Swift) |
||
Line 4,171: | Line 4,171: | ||
word.len<30 ? word : '<too long>')) |
word.len<30 ? word : '<too long>')) |
||
}</lang> |
}</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}}== |
=={{header|Tcl}}== |