Sha256: 67e2409daa9e9f148a12356ea73bc8849348af2fc91321bf1bf0ea4360a423f5

Contents?: true

Size: 1.36 KB

Versions: 276

Compression:

Stored size: 1.36 KB

Contents

unit uRomanNumerals;

interface

type
  RomanNumeralHelper = record helper for integer
  public
    function ToRoman: string;
  end;

implementation
uses System.Generics.Collections;

function RomanNumeralHelper.ToRoman: string;
var ArabicToRomanConversions: TList<TPair<integer, string>>;
    conversion: TPair<integer, string>;
    lInt: integer;
begin
  result := '';
  lInt := self;
  ArabicToRomanConversions := TList<TPair<integer, string>>.create;
  with ArabicToRomanConversions do
  begin
    Add(TPair<integer, string>.Create(1000, 'M'));
    Add(TPair<integer, string>.Create(900,  'CM'));
    Add(TPair<integer, string>.Create(500,  'D'));
    Add(TPair<integer, string>.Create(400,  'CD'));
    Add(TPair<integer, string>.Create(100,  'C'));
    Add(TPair<integer, string>.Create(90,   'XC'));
    Add(TPair<integer, string>.Create(50,   'L'));
    Add(TPair<integer, string>.Create(40,   'XL'));
    Add(TPair<integer, string>.Create(10,   'X'));
    Add(TPair<integer, string>.Create(9,    'IX'));
    Add(TPair<integer, string>.Create(5,    'V'));
    Add(TPair<integer, string>.Create(4,    'IV'));
    Add(TPair<integer, string>.Create(1,    'I'));
  end;

  for conversion in ArabicToRomanConversions do
  begin
    while (lInt div conversion.Key) > 0 do
    begin
      lInt := lInt - conversion.Key;
      result := result + conversion.Value;
    end;
  end;
end;

end.

Version data entries

276 entries across 276 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.179 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.178 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.177 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.176 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.175 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.174 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.173 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.172 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.171 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.170 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.169 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.167 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.166 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.165 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.164 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.163 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.162 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.161 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas
trackler-2.2.1.160 tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas