this post was submitted on 11 Oct 2025
439 points (99.5% liked)
Programmer Humor
26846 readers
432 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
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
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.
I don't know what happens when the substring overlaps. Like for the number 6, will it replace the first 5 I's with V and end up correctly with VI or the last ones and come to IV? I would guess the former and maybe you know but I never thought about it before
Also does not handle 'IIIIIIIII' -> 'IX' properly
If the substitution went right to left it might work.
It does.
I’ve written it that way and it works, as in it will replace left to right and you replace iiii to iv after iiiii to v
Makes sense but it will fail at 9 (VIV) it would only work for 9 if the replace went from right to left or the V and IV statements were exchanged but in both cases, 6 would fail
9 is IX though, and that works.
6 works fine, as it replaces the first set of 5 I with V and then there’s nothing to replace.
I’d written it in typescript for all it’s worth; go ahead and try it yourself :)
Does 9 really work? Wouldn't it be:
I like your questions about this and they all seem fair but I kinda wanna encourage you to go ahead and write it yourself; it’s a fun way to convert into Roman numerals that both is and isn’t intuitive at the same time.
No, cause you do the replacement from large to small, I.e. you’d first check for 10 I to replace with X (none found); then replace 9 with IX (check), then check for 5, 4 and so on.
The original doesn't have an extra check for 9 and it works for Roman->Indioarabic because it's:
But the other way around, you need an extra step for 9. That's where our misunderstanding comes from.
Ohhh haha that makes sense. Fun!
I noticed my “and so on” is literally a noop here so yeah.