Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
65
Task/Padovan-sequence/Swift/padovan-sequence.swift
Normal file
65
Task/Padovan-sequence/Swift/padovan-sequence.swift
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import Foundation
|
||||
|
||||
class PadovanRecurrence: Sequence, IteratorProtocol {
|
||||
private var p = [1, 1, 1]
|
||||
private var n = 0
|
||||
|
||||
func next() -> Int? {
|
||||
let pn = n < 3 ? p[n] : p[0] + p[1]
|
||||
p[0] = p[1]
|
||||
p[1] = p[2]
|
||||
p[2] = pn
|
||||
n += 1
|
||||
return pn
|
||||
}
|
||||
}
|
||||
|
||||
class PadovanFloor: Sequence, IteratorProtocol {
|
||||
private let P = 1.324717957244746025960908854
|
||||
private let S = 1.0453567932525329623
|
||||
private var n = 0
|
||||
|
||||
func next() -> Int? {
|
||||
let p = Int(floor(pow(P, Double(n - 1)) / S + 0.5))
|
||||
n += 1
|
||||
return p
|
||||
}
|
||||
}
|
||||
|
||||
class PadovanLSystem: Sequence, IteratorProtocol {
|
||||
private var str = "A"
|
||||
|
||||
func next() -> String? {
|
||||
let result = str
|
||||
var next = ""
|
||||
for ch in str {
|
||||
switch (ch) {
|
||||
case "A": next.append("B")
|
||||
case "B": next.append("C")
|
||||
default: next.append("AB")
|
||||
}
|
||||
}
|
||||
str = next
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
print("First 20 terms of the Padovan sequence:")
|
||||
for p in PadovanRecurrence().prefix(20) {
|
||||
print("\(p)", terminator: " ")
|
||||
}
|
||||
print()
|
||||
|
||||
var b = PadovanRecurrence().prefix(64)
|
||||
.elementsEqual(PadovanFloor().prefix(64))
|
||||
print("\nRecurrence and floor functions agree for first 64 terms? \(b)")
|
||||
|
||||
print("\nFirst 10 strings produced from the L-system:");
|
||||
for p in PadovanLSystem().prefix(10) {
|
||||
print(p, terminator: " ")
|
||||
}
|
||||
print()
|
||||
|
||||
b = PadovanLSystem().prefix(32).map{$0.count}
|
||||
.elementsEqual(PadovanRecurrence().prefix(32))
|
||||
print("\nLength of first 32 strings produced from the L-system = Padovan sequence? \(b)")
|
||||
Loading…
Add table
Add a link
Reference in a new issue