Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Roman-numerals-Encode/ECL/roman-numerals-encode.ecl
Normal file
25
Task/Roman-numerals-Encode/ECL/roman-numerals-encode.ecl
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
RomanEncode(UNSIGNED Int) := FUNCTION
|
||||
SetWeights := [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
|
||||
SetSymbols := ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];
|
||||
ProcessRec := RECORD
|
||||
UNSIGNED val;
|
||||
STRING Roman;
|
||||
END;
|
||||
dsWeights := DATASET(13,TRANSFORM(ProcessRec,SELF.val := Int, SELF := []));
|
||||
|
||||
SymbolStr(i,n,STRING s) := CHOOSE(n+1,'',SetSymbols[i],SetSymbols[i]+SetSymbols[i],SetSymbols[i]+SetSymbols[i]+SetSymbols[i],s);
|
||||
|
||||
RECORDOF(dsWeights) XF(dsWeights L, dsWeights R, INTEGER C) := TRANSFORM
|
||||
ThisVal := IF(C=1,R.Val,L.Val);
|
||||
IsDone := ThisVal = 0;
|
||||
SELF.Roman := IF(IsDone,L.Roman,L.Roman + SymbolStr(C,ThisVal DIV SetWeights[C],L.Roman));
|
||||
SELF.val := IF(IsDone,0,ThisVal - ((ThisVal DIV SetWeights[C])*SetWeights[C]));
|
||||
END;
|
||||
i := ITERATE(dsWeights,XF(LEFT,RIGHT,COUNTER));
|
||||
RETURN i[13].Roman;
|
||||
END;
|
||||
|
||||
RomanEncode(1954); //MCMLIV
|
||||
RomanEncode(1990 ); //MCMXC
|
||||
RomanEncode(2008 ); //MMVIII
|
||||
RomanEncode(1666); //MDCLXVI
|
||||
Loading…
Add table
Add a link
Reference in a new issue