Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
|
|
@ -1,39 +1,20 @@
|
|||
function Rim2Arab(S : String) : Integer;
|
||||
const //римские числа на соответствующие десятичные числа
|
||||
R : array[1..14] of String[2] = ('M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I',' ');
|
||||
A : array[1..14] of Integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0);
|
||||
function romanDecode(roman: string): integer;
|
||||
begin
|
||||
var i := 1;
|
||||
var values := Dict('I' to 1, 'V' to 5, 'X' to 10, 'L' to 50, 'C' to 100, 'D' to 500, 'M' to 1000);
|
||||
Result := 0;
|
||||
while S.Length > 0 do
|
||||
begin
|
||||
while S.IndexOf(R[i]) = 0 do
|
||||
begin
|
||||
S := S.Remove(0, R[i].Length);
|
||||
Result += A[i]
|
||||
end;
|
||||
i += 1;
|
||||
end;
|
||||
var prev := 0;
|
||||
for var i := roman.Length downto 1 do
|
||||
begin
|
||||
var curr := values[roman[i]];
|
||||
if curr < prev
|
||||
then Result -= curr
|
||||
else Result += curr;
|
||||
prev := curr;
|
||||
end;
|
||||
end;
|
||||
|
||||
const
|
||||
L = 'IVXLCDM';
|
||||
begin
|
||||
var S := 'MDCLXVI';//'roman numeral:';
|
||||
Write(S,': ');
|
||||
var index := 1;
|
||||
repeat
|
||||
if L.IndexOf(S[index]) < 0 then
|
||||
index += 1
|
||||
else
|
||||
begin
|
||||
var Rim : String := '';
|
||||
repeat
|
||||
Rim += S[index];
|
||||
S := S.Remove(index - 1, 1);
|
||||
until (S.Length < index) or (L.IndexOf(S[index]) < 0);
|
||||
S := S.Insert(index - 1, Rim2Arab(Rim).ToString);
|
||||
end;
|
||||
until index > S.Length;
|
||||
WriteLn(S);
|
||||
var romans := |'I', 'III', 'IV', 'VIII', 'XLIX', 'CCII',
|
||||
'CDXXXIII', 'MCMXC', 'MMVIII', 'MDCLXVI'|;
|
||||
foreach var roman in romans do
|
||||
writeln(roman:8, romanDecode(roman):7);
|
||||
end.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue