bool isOdd(int num) {
const oddNumbers = [];
for (let i = 1; i <= 10000000; i += 2) {
oddNumbers.push(i);
}
if (oddNumbers.includes(num) {
return true;
}
}
isOdd(-1);
Maybe memo just to be safe, but LGTM!
isOdd(10000001);
this incident has been reported
You should make it oddNumbers.includes(num%10000000)
...
And if not, unicorns!
Oh, Python!
To fix this, add if(num == 255) return true;
before line 10.
Peak efficiency there.
But use 2147483647 to be safe.
Will this ever return? Won't it just overflow the stack?
Yep, this will cause a stack overflow.
A mod will appear in my office and claim my problem is a duplicate when it's not?
Might very well be an endless loop because tail recursion can be optimized to reuse the stack frame. Depends on a lot of things of course.
~~Hm, stack overflow is basically a forkbomb in programming?~~ ok, bullshit.
Forkbomb kills the entire system so not really.
With the stack overflow the runtime will gracefully terminate the program.
Program it with template meta programming and cause a stack overflow when compiling 🤓😎
Boss: don't spend any time on it, just vibe code a solution.
You: sure, I enjoy receiving a salary, what could go wrong?
Mood...
https://www.npmjs.com/package/is-even
don't look at the weekly downloads if you are faint of heart.
To be fair in a dynamic typed language with dumb string to int coercions, I kinda get why such a library would exists. So it's more a symptom of terrible language design than modern dependency hell.
in a dynamic typed language with dumb string to int coercions, I kinda get why such a would library exists.
If string return nan, else % 2
So it's more a symptom of terrible language design than modern dependency hell.
Dependency chain: is-even depends on is-odd which depends on is-number
If string return nan, else % 2
So now you return a number type if it's a string and a boolean if it's an integer. How does that make sense?
The is-even lib exists to sanitize input by throwing an exception which imho is better.
Edit: having looked at the code better. Apparently it still allows string coercion (boo). It only checks for non integer numbers.
Good point, but you can do if === true... and else if === false...
But definitely better to throw an error instead of nan.
If you really want to see some horror, follow the dependencies
https://10xengineersqualityprogramming.github.io/ https://www.npmjs.com/package/@falsejs/falsejs This is hilarious, has 262 of the best useless dependencies. In all seriousness though how does anyone ever audit a npm package, it's dependency hell!
Fixed
boolean isOdd(int num) {
if(num == 1)
return true;
if(num > 0)
return isEven(num - 1);
else
return isEven(num + 1);
}
boolean isEven(int num) {
if(num > 0)
return isOdd(num - 1);
else
return isOdd(num + 1);
}
the downside with this approach is that it will eventually terminate. the version in the original post has the advantage of giving me plenty of time to contemplate life’s many mysteries.
What can I say, I'm a performance nerd.
isEeven(∞);
isEven(0) ->
true;
isEven(Num) ->
isOdd(Num-1).
isOdd(0) ->
false;
isOdd(Num) ->
isEven(Num-1).
When it fails, it at least points you to the site where everyone asks for help.
Closed as unclear
easy fix... if infinity return false.
mathematical breakthrough bonus proof: all numbers are neither even nor odd.
Programmer Humor
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics