programming_horror

This magazine is from a federated server and may be incomplete. Browse more on the original instance.

Thyrian, in God I wish there was an easier way to do this

You could do this in one line…

By removing all the linebreaks.

DeathsEmbrace,

Why even put spaces too many key presses.

iegod,

I love this thread 🫠

Strawberry,

i think it should one giant ternary expression composition

olafurp, in God I wish there was an easier way to do this

Of course there’s an easier way. Just integrate the state of the art API dedicated for this exact problem. isevenapi.xyz

misophist,

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.

Blamemeta, in my react frontend crashed with Segmentation faults

Well thats just impressive.

peopleproblems,

The only thing that I came to the conclusion of was: “not whatever you are doing.”

matter, in There has to be an easier way to do this

Ah, the enterprise solution

nous,

Nah, not enough abstraction. This is more like it

__ghost__,

This made me throw up a little bit

Thcdenton, in With the power of python, there is an easier way
Hexarei, in Programming HTML in Rust may have annoyed some gods.
@Hexarei@programming.dev avatar

Web development is, and will always be, just a game of finding increasingly cursed unique ways to concatenate HTML strings

cadekat,

One day I’ll find a reason to use https://docs.rs/yew/0.20.0/yew/macro.html.html. One day.

o11c,

The problem is that what everybody really wants is parameterization, not concatenation. But most solutions therefor are flaky even if they exist.

noddy, in God I wish there was an easier way to do this

I know how to fix this!


<span style="color:#323232;">bool IsEven(int number) {
</span><span style="color:#323232;">    bool even = true;
</span><span style="color:#323232;">    for (int i = 0; i &lt; number; ++i) {
</span><span style="color:#323232;">        if (even == true) {
</span><span style="color:#323232;">            even = false;
</span><span style="color:#323232;">        }
</span><span style="color:#323232;">        else if (even == false) {
</span><span style="color:#323232;">            even = true;
</span><span style="color:#323232;">        }
</span><span style="color:#323232;">        else {
</span><span style="color:#323232;">            throw RuntimeException("Could not determine whether even is true or false.");
</span><span style="color:#323232;">        }
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">
</span><span style="color:#323232;">    if (even == true) {
</span><span style="color:#323232;">        return even ? true : false;
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">    else if (even == false) {
</span><span style="color:#323232;">        return (!even) ? false : true;
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">    else {
</span><span style="color:#323232;">        throw RuntimeException("Could not determine whether even is true or false.");
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">}
</span>
odium,

Have you tried seeing if the recursive approach runs faster?

noddy,

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.

Anticorp, in God I wish there was an easier way to do this

Back when I was learning programming a lot of lessons would make you do something like this, and then show you the real way to do it in the next lesson. My reaction was always “why didn’t you lead with this?”.

Potatos_are_not_friends,

You must see the pain before you confront it.

Coreidan,

Because the point of the lesson is to demonstrate that you can solve the same problem multiple ways where some paths are more efficient than others.

Bad programmers are the ones that find the first solution and implement it no matter how inefficient it is.

Good programmers spend time on figuring out the solution with the least amount broken or inefficient code. You don’t learn this by jumping straight to the best answer every time.

neidu, (edited ) in God I wish there was an easier way to do this

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” }

lysdexic,

Divide by 2 and check for a decimal point.

I mean, it ain’t wrong.

Chobbes,

You know, I was going to let this slide under the notion that we’re just ignoring the limited precision of floating point numbers… But then I thought about it and it’s probably not right even if you were computing with real numbers! The decimal representation of real numbers isn’t unique, so this could tell me that “2 = 1.9999…” is odd. Maybe your string coercion is guaranteed to return the finite decimal representation, but I think that would be undecidable.

backgroundcow,

Ackchyually-- IEEE 754 guarantees any integer with absolute value less than 2^24 to be exactly representable as a single precision float. So, the “divide by 2, check for decimals” should be safe as long as the origin of the number being checked is somewhat reasonable.

Chobbes,

Of course, but it’s somewhat nasty when all of a sudden is_even doesn’t do what you expect :).

lysdexic,

The decimal representation of real numbers isn’t unique, so this could tell me that “2 = 1.9999…” is odd.

I don’t think your belief holds water. By definition an even number, once divided by 2, maps to an integer. In binary representations, this is equivalent to a right shift. You do not get a rounding error or decimal parts.

But this is nitpicking a tongue-in-cheek comment.

Chobbes,

“1.99999…” is an integer, though! If you’re computing with arbitrary real numbers and serializing it to a string, how do you know to print “2” instead of “1.9999…”? This shouldn’t be decidable, naively if you have a program that prints “1.” and then repeatedly runs a step of an arbitrary Turing machine and then prints “9” if it did not terminate and stops printing otherwise, determining if the number being printed would be equal to 2 would solve the halting problem.

Arbitrary precision real numbers are not represented by finite binary integers. Also a right shift on a normal binary integer cannot tell you if the number is even. A right shift is only division by 2 on even numbers, otherwise it’s division by 2 rounded down to the nearest integer. But if you have a binary integer and you want to know if it’s even you can just check the least significant bit.

Bizarroland, in The switch-case starts on line 83.
Bizarroland avatar

I mean I get it that it's a Long function, line wise, but it reads like every single line has just the minimum amount of information it needs to have to be legible and to make sense for it to exist.

I would say that this is more readable than those leet programmer regex hacks that work magic in 3 lines of code but require a fucking PhD to decipher.

xoggy, in PSD is not my favourite file format.
@xoggy@programming.dev avatar

When they say writing code comments is important this is what they mean. This is how we programmers pass on important life lessons that save the next dev weeks of heart pain and hair loss.

kryllic,
@kryllic@programming.dev avatar
Shinji_Ikari, in God I wish there was an easier way to do this
@Shinji_Ikari@hexbear.net avatar

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


<span style="color:#323232;">import math
</span><span style="color:#323232;">def is_even(num):
</span><span style="color:#323232;">    if num in [i for i in range(1000) if float(i)/2.0 == math.floor(float(i)/2.0)]:
</span><span style="color:#323232;">        print("true")
</span><span style="color:#323232;">    else:
</span><span style="color:#323232;">        print("false")
</span>

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

sloppy_diffuser,

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.

nickknack, in With the power of python, there is an easier way

my eyes 😭

nrabulinski, in my react frontend crashed with Segmentation faults

That’s not a segfault, that’s a bus error, which also refers to memory, but it’s a different kind of error, typically occurring when you access a misaligned address or some address which cannot possibly be referenced. Probably a problem with one of the pre-built binaries some npm module ships

257m, in With the power of python, there is an easier way

wtf is this colorscheme. Reading it makes my eyes water.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • programming_horror@programming.dev
  • ngwrru68w68
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • megavids
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • provamag3
  • JUstTest
  • All magazines