Vampire number: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: added more comments, optimized the function.)
(Add Swift)
Line 3,349: Line 3,349:
14593825548650: is not a vampire number
14593825548650: is not a vampire number
</pre>
</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}}==
=={{header|Tcl}}==