Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1046 lines (1037 sloc) 14.6 KB
{-
- Solution to Project Euler problem 89
- Copyright (c) Project Nayuki. All rights reserved.
-
- https://www.nayuki.io/page/project-euler-solutions
- https://github.com/nayuki/Project-Euler-solutions
-}
import Data.List (stripPrefix)
main = putStrLn (show ans)
ans = sum (map charsSaved toSimplify)
charsSaved :: String -> Int
charsSaved s = (length s) - (romanNumeralLength (parseRomanNumeral s))
parseRomanNumeral :: String -> Int
parseRomanNumeral "" = 0
parseRomanNumeral s = parse romanNumeralTable s where
parse ((rom, val) : tableRest) s = case (stripPrefix rom s) of
Just suf -> val + (parseRomanNumeral suf)
Nothing -> parse tableRest s
romanNumeralTable = [
("M" , 1000),
("CM", 900),
("D" , 500),
("CD", 400),
("C" , 100),
("XC", 90),
("L" , 50),
("XL", 40),
("X" , 10),
("IX", 9),
("V" , 5),
("IV", 4),
("I" , 1)]
romanNumeralLength :: Int -> Int
romanNumeralLength 0 = 0
romanNumeralLength n = (if n >= 4000 then 2 else 0) + ([0,1,2,3,2,1,2,3,4,2] !! (mod n 10)) + (romanNumeralLength (div n 10))
-- Note: The n >= 4000 test is for compensating "MZ" -> "MMMM"
toSimplify = [
"MMMMDCLXXII",
"MMDCCCLXXXIII",
"MMMDLXVIIII",
"MMMMDXCV",
"DCCCLXXII",
"MMCCCVI",
"MMMCDLXXXVII",
"MMMMCCXXI",
"MMMCCXX",
"MMMMDCCCLXXIII",
"MMMCCXXXVII",
"MMCCCLXXXXIX",
"MDCCCXXIIII",
"MMCXCVI",
"CCXCVIII",
"MMMCCCXXXII",
"MDCCXXX",
"MMMDCCCL",
"MMMMCCLXXXVI",
"MMDCCCXCVI",
"MMMDCII",
"MMMCCXII",
"MMMMDCCCCI",
"MMDCCCXCII",
"MDCXX",
"CMLXXXVII",
"MMMXXI",
"MMMMCCCXIV",
"MLXXII",
"MCCLXXVIIII",
"MMMMCCXXXXI",
"MMDCCCLXXII",
"MMMMXXXI",
"MMMDCCLXXX",
"MMDCCCLXXIX",
"MMMMLXXXV",
"MCXXI",
"MDCCCXXXVII",
"MMCCCLXVII",
"MCDXXXV",
"CCXXXIII",
"CMXX",
"MMMCLXIV",
"MCCCLXXXVI",
"DCCCXCVIII",
"MMMDCCCCXXXIV",
"CDXVIIII",
"MMCCXXXV",
"MDCCCXXXII",
"MMMMD",
"MMDCCLXIX",
"MMMMCCCLXXXXVI",
"MMDCCXLII",
"MMMDCCCVIIII",
"DCCLXXXIIII",
"MDCCCCXXXII",
"MMCXXVII",
"DCCCXXX",
"CCLXIX",
"MMMXI",
"MMMMCMLXXXXVIII",
"MMMMDLXXXVII",
"MMMMDCCCLX",
"MMCCLIV",
"CMIX",
"MMDCCCLXXXIIII",
"CLXXXII",
"MMCCCCXXXXV",
"MMMMDLXXXVIIII",
"MMMDCCCXXI",
"MMDCCCCLXXVI",
"MCCCCLXX",
"MMCDLVIIII",
"MMMDCCCLIX",
"MMMMCCCCXIX",
"MMMDCCCLXXV",
"XXXI",
"CDLXXXIII",
"MMMCXV",
"MMDCCLXIII",
"MMDXXX",
"MMMMCCCLVII",
"MMMDCI",
"MMMMCDLXXXIIII",
"MMMMCCCXVI",
"CCCLXXXVIII",
"MMMMCML",
"MMMMXXIV",
"MMMCCCCXXX",
"DCCX",
"MMMCCLX",
"MMDXXXIII",
"CCCLXIII",
"MMDCCXIII",
"MMMCCCXLIV",
"CLXXXXI",
"CXVI",
"MMMMCXXXIII",
"CLXX",
"DCCCXVIII",
"MLXVII",
"DLXXXX",
"MMDXXI",
"MMMMDLXXXXVIII",
"MXXII",
"LXI",
"DCCCCXLIII",
"MMMMDV",
"MMMMXXXIV",
"MDCCCLVIII",
"MMMCCLXXII",
"MMMMDCCXXXVI",
"MMMMLXXXIX",
"MDCCCLXXXI",
"MMMMDCCCXV",
"MMMMCCCCXI",
"MMMMCCCLIII",
"MDCCCLXXI",
"MMCCCCXI",
"MLXV",
"MMCDLXII",
"MMMMDXXXXII",
"MMMMDCCCXL",
"MMMMCMLVI",
"CCLXXXIV",
"MMMDCCLXXXVI",
"MMCLII",
"MMMCCCCXV",
"MMLXXXIII",
"MMMV",
"MMMV",
"DCCLXII",
"MMDCCCCXVI",
"MMDCXLVIII",
"CCLIIII",
"CCCXXV",
"MMDCCLXXXVIIII",
"MMMMDCLXXVIII",
"MMMMDCCCXCI",
"MMMMCCCXX",
"MMCCXLV",
"MMMDCCCLXIX",
"MMCCLXIIII",
"MMMDCCCXLIX",
"MMMMCCCLXIX",
"CMLXXXXI",
"MCMLXXXIX",
"MMCDLXI",
"MMDCLXXVIII",
"MMMMDCCLXI",
"MCDXXV",
"DL",
"CCCLXXII",
"MXVIIII",
"MCCCCLXVIII",
"CIII",
"MMMDCCLXXIIII",
"MMMDVIII",
"MMMMCCCLXXXXVII",
"MMDXXVII",
"MMDCCLXXXXV",
"MMMMCXLVI",
"MMMDCCLXXXII",
"MMMDXXXVI",
"MCXXII",
"CLI",
"DCLXXXIX",
"MMMCLI",
"MDCLXIII",
"MMMMDCCXCVII",
"MMCCCLXXXV",
"MMMDCXXVIII",
"MMMCDLX",
"MMMCMLII",
"MMMIV",
"MMMMDCCCLVIII",
"MMMDLXXXVIII",
"MCXXIV",
"MMMMLXXVI",
"CLXXIX",
"MMMCCCCXXVIIII",
"DCCLXXXV",
"MMMDCCCVI",
"LI",
"CLXXXVI",
"MMMMCCCLXXVI",
"MCCCLXVI",
"CCXXXIX",
"MMDXXXXI",
"MMDCCCXLI",
"DCCCLXXXVIII",
"MMMMDCCCIV",
"MDCCCCXV",
"MMCMVI",
"MMMMCMLXXXXV",
"MMDCCLVI",
"MMMMCCXLVIII",
"DCCCCIIII",
"MMCCCCIII",
"MMMDCCLXXXVIIII",
"MDCCCLXXXXV",
"DVII",
"MMMV",
"DCXXV",
"MMDCCCXCV",
"DCVIII",
"MMCDLXVI",
"MCXXVIII",
"MDCCXCVIII",
"MMDCLX",
"MMMDCCLXIV",
"MMCDLXXVII",
"MMDLXXXIIII",
"MMMMCCCXXII",
"MMMDCCCXLIIII",
"DCCCCLXVII",
"MMMCLXXXXIII",
"MCCXV",
"MMMMDCXI",
"MMMMDCLXXXXV",
"MMMCCCLII",
"MMCMIX",
"MMDCCXXV",
"MMDLXXXVI",
"MMMMDCXXVIIII",
"DCCCCXXXVIIII",
"MMCCXXXIIII",
"MMDCCLXXVIII",
"MDCCLXVIIII",
"MMCCLXXXV",
"MMMMDCCCLXXXVIII",
"MMCMXCI",
"MDXLII",
"MMMMDCCXIV",
"MMMMLI",
"DXXXXIII",
"MMDCCXI",
"MMMMCCLXXXIII",
"MMMDCCCLXXIII",
"MDCLVII",
"MMCD",
"MCCCXXVII",
"MMMMDCCIIII",
"MMMDCCXLVI",
"MMMCLXXXVII",
"MMMCCVIIII",
"MCCCCLXXIX",
"DL",
"DCCCLXXVI",
"MMDXCI",
"MMMMDCCCCXXXVI",
"MMCII",
"MMMDCCCXXXXV",
"MMMCDXLV",
"MMDCXXXXIV",
"MMD",
"MDCCCLXXXX",
"MMDCXLIII",
"MMCCXXXII",
"MMDCXXXXVIIII",
"DCCCLXXI",
"MDXCVIIII",
"MMMMCCLXXVIII",
"MDCLVIIII",
"MMMCCCLXXXIX",
"MDCLXXXV",
"MDLVIII",
"MMMMCCVII",
"MMMMDCXIV",
"MMMCCCLXIIII",
"MMIIII",
"MMMMCCCLXXIII",
"CCIII",
"MMMCCLV",
"MMMDXIII",
"MMMCCCXC",
"MMMDCCCXXI",
"MMMMCCCCXXXII",
"CCCLVI",
"MMMCCCLXXXVI",
"MXVIIII",
"MMMCCCCXIIII",
"CLXVII",
"MMMCCLXX",
"CCCCLXIV",
"MMXXXXII",
"MMMMCCLXXXX",
"MXL",
"CCXVI",
"CCCCLVIIII",
"MMCCCII",
"MCCCLVIII",
"MMMMCCCX",
"MCDLXXXXIV",
"MDCCCXIII",
"MMDCCCXL",
"MMMMCCCXXIII",
"DXXXIV",
"CVI",
"MMMMDCLXXX",
"DCCCVII",
"MMCMLXIIII",
"MMMDCCCXXXIII",
"DCCC",
"MDIII",
"MMCCCLXVI",
"MMMCCCCLXXI",
"MMDCCCCXVIII",
"CCXXXVII",
"CCCXXV",
"MDCCCXII",
"MMMCMV",
"MMMMCMXV",
"MMMMDCXCI",
"DXXI",
"MMCCXLVIIII",
"MMMMCMLII",
"MDLXXX",
"MMDCLXVI",
"CXXI",
"MMMDCCCLIIII",
"MMMCXXI",
"MCCIII",
"MMDCXXXXI",
"CCXCII",
"MMMMDXXXV",
"MMMCCCLXV",
"MMMMDLXV",
"MMMCCCCXXXII",
"MMMCCCVIII",
"DCCCCLXXXXII",
"MMCLXIV",
"MMMMCXI",
"MLXXXXVII",
"MMMCDXXXVIII",
"MDXXII",
"MLV",
"MMMMDLXVI",
"MMMCXII",
"XXXIII",
"MMMMDCCCXXVI",
"MMMLXVIIII",
"MMMLX",
"MMMCDLXVII",
"MDCCCLVII",
"MMCXXXVII",
"MDCCCCXXX",
"MMDCCCLXIII",
"MMMMDCXLIX",
"MMMMCMXLVIII",
"DCCCLXXVIIII",
"MDCCCLIII",
"MMMCMLXI",
"MMMMCCLXI",
"MMDCCCLIII",
"MMMDCCCVI",
"MMDXXXXIX",
"MMCLXXXXV",
"MMDXXX",
"MMMXIII",
"DCLXXIX",
"DCCLXII",
"MMMMDCCLXVIII",
"MDCCXXXXIII",
"CCXXXII",
"MMMMDCXXV",
"MMMCCCXXVIII",
"MDCVIII",
"MMMCLXXXXIIII",
"CLXXXI",
"MDCCCCXXXIII",
"MMMMDCXXX",
"MMMDCXXIV",
"MMMCCXXXVII",
"MCCCXXXXIIII",
"CXVIII",
"MMDCCCCIV",
"MMMMCDLXXV",
"MMMDLXIV",
"MDXCIII",
"MCCLXXXI",
"MMMDCCCXXIV",
"MCXLIII",
"MMMDCCCI",
"MCCLXXX",
"CCXV",
"MMDCCLXXI",
"MMDLXXXIII",
"MMMMDCXVII",
"MMMCMLXV",
"MCLXVIII",
"MMMMCCLXXVI",
"MMMDCCLXVIIII",
"MMMMDCCCIX",
"DLXXXXIX",
"DCCCXXII",
"MMMMIII",
"MMMMCCCLXXVI",
"DCCCXCIII",
"DXXXI",
"MXXXIIII",
"CCXII",
"MMMDCCLXXXIIII",
"MMMCXX",
"MMMCMXXVII",
"DCCCXXXX",
"MMCDXXXVIIII",
"MMMMDCCXVIII",
"LV",
"MMMDCCCCVI",
"MCCCII",
"MMCMLXVIIII",
"MDCCXI",
"MMMMDLXVII",
"MMCCCCLXI",
"MMDCCV",
"MMMCCCXXXIIII",
"MMMMDI",
"MMMDCCCXCV",
"MMDCCLXXXXI",
"MMMDXXVI",
"MMMDCCCLVI",
"MMDCXXX",
"MCCCVII",
"MMMMCCCLXII",
"MMMMXXV",
"MMCMXXV",
"MMLVI",
"MMDXXX",
"MMMMCVII",
"MDC",
"MCCIII",
"MMMMDCC",
"MMCCLXXV",
"MMDCCCXXXXVI",
"MMMMCCCLXV",
"CDXIIII",
"MLXIIII",
"CCV",
"MMMCMXXXI",
"CCCCLXVI",
"MDXXXII",
"MMMMCCCLVIII",
"MMV",
"MMMCLII",
"MCMLI",
"MMDCCXX",
"MMMMCCCCXXXVI",
"MCCLXXXI",
"MMMCMVI",
"DCCXXX",
"MMMMCCCLXV",
"DCCCXI",
"MMMMDCCCXIV",
"CCCXXI",
"MMDLXXV",
"CCCCLXXXX",
"MCCCLXXXXII",
"MMDCIX",
"DCCXLIIII",
"DXIV",
"MMMMCLII",
"CDLXI",
"MMMCXXVII",
"MMMMDCCCCLXIII",
"MMMDCLIIII",
"MCCCCXXXXII",
"MMCCCLX",
"CCCCLIII",
"MDCCLXXVI",
"MCMXXIII",
"MMMMDLXXVIII",
"MMDCCCCLX",
"MMMCCCLXXXX",
"MMMCDXXVI",
"MMMDLVIII",
"CCCLXI",
"MMMMDCXXII",
"MMDCCCXXI",
"MMDCCXIII",
"MMMMCLXXXVI",
"MDCCCCXXVI",
"MDV",
"MMDCCCCLXXVI",
"MMMMCCXXXVII",
"MMMDCCLXXVIIII",
"MMMCCCCLXVII",
"DCCXLI",
"MMCLXXXVIII",
"MCCXXXVI",
"MMDCXLVIII",
"MMMMCXXXII",
"MMMMDCCLXVI",
"MMMMCMLI",
"MMMMCLXV",
"MMMMDCCCXCIV",
"MCCLXXVII",
"LXXVIIII",
"DCCLII",
"MMMCCCXCVI",
"MMMCLV",
"MMDCCCXXXXVIII",
"DCCCXV",
"MXC",
"MMDCCLXXXXVII",
"MMMMCML",
"MMDCCCLXXVIII",
"DXXI",
"MCCCXLI",
"DCLXXXXI",
"MMCCCLXXXXVIII",
"MDCCCCLXXVIII",
"MMMMDXXV",
"MMMDCXXXVI",
"MMMCMXCVII",
"MMXVIIII",
"MMMDCCLXXIV",
"MMMCXXV",
"DXXXVIII",
"MMMMCLXVI",
"MDXII",
"MMCCCLXX",
"CCLXXI",
"DXIV",
"MMMCLIII",
"DLII",
"MMMCCCXLIX",
"MMCCCCXXVI",
"MMDCXLIII",
"MXXXXII",
"CCCLXXXV",
"MDCLXXVI",
"MDCXII",
"MMMCCCLXXXIII",
"MMDCCCCLXXXII",
"MMMMCCCLXXXV",
"MMDCXXI",
"DCCCXXX",
"MMMDCCCCLII",
"MMMDCCXXII",
"MMMMCDXCVIII",
"MMMCCLXVIIII",
"MMXXV",
"MMMMCDXIX",
"MMMMCCCX",
"MMMCCCCLXVI",
"MMMMDCLXXVIIII",
"MMMMDCXXXXIV",
"MMMCMXII",
"MMMMXXXIII",
"MMMMDLXXXII",
"DCCCLIV",
"MDXVIIII",
"MMMCLXXXXV",
"CCCCXX",
"MMDIX",
"MMCMLXXXVIII",
"DCCXLIII",
"DCCLX",
"D",
"MCCCVII",
"MMMMCCCLXXXIII",
"MDCCCLXXIIII",
"MMMDCCCCLXXXVII",
"MMMMCCCVII",
"MMMDCCLXXXXVI",
"CDXXXIV",
"MCCLXVIII",
"MMMMDLX",
"MMMMDXII",
"MMMMCCCCLIIII",
"MCMLXXXXIII",
"MMMMDCCCIII",
"MMDCLXXXIII",
"MDCCCXXXXIV",
"XXXXVII",
"MMMDCCCXXXII",
"MMMDCCCXLII",
"MCXXXV",
"MDCXXVIIII",
"MMMCXXXXIIII",
"MMMMCDXVII",
"MMMDXXIII",
"MMMMCCCCLXI",
"DCLXXXXVIIII",
"LXXXXI",
"CXXXIII",
"MCDX",
"MCCLVII",
"MDCXXXXII",
"MMMCXXIV",
"MMMMLXXXX",
"MMDCCCCXLV",
"MLXXX",
"MMDCCCCLX",
"MCDLIII",
"MMMCCCLXVII",
"MMMMCCCLXXIV",
"MMMDCVIII",
"DCCCCXXIII",
"MMXCI",
"MMDCCIV",
"MMMMDCCCXXXIV",
"CCCLXXI",
"MCCLXXXII",
"MCMIII",
"CCXXXI",
"DCCXXXVIII",
"MMMMDCCXLVIIII",
"MMMMCMXXXV",
"DCCCLXXV",
"DCCXCI",
"MMMMDVII",
"MMMMDCCCLXVIIII",
"CCCXCV",
"MMMMDCCXX",
"MCCCCII",
"MMMCCCXC",
"MMMCCCII",
"MMDCCLXXVII",
"MMDCLIIII",
"CCXLIII",
"MMMDCXVIII",
"MMMCCCIX",
"MCXV",
"MMCCXXV",
"MLXXIIII",
"MDCCXXVI",
"MMMCCCXX",
"MMDLXX",
"MMCCCCVI",
"MMDCCXX",
"MMMMDCCCCXCV",
"MDCCCXXXII",
"MMMMDCCCCXXXX",
"XCIV",
"MMCCCCLX",
"MMXVII",
"MLXXI",
"MMMDXXVIII",
"MDCCCCII",
"MMMCMLVII",
"MMCLXXXXVIII",
"MDCCCCLV",
"MCCCCLXXIIII",
"MCCCLII",
"MCDXLVI",
"MMMMDXVIII",
"DCCLXXXIX",
"MMMDCCLXIV",
"MDCCCCXLIII",
"CLXXXXV",
"MMMMCCXXXVI",
"MMMDCCCXXI",
"MMMMCDLXXVII",
"MCDLIII",
"MMCCXLVI",
"DCCCLV",
"MCDLXX",
"DCLXXVIII",
"MMDCXXXIX",
"MMMMDCLX",
"MMDCCLI",
"MMCXXXV",
"MMMCCXII",
"MMMMCMLXII",
"MMMMCCV",
"MCCCCLXIX",
"MMMMCCIII",
"CLXVII",
"MCCCLXXXXIIII",
"MMMMDCVIII",
"MMDCCCLXI",
"MMLXXIX",
"CMLXIX",
"MMDCCCXLVIIII",
"DCLXII",
"MMMCCCXLVII",
"MDCCCXXXV",
"MMMMDCCXCVI",
"DCXXX",
"XXVI",
"MMLXIX",
"MMCXI",
"DCXXXVII",
"MMMMCCCXXXXVIII",
"MMMMDCLXI",
"MMMMDCLXXIIII",
"MMMMVIII",
"MMMMDCCCLXII",
"MDCXCI",
"MMCCCXXIIII",
"CCCCXXXXV",
"MMDCCCXXI",
"MCVI",
"MMDCCLXVIII",
"MMMMCXL",
"MLXVIII",
"CMXXVII",
"CCCLV",
"MDCCLXXXIX",
"MMMCCCCLXV",
"MMDCCLXII",
"MDLXVI",
"MMMCCCXVIII",
"MMMMCCLXXXI",
"MMCXXVII",
"MMDCCCLXVIII",
"MMMCXCII",
"MMMMDCLVIII",
"MMMMDCCCXXXXII",
"MMDCCCCLXXXXVI",
"MDCCXL",
"MDCCLVII",
"MMMMDCCCLXXXVI",
"DCCXXXIII",
"MMMMDCCCCLXXXV",
"MMCCXXXXVIII",
"MMMCCLXXVIII",
"MMMDCLXXVIII",
"DCCCI",
"MMMMLXXXXVIIII",
"MMMCCCCLXXII",
"MMCLXXXVII",
"CCLXVI",
"MCDXLIII",
"MMCXXVIII",
"MDXIV",
"CCCXCVIII",
"CLXXVIII",
"MMCXXXXVIIII",
"MMMDCLXXXIV",
"CMLVIII",
"MCDLIX",
"MMMMDCCCXXXII",
"MMMMDCXXXIIII",
"MDCXXI",
"MMMDCXLV",
"MCLXXVIII",
"MCDXXII",
"IV",
"MCDLXXXXIII",
"MMMMDCCLXV",
"CCLI",
"MMMMDCCCXXXVIII",
"DCLXII",
"MCCCLXVII",
"MMMMDCCCXXXVI",
"MMDCCXLI",
"MLXI",
"MMMCDLXVIII",
"MCCCCXCIII",
"XXXIII",
"MMMDCLXIII",
"MMMMDCL",
"DCCCXXXXIIII",
"MMDLVII",
"DXXXVII",
"MCCCCXXIIII",
"MCVII",
"MMMMDCCXL",
"MMMMCXXXXIIII",
"MCCCCXXIV",
"MMCLXVIII",
"MMXCIII",
"MDCCLXXX",
"MCCCLIIII",
"MMDCLXXI",
"MXI",
"MCMLIV",
"MMMCCIIII",
"DCCLXXXVIIII",
"MDCLIV",
"MMMDCXIX",
"CMLXXXI",
"DCCLXXXVII",
"XXV",
"MMMXXXVI",
"MDVIIII",
"CLXIII",
"MMMCDLVIIII",
"MMCCCCVII",
"MMMLXX",
"MXXXXII",
"MMMMCCCLXVIII",
"MMDCCCXXVIII",
"MMMMDCXXXXI",
"MMMMDCCCXXXXV",
"MMMXV",
"MMMMCCXVIIII",
"MMDCCXIIII",
"MMMXXVII",
"MDCCLVIIII",
"MMCXXIIII",
"MCCCLXXIV",
"DCLVIII",
"MMMLVII",
"MMMCXLV",
"MMXCVII",
"MMMCCCLXXXVII",
"MMMMCCXXII",
"DXII",
"MMMDLV",
"MCCCLXXVIII",
"MMMCLIIII",
"MMMMCLXXXX",
"MMMCLXXXIIII",
"MDCXXIII",
"MMMMCCXVI",
"MMMMDLXXXIII",
"MMMDXXXXIII",
"MMMMCCCCLV",
"MMMDLXXXI",
"MMMCCLXXVI",
"MMMMXX",
"MMMMDLVI",
"MCCCCLXXX",
"MMMXXII",
"MMXXII",
"MMDCCCCXXXI",
"MMMDXXV",
"MMMDCLXXXVIIII",
"MMMDLXXXXVII",
"MDLXIIII",
"CMXC",
"MMMXXXVIII",
"MDLXXXVIII",
"MCCCLXXVI",
"MMCDLIX",
"MMDCCCXVIII",
"MDCCCXXXXVI",
"MMMMCMIV",
"MMMMDCIIII",
"MMCCXXXV",
"XXXXVI",
"MMMMCCXVII",
"MMCCXXIV",
"MCMLVIIII",
"MLXXXIX",
"MMMMLXXXIX",
"CLXXXXIX",
"MMMDCCCCLVIII",
"MMMMCCLXXIII",
"MCCCC",
"DCCCLIX",
"MMMCCCLXXXII",
"MMMCCLXVIIII",
"MCLXXXV",
"CDLXXXVII",
"DCVI",
"MMX",
"MMCCXIII",
"MMMMDCXX",
"MMMMXXVIII",
"DCCCLXII",
"MMMMCCCXLIII",
"MMMMCLXV",
"DXCI",
"MMMMCLXXX",
"MMMDCCXXXXI",
"MMMMXXXXVI",
"DCLX",
"MMMCCCXI",
"MCCLXXX",
"MMCDLXXII",
"DCCLXXI",
"MMMCCCXXXVI",
"MCCCCLXXXVIIII",
"CDLVIII",
"DCCLVI",
"MMMMDCXXXVIII",
"MMCCCLXXXIII",
"MMMMDCCLXXV",
"MMMXXXVI",
"CCCLXXXXIX",
"CV",
"CCCCXIII",
"CCCCXVI",
"MDCCCLXXXIIII",
"MMDCCLXXXII",
"MMMMCCCCLXXXI",
"MXXV",
"MMCCCLXXVIIII",
"MMMCCXII",
"MMMMCCXXXIII",
"MMCCCLXXXVI",
"MMMDCCCLVIIII",
"MCCXXXVII",
"MDCLXXV",
"XXXV",
"MMDLI",
"MMMCCXXX",
"MMMMCXXXXV",
"CCCCLIX",
"MMMMDCCCLXXIII",
"MMCCCXVII",
"DCCCXVI",
"MMMCCCXXXXV",
"MDCCCCXCV",
"CLXXXI",
"MMMMDCCLXX",
"MMMDCCCIII",
"MMCLXXVII",
"MMMDCCXXIX",
"MMDCCCXCIIII",
"MMMCDXXIIII",
"MMMMXXVIII",
"MMMMDCCCCLXVIII",
"MDCCCXX",
"MMMMCDXXI",
"MMMMDLXXXIX",
"CCXVI",
"MDVIII",
"MMCCLXXI",
"MMMDCCCLXXI",
"MMMCCCLXXVI",
"MMCCLXI",
"MMMMDCCCXXXIV",
"DLXXXVI",
"MMMMDXXXII",
"MMMXXIIII",
"MMMMCDIV",
"MMMMCCCXLVIII",
"MMMMCXXXVIII",
"MMMCCCLXVI",
"MDCCXVIII",
"MMCXX",
"CCCLIX",
"MMMMDCCLXXII",
"MDCCCLXXV",
"MMMMDCCCXXIV",
"DCCCXXXXVIII",
"MMMDCCCCXXXVIIII",
"MMMMCCXXXV",
"MDCLXXXIII",
"MMCCLXXXIV",
"MCLXXXXIIII",
"DXXXXIII",
"MCCCXXXXVIII",
"MMCLXXIX",
"MMMMCCLXIV",
"MXXII",
"MMMCXIX",
"MDCXXXVII",
"MMDCCVI",
"MCLXXXXVIII",
"MMMCXVI",
"MCCCLX",
"MMMCDX",
"CCLXVIIII",
"MMMCCLX",
"MCXXVIII",
"LXXXII",
"MCCCCLXXXI",
"MMMI",
"MMMCCCLXIV",
"MMMCCCXXVIIII",
"CXXXVIII",
"MMCCCXX",
"MMMCCXXVIIII",
"MCCLXVI",
"MMMCCCCXXXXVI",
"MMDCCXCIX",
"MCMLXXI",
"MMCCLXVIII",
"CDLXXXXIII",
"MMMMDCCXXII",
"MMMMDCCLXXXVII",
"MMMDCCLIV",
"MMCCLXIII",
"MDXXXVII",
"DCCXXXIIII",
"MCII",
"MMMDCCCLXXI",
"MMMLXXIII",
"MDCCCLIII",
"MMXXXVIII",
"MDCCXVIIII",
"MDCCCCXXXVII",
"MMCCCXVI",
"MCMXXII",
"MMMCCCLVIII",
"MMMMDCCCXX",
"MCXXIII",
"MMMDLXI",
"MMMMDXXII",
"MDCCCX",
"MMDXCVIIII",
"MMMDCCCCVIII",
"MMMMDCCCCXXXXVI",
"MMDCCCXXXV",
"MMCXCIV",
"MCMLXXXXIII",
"MMMCCCLXXVI",
"MMMMDCLXXXV",
"CMLXIX",
"DCXCII",
"MMXXVIII",
"MMMMCCCXXX",
"XXXXVIIII"]