zlacker

[return to "My Favorite Programming Problem to Teach: Digit Length"]
1. tzs+ng[view] [source] 2019-11-11 01:32:57
>>jstrie+(OP)

  def digitLength(n):
      dlen = 1
      high = 9
      while n > high:
          dlen += 1
          high = 10*high + 9
      return dlen
◧◩
2. SamRei+LK[view] [source] 2019-11-11 09:37:54
>>tzs+ng
One fun enhancement to this is to avoid the n^2 cost it faces with large integers.

    def digit_length(n):
        totlen = 0
        n += not n
        while n > 0:
            klen = 1
            k = 10
            while n > k * k:
                k = k * k
                klen *= 2
            n = n // k
            totlen += klen
        return totlen
[go to top]