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}}== |