Skip to content

Instantly share code, notes, and snippets.

@SergeyTLV
Last active October 5, 2020 04:11
Show Gist options
  • Save SergeyTLV/19d0ab33cfe2e1a14c99aa654a09e26e to your computer and use it in GitHub Desktop.
Save SergeyTLV/19d0ab33cfe2e1a14c99aa654a09e26e to your computer and use it in GitHub Desktop.
precedencegroup PowerPrecedence { higherThan: MultiplicationPrecedence }
infix operator ^^ : PowerPrecedence
func ^^ (radix: Int, power: Int) -> Int {
return Int(pow(Double(radix), Double(power)))
}
func digPow (for number: Int, using power: Int) -> Int {
var num = number
var pow = power
var digits:[Int] = []
var poweredDigits:[Int] = []
var poweredArraySum:Int
while num > 0 {
let digit = num % 10
digits = [digit] + digits
num /= 10
}
for index in digits {
poweredDigits.append(index ^^ pow)
pow += 1
}
poweredArraySum = poweredDigits.reduce(0, +)
if poweredArraySum % number == 0 {
return poweredArraySum / number
} else {
return -1
}
}
import Foundation
func digPow(for number: Int, using power: Int) -> Int {
let sum = String(number).characters.enumerated().reduce(0) {
let number = Int(String($1.1))!
return $0 + Int(pow(Double(number), Double(power + $1.0)))
}
return sum % number == 0 ? sum / number : -1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment