• Shinji_Ikari [he/him]@hexbear.net
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    7 months ago

    Programming humor on reddit used to be excellent bits like this but then it devolved into new learners jumping straight to the irony they didn’t understand and flooded the sub with nonsense.

    I miss these bits.

    btw it does get easier

    import math
    def is_even(num):
        if num in [i for i in range(1000) if float(i)/2.0 == math.floor(float(i)/2.0)]:
            print("true")
        else:
            print("false")
    

    Obviously one would need to increase the range for bigger numbers but this code is optimized.

    • sloppy_diffuser@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 months ago

      for i in itertools.count(): ... will count to infinity.

      Better make it into a dictionary so it’s O(1) complexity instead of O(n) while you’re at it.

  • neidu@feddit.nl
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    7 months ago

    My solution in perl back in the day when I was a teenage hobbyist who didn’t know about the modulus operator: Divide by 2 and use regex to check for a decimal point.

    if ($num / 2 =~ /\./) { return “odd” }
    else { return “even” }

  • SpeakinTelnet@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    7 months ago
    def is_even(n):
        match n:
            case 1:
                return False
            case 0:
                return True
            # fix No1
            case n < 0:
                return is_even(-1*n)
            case _:
                return is_even(n-2)
    
  • noddy@beehaw.org
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    7 months ago

    I know how to fix this!

    bool IsEven(int number) {
        bool even = true;
        for (int i = 0; i < number; ++i) {
            if (even == true) {
                even = false;
            }
            else if (even == false) {
                even = true;
            }
            else {
                throw RuntimeException("Could not determine whether even is true or false.");
            }
        }
    
        if (even == true) {
            return even ? true : false;
        }
        else if (even == false) {
            return (!even) ? false : true;
        }
        else {
            throw RuntimeException("Could not determine whether even is true or false.");
        }
    }
    
      • noddy@beehaw.org
        link
        fedilink
        arrow-up
        3
        ·
        7 months ago

        I know an even better way. We can make it run in O(1) by using a lookup table. We only need to store 2^64 booleans in an array first.

  • tweeks@feddit.nl
    link
    fedilink
    arrow-up
    1
    ·
    7 months ago

    I would love it if someone edited this example and posted it with two statements near the end that are reversed, implying inconsistent behaviour at random in the list ahead, seemingly making this solution less inefficient.

  • recursive_recursion [they/them]@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    7 months ago

    modulo

    pseudocode:

    if number % 2 == 0
      return "number is even" (is_num_even = 1 or true)
    else
      return "number is odd" (is_num_even = 0 or false)
    

    plus you’d want an input validation beforehand

    • Vex_Detrause@lemmy.ca
      link
      fedilink
      arrow-up
      1
      ·
      7 months ago
      #You are an input. You have value! You matter!
      if number % 2 == 0
        return "number is even" (is_num_even = 1 or true)
      else
        return "number is odd" (is_num_even = 0 or false)
      

      Am I doing it right? /S.

    • misophist@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      7 months ago

      This is confusing. I’m already using the iSeven API to determine if a number is 7. I’m getting a namespace collision error when I try to load this new API. Bug report filed.