Permuted multiples: Difference between revisions
Content added Content deleted
(Added Java solution) |
(Added Swift solution) |
||
Line 823: | Line 823: | ||
6*n = 857142 |
6*n = 857142 |
||
done... |
done... |
||
</pre> |
|||
=={{header|Swift}}== |
|||
<lang swift>func getDigits(_ num: Int) -> Array<Int> { |
|||
var n = num |
|||
var digits = Array(repeating: 0, count: 10) |
|||
while true { |
|||
digits[n % 10] += 1 |
|||
n /= 10 |
|||
if n == 0 { |
|||
break |
|||
} |
|||
} |
|||
return digits |
|||
} |
|||
// Returns true if n, 2n, ..., 6n all have the same base 10 digits. |
|||
func sameDigits(_ n: Int) -> Bool { |
|||
let digits = getDigits(n) |
|||
for i in 2...6 { |
|||
if digits != getDigits(i * n) { |
|||
return false |
|||
} |
|||
} |
|||
return true |
|||
} |
|||
var p = 100 |
|||
loop: while true { |
|||
for n in stride(from: p + 2, through: (p * 10) / 6, by: 3) { |
|||
if sameDigits(n) { |
|||
print(" n = \(n)") |
|||
for i in 2...6 { |
|||
print("\(i)n = \(i * n)") |
|||
} |
|||
break loop |
|||
} |
|||
} |
|||
p *= 10 |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
n = 142857 |
|||
2n = 285714 |
|||
3n = 428571 |
|||
4n = 571428 |
|||
5n = 714285 |
|||
6n = 857142 |
|||
</pre> |
</pre> |
||