// Roman.cs - Roman numeral <-> Arabic numeral conversion script! // // 5/23/99, really early in the morning (actually really late last night) // // not very useful, but it had to be done! (right, Grym?) // // // examples: Roman(1967) returns "MCMLXVII" // Arabic("MCMLXVII") returns 1967 // function Roman(%number) { %roman = ""; while (%number >= 1000) { %roman = %roman @ "M"; %number = %number - 1000; } if (%number >= 900) { %roman = %roman @ "CM"; %number = %number - 900; } if (%number >= 500) { %roman = %roman @ "D"; %number = %number - 500; } if (%number >= 400) { %roman = %roman @ "CD"; %number = %number - 400; } while (%number >= 100) { %roman = %roman @ "C"; %number = %number - 100; } if (%number >= 90) { %roman = %roman @ "XC"; %number = %number - 90; } if (%number >= 50) { %roman = %roman @ "L"; %number = %number - 50; } if (%number >= 40) { %roman = %roman @ "XL"; %number = %number - 40; } while (%number >= 10) { %roman = %roman @ "X"; %number = %number - 10; } if (%number >= 9) { %roman = %roman @ "IX"; %number = %number - 9; } if (%number >= 5) { %roman = %roman @ "V"; %number = %number - 5; } if (%number >= 4) { %roman = %roman @ "IV"; %number = %number - 4; } while (%number >= 1) { %roman = %roman @ "I"; %number = %number - 1; } return %roman; } function Arabic(%roman) { %number = 0; %i = 0; while (String::getSubStr(%roman, %i, 1) == "M") { %number = %number + 1000; %i++; } if (String::getSubStr(%roman, %i, 2) == "CM") { %number = %number + 900; %i = %i + 2; } if (String::getSubStr(%roman, %i, 1) == "D") { %number = %number + 500; %i++; } if (String::getSubStr(%roman, %i, 2) == "CD") { %number = %number + 400; %i = %i + 2; } while (String::getSubStr(%roman, %i, 1) == "C") { %number = %number + 100; %i++; } if (String::getSubStr(%roman, %i, 2) == "XC") { %number = %number + 90; %i = %i + 2; } if (String::getSubStr(%roman, %i, 1) == "L") { %number = %number + 50; %i++; } if (String::getSubStr(%roman, %i, 2) == "XL") { %number = %number + 40; %i = %i + 2; } while (String::getSubStr(%roman, %i, 1) == "X") { %number = %number + 10; %i++; } if (String::getSubStr(%roman, %i, 2) == "IX") { %number = %number + 9; %i = %i + 2; } if (String::getSubStr(%roman, %i, 1) == "V") { %number = %number + 5; %i++; } if (String::getSubStr(%roman, %i, 2) == "IV") { %number = %number + 4; %i = %i + 2; } while (String::getSubStr(%roman, %i, 1) == "I") { %number = %number + 1; %i++; } return %number; }