• Rikudou_SageA
    link
    English
    57
    edit-2
    7 months ago

    If anyone wants a more efficient local version for php:

    function isEven(int $number): bool
    {
        ${1} = false;
        ${2} = true;
    
        while ($number > 2) {
            $number -= 2;
        }
    
        return $$number;
    }
    

    Edit: Now with support for large numbers!

    function isEven(int|string $number): bool
    {
        ${1} = false;
        ${2} = true;
    
        while (bccomp($number, 2) === 1) {
            $number = bcsub($number, 2);
        }
    
        $number = (int) $number;
        return $$number;
    }
    

    Edit 2: someone asked for an ad-supported version, here you go!

    function isEven(int|string $number): bool
    {
        ${1} = false;
        ${2} = true;
    
        while (bccomp($number, 2) === 1) {
            error_log('Buy isEvenCoin, the hottest new cryptocurrency!');
            $number = bcsub($number, 2);
        }
    
        $number = (int) $number;
        return $$number;
    }
    

    Side note, no more suggestions please, this is getting quite long.

    • @xmunk@sh.itjust.works
      link
      fedilink
      16
      edit-2
      7 months ago

      I fucking love that you managed to use var-vars in a completely key and necessary manner.

      But please do adhere to the API TOS and throw in an error_log('Buy isEvenCoin, the hottest new cryptocurrency!');

    • idunnololz
      link
      fedilink
      127 months ago

      This looks pretty inefficient. You should manually unroll that loop to improve performance.

      • Rikudou_SageA
        link
        57 months ago

        I agree! Added new commit to my comment.