Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I find how many useful digits are in any given a number N?

A digit in the number is useful if the number is divisible by that digit.

Here is what I have:

func selfDivide(integer: Int) -> Int {
    var numString = String(integer)
    for character in numString.characters {
        if character % numString == 0 {
            return character
        }
    }
}

I'm thinking I have to find a way to use % between that string and character.

The error that I get is:

Binary operator '%' cannot be applied to characters of type 'Character' and 'String'

like image 387
Jake Dobson Avatar asked Oct 23 '25 19:10

Jake Dobson


1 Answers

Here is more Swifty way using extension (Swift 4+):

public extension Int {
    /// returns number of digits in Int number
    public var digitCount: Int {
        get {
            return numberOfDigits(in: self)
        }
    }
    /// returns number of useful digits in Int number
    public var usefulDigitCount: Int {
        get {
            var count = 0
            for digitOrder in 0..<self.digitCount {
                /// get each order digit from self
                let digit = self % (Int(truncating: pow(10, digitOrder + 1) as NSDecimalNumber))
                    / Int(truncating: pow(10, digitOrder) as NSDecimalNumber)
                if isUseful(digit) { count += 1 }
            }
            return count
        }
    }

    // private recursive method for counting digits
    private func numberOfDigits(in number: Int) -> Int {
        if number < 10 && number >= 0 || number > -10 && number < 0 {
            return 1
        } else {
            return 1 + numberOfDigits(in: number/10)
        }
    }
    // returns true if digit is useful in respect to self
    private func isUseful(_ digit: Int) -> Bool {
        return (digit != 0) && (self % digit == 0)
    }
}

Usage:

print(333444.digitCount)
print(333444.usefulDigitCount)
like image 193
nCod3d Avatar answered Oct 26 '25 07:10

nCod3d



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!