• affiliate@lemmy.world
    link
    fedilink
    arrow-up
    26
    ·
    8 months ago

    here’s a constant time solution:

    def is_even(n: int):
        import math
        return sum(math.floor(abs(math.cos(math.pi/2 * n/i))) for i in range(1, 2 ** 63)) > 0
    
    spoiler

    i can’t imagine how long it’ll take to run, my computer took over 3 minutes to compute one value when the upper bound was replaced with 230. but hey, at least it’s O(1).

    • Acters@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      8 months ago

      Nice, how about bitwise & operator?

      // n&1 is 1, then odd, else even
      
      return (!(n & 1));