Roman numerals are much more complicated and much less consistent than most people realise. The regular M DC LX VI system is both more modern and less capable than anything the Romans would have recognised. In particular, - in the 8th century, N (short for "nulla") was adopted for zero - the Roman system always had fractions like S for 1/2, . for 1/12 - there were numerals for much larger numbers. Unicode code block [2150] has characters for the Roman numerals including 216C L ROMAN NUMERAL FIFTY 216D C ROMAN NUMERAL ONE HUNDRED 216E D ROMAN NUMERAL FIVE HUNDRED 216F M ROMAN NUMERAL ONE THOUSAND 2181 ↁ ROMAN NUMERAL FIVE THOUSAND 2182 ↂ ROMAN NUMERAL TEN THOUSAND 2187 ↇ ROMAN NUMERAL FIFTY THOUSAND 2188 ↈ ROMAN NUMERAL ONE HUNDRED THOUSAND (In fact these are ligated versions of forms using "apostrophic" brackets; the pattern goes as high as you want, e.g., (((|))) for a million. D and M were originally |) and (|). There is
So the first thing is to make sure that you understand the requirements for the problem. - Are you required to produce ASCII characters, required to produce Unicode ones, or allowed to produce either? - Are you required to support zero? - Are you required to support n/12 fractions (1<=n<=11)? - Are you allowed, required, or forbidden to use the "overline" convention, where an overline means "multiply by 1000"? =------- ICCXXXIVDLXVII = 1,234,567 - Are you allowed, required, or forbidden to use "additive" form "IIII" as well as/instead of "subtractive" form "IV"? - Are you to use upper case or lower case letters? - And so on. I am not happy with the way that (0 printStringRoman) quietly produces ''. Assuming you're generating regular modern Roman numbers, you pretty much have to think of an integer as having 4 parts: n // 1000 -- this many copies of M n // 100 \\ 10 -- hundreds using M, D, C n // 10 \\ 100 -- tens using C, L, X n \\ 10 -- units using X, V, I If Squeak/Pharo's (0 printStringRoman) would answer 'N' instead of '' I'd be happier with it. While you really want to write your own code --- this being an exercism task --- it would be a very good idea to start by using #printStringRoman so that you know what it's like to pass the tests. On Fri, 18 Sep 2020 at 04:58, Roelof Wobben via Pharo-users < pharo-users@lists.pharo.org> wrote: > Hello, > > The challenge is to do it manually. > But I can take a look how that function is implented. > > Roelof > > > > Op 17-9-2020 om 18:13 schreef Aliaksei Syrel: > > Hi Roelof, > > You will not believe! > > 2 printStringRoman “II” > Have fun! > > On Thu, 17 Sep 2020 at 18:20, Roelof Wobben via Pharo-users < > pharo-users@lists.pharo.org> wrote: > >> Hello, >> >> >> >> Can someone help me with a good plan to convert numbers to roman numbers. >> >> >> >> I could make a dictionary with 1,4,5,9,10,99,100, 999, 1000 but that >> >> feels like a overkill. >> >> >> >> Regards, >> >> >> >> Roelof >> >> -- > Cheers, > Alex > > >