this post was submitted on 11 Oct 2025
446 points (99.6% liked)

Programmer Humor

26913 readers
1509 users here now

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

founded 2 years ago
MODERATORS
 
top 50 comments
sorted by: hot top controversial new old
[–] TheLazyNerd@europe.pub 19 points 6 days ago

Since Roman numerals have an upper bound, the time complexity is always O(1).

[–] olafurp@lemmy.world 9 points 6 days ago (1 children)

It's not too bad, it's readable and easily optimised by adding intermediate sums and removing whatever power of 10 you're working on.

[–] nik9000@programming.dev 2 points 6 days ago

My first thought was that it'd be a great oracle for randomized testing.

[–] Wynnstan@lemmy.world 5 points 6 days ago

Alternatively pip install roman.

[–] mkwt@lemmy.world 3 points 6 days ago (1 children)

You missed "CM," which was common in copyright statements in the 20th century.

[–] webadict@lemmy.world 9 points 6 days ago

No, they didn't.

CM becomes CDD, which becomes CCCCD which becomes CCCCCCCCC.

[–] Zyansheep@programming.dev 3 points 6 days ago
[–] BlackEco@lemmy.blackeco.com 3 points 6 days ago (1 children)

Depending on the language, you may be mutating the input value, which isn't great.

[–] qaz@lemmy.world 2 points 6 days ago (1 children)

I'm pretty sure it's Java (due to the syntax and Eclipse editor default color scheme), so that isn't an issue

[–] BlackEco@lemmy.blackeco.com 2 points 6 days ago* (last edited 6 days ago)

Oh right, my Java is a bit rusty. But if it was Javascript, that would have been a problem.

[–] theunknownmuncher@lemmy.world 118 points 1 week ago* (last edited 1 week ago) (1 children)

Whenever you sit back and smile proudly to yourself about how clever the block of code you just wrote is, your next move should be to delete and rewrite it.

This is a clever block of code! Great job, now rewrite it to be sane 😂

[–] balsoft@lemmy.ml 32 points 1 week ago (3 children)

I think it depends; some smart code is good actually, think 0x5f3759df. As long as you properly document it and leave plenty of comments. This one is not smart though, at best it's what I would call witty.

[–] theunknownmuncher@lemmy.world 23 points 1 week ago

I'd accept that "smart code" and "clever code" are 2 different things

[–] Valmond@lemmy.world 12 points 1 week ago

Fast inverse square root eh?

load more comments (1 replies)
[–] douglasg14b@lemmy.world 67 points 1 week ago (2 children)

Still linear time at least, could always be much MUCH worse

[–] dfyx@lemmy.helios42.de 44 points 1 week ago (2 children)

There could be a hidden quadratic cost because the string needs to be reallocated and copied multiple times.

[–] Jerkface@lemmy.world 42 points 1 week ago (1 children)
[–] aaaaaaaaargh@feddit.org 11 points 1 week ago

This is the spirit

load more comments (1 replies)
[–] lugal@lemmy.dbzer0.com 17 points 1 week ago (1 children)

True. Lost opportunity to blow things up with useless recursivity

[–] bleistift2@sopuli.xyz 17 points 1 week ago (7 children)

The word you’re looking for is recursion (see recursion).

[–] lugal@lemmy.dbzer0.com 5 points 6 days ago

Thanks. I knew something was off

load more comments (6 replies)
[–] CookieOfFortune@lemmy.world 64 points 1 week ago (1 children)

This isn’t sufficiently enterprisey for Java. There should be a Roman numeral factory followed by relevant fromString and toInteger methods.

[–] vithigar@lemmy.ca 14 points 1 week ago

Ugh. Literally refactored multiple factories into straightforward functions in the most recent sprint where I work.

Someone saw a public factory method which was a factory for a reason and just cargo culted multiple private methods using the same pattern.

[–] anugeshtu@lemmy.world 41 points 1 week ago (1 children)

Why don't you just ask Chat-GPT o3 every time? Works like a charm!

[–] lugal@lemmy.dbzer0.com 47 points 1 week ago

Because there are better random generators

[–] TootSweet@lemmy.world 31 points 1 week ago* (last edited 1 week ago)

My first thought was something along the lines of a "zip bomb". For every "M" in the input string, it'd use more than a KiB of memory. But still, it'd take a string of millions of "M"s to exhaust memory on even a low-end modern server. Still probably not a good idea to expose to untrusted input on a public networked server, though. And it could easily peg a CPU core for a good while. Very good leveraged target for DDOSing.

[–] rooroo@feddit.org 22 points 1 week ago (13 children)

It also works the other way round: wanna convert Arabic n to Roman? Just write n times ‘I’ and revert these replacement in inverse order.

load more comments (13 replies)
[–] Zangoose@lemmy.world 14 points 1 week ago (1 children)

They forgot "CM" so this doesn't work for any number that ends in 900s

[–] trxxruraxvr@lemmy.world 49 points 1 week ago* (last edited 1 week ago)

No, M will be replaced by DD and then CD will be picked up, so it will go

  1. CM
  2. CDD
  3. CCCCD
  4. CCCCCCCCC
  5. ......
load more comments
view more: next ›