They call me a StackOverflow expert:
private bool isEven(int num) {
if (num == 0) return true;
if (num == 1) return false;
if (num < 0) return isEven(-1 * num);
return isEven(num - 2);
}
bool isEven(int num) {
return num == 0 || !isEven(num - (num > 0 ? 1 : -1));
}
StackoverflowException.
What do I do now?
Nvm. Got it.
if(num % 2 == 0){
int num1 = num/2
int num2 = num/2
return isEven(num1) && isEven(num2)
}
if(num % 3 == 0){
int num1 = num/3
int num2 = num/3
int num3 = num/3
return isEven(num1) && isEven(num2) && isEven(num3)
}
Obviously we need to check each part of the division to make sure if they are even or not. /s
I shit you not but one coworker I had dared call himself a data scientist and did something really similar to this but in Python and in production code. He should never have been hired. Coding in python was a requirement. I spent a good year sorting out through his spaghetti code and eventually rebuilt everything he had been working on because it was so bad that it only worked on his computer and he always pip freezes all requirements, and since he never used a virtual environment that meant we got a list of ALL packages he had installed on pip for a project. Out of those 100, only about 20 were relevant to the project.
In prod??
Listen up folks. This is why we do code reviews. This right here.
A few members of my team were reviewing codes but lots of PRs could be merged without tests or checks passing and only about 2 people before I joined understood what cicd is, no one else believed in its importance. They thought doing otherwise would “slow down the work precess and waste time, we know what we’re doing anyway!”.
I learned a lot from having to implement best practices and introduce tests in teams that don’t give a fuck or were never required to do it. I’m amazed at the industry standards and fully understand why job ads keep listing git as a requirement.
Just print True all the time. Half the time it will be correct and the client will be happy, and the other half the time, they will open a ticket that will be marked as duplicate and closed.
Reminds me of the fake thermometers being sold during the peak of COVID that weren’t actually thermometers but just displayed numbers to make people think they were.
Wow. Amateur hour over here. There’s a much easier way to write this.
A case select:
select(number){
case 1:
return false;
case 2:
return true;
}
And so on.
Don’t forget that you can have fall-through cases, so you can simplify it even further:
switch (number) {
case 1:
case 3:
case 5:
case 7:
case 9:
...
Just do a while loop and subtract 2 if it’s positive or plus 2 is it’s negative until it reaches 1 or 0 and that’s how you know, easy! /s
God, it’s so obvious, you can do it in only two lines of code.
if (number == 1 || number == 3 || number == 5 || number == 7 || number == 9...) return false;
else return true;