• lugal@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    7
    ·
    2 days ago

    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

    • rooroo@feddit.org
      link
      fedilink
      arrow-up
      2
      ·
      1 day ago

      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

      • lugal@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        0
        ·
        1 day ago

        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

        • rooroo@feddit.org
          link
          fedilink
          arrow-up
          1
          ·
          13 hours ago

          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 :)

            • rooroo@feddit.org
              link
              fedilink
              arrow-up
              2
              ·
              7 hours ago

              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.

            • rooroo@feddit.org
              link
              fedilink
              arrow-up
              2
              ·
              7 hours ago

              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.

              • lugal@lemmy.dbzer0.com
                link
                fedilink
                arrow-up
                2
                ·
                7 hours ago

                The original doesn’t have an extra check for 9 and it works for Roman->Indioarabic because it’s:

                IX
                ->IVV
                ->IIIIV
                ->IIIIIIIII
                

                But the other way around, you need an extra step for 9. That’s where our misunderstanding comes from.