Vampire number: Difference between revisions

Add Swift
m (→‎{{header|REXX}}: added more comments, optimized the function.)
(Add Swift)
Line 3,349:
14593825548650: is not a vampire number
</pre>
 
=={{header|Swift}}==
 
<lang swift>import Foundation
 
func vampire<T>(n: T) -> [(T, T)] where T: BinaryInteger, T.Stride: SignedInteger {
let strN = String(n).sorted()
let fangLength = strN.count / 2
let start = T(pow(10, Double(fangLength - 1)))
let end = T(Double(n).squareRoot())
 
var fangs = [(T, T)]()
 
for i in start...end where n % i == 0 {
let quot = n / i
 
guard i % 10 != 0 || quot % 10 != 0 else {
continue
}
 
if "\(i)\(quot)".sorted() == strN {
fangs.append((i, quot))
}
}
 
return fangs
}
 
var count = 0
var i = 1.0
 
while count < 25 {
let start = Int(pow(10, i))
let end = start * 10
 
for num in start...end {
let fangs = vampire(n: num)
 
guard !fangs.isEmpty else { continue }
 
count += 1
 
print("\(num) is a vampire number with fangs: \(fangs)")
 
guard count != 25 else { break }
}
 
i += 2
}
 
for (vamp, fangs) in [16758243290880, 24959017348650, 14593825548650].lazy.map({ ($0, vampire(n: $0)) }) {
if fangs.isEmpty {
print("\(vamp) is not a vampire number")
} else {
print("\(vamp) is a vampire number with fangs: \(fangs)")
}
}</lang>
 
{{out}}
 
<pre>1260 is a vampire number with fangs: [(21, 60)]
1395 is a vampire number with fangs: [(15, 93)]
1435 is a vampire number with fangs: [(35, 41)]
1530 is a vampire number with fangs: [(30, 51)]
1827 is a vampire number with fangs: [(21, 87)]
2187 is a vampire number with fangs: [(27, 81)]
6880 is a vampire number with fangs: [(80, 86)]
102510 is a vampire number with fangs: [(201, 510)]
104260 is a vampire number with fangs: [(260, 401)]
105210 is a vampire number with fangs: [(210, 501)]
105264 is a vampire number with fangs: [(204, 516)]
105750 is a vampire number with fangs: [(150, 705)]
108135 is a vampire number with fangs: [(135, 801)]
110758 is a vampire number with fangs: [(158, 701)]
115672 is a vampire number with fangs: [(152, 761)]
116725 is a vampire number with fangs: [(161, 725)]
117067 is a vampire number with fangs: [(167, 701)]
118440 is a vampire number with fangs: [(141, 840)]
120600 is a vampire number with fangs: [(201, 600)]
123354 is a vampire number with fangs: [(231, 534)]
124483 is a vampire number with fangs: [(281, 443)]
125248 is a vampire number with fangs: [(152, 824)]
125433 is a vampire number with fangs: [(231, 543)]
125460 is a vampire number with fangs: [(204, 615), (246, 510)]
125500 is a vampire number with fangs: [(251, 500)]
16758243290880 is a vampire number with fangs: [(1982736, 8452080), (2123856, 7890480), (2751840, 6089832), (2817360, 5948208)]
24959017348650 is a vampire number with fangs: [(2947050, 8469153), (2949705, 8461530), (4125870, 6049395), (4129587, 6043950), (4230765, 5899410)]
14593825548650 is not a vampire number</pre>
 
=={{header|Tcl}}==