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
47
Task/Generator-Exponential/Swift/generator-exponential.swift
Normal file
47
Task/Generator-Exponential/Swift/generator-exponential.swift
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
func powGen(m: Int) -> GeneratorOf<Int> {
|
||||
let power = Double(m)
|
||||
var cur: Double = 0
|
||||
return GeneratorOf { Int(pow(cur++, power)) }
|
||||
}
|
||||
|
||||
var squares = powGen(2)
|
||||
var cubes = powGen(3)
|
||||
|
||||
var nCube = cubes.next()
|
||||
|
||||
var filteredSqs = GeneratorOf<Int> {
|
||||
for var nSq = squares.next() ;; nCube = cubes.next() {
|
||||
if nCube > nSq {
|
||||
return nSq
|
||||
} else if nCube == nSq {
|
||||
nSq = squares.next()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension GeneratorOf {
|
||||
func drop(n: Int) -> GeneratorOf<T> {
|
||||
var g = self
|
||||
for _ in 0..<n {g.next()}
|
||||
return GeneratorOf{g.next()}
|
||||
}
|
||||
func take(n: Int) -> GeneratorOf<T> {
|
||||
var (i, g) = (0, self)
|
||||
return GeneratorOf{++i > n ? nil : g.next()}
|
||||
}
|
||||
}
|
||||
|
||||
for num in filteredSqs.drop(20).take(10) {
|
||||
print(num)
|
||||
}
|
||||
|
||||
//529
|
||||
//576
|
||||
//625
|
||||
//676
|
||||
//784
|
||||
//841
|
||||
//900
|
||||
//961
|
||||
//1024
|
||||
//1089
|
||||
Loading…
Add table
Add a link
Reference in a new issue