Commit 7d9cf822 authored by Illia Baida's avatar Illia Baida

Updated Converter

parent fde42a4a
...@@ -13,6 +13,8 @@ export default class Converter { ...@@ -13,6 +13,8 @@ export default class Converter {
static _maxDecimalGroupSigns = 3; static _maxDecimalGroupSigns = 3;
static _decimalToPropagate = null;
static _validateSign(sign) { static _validateSign(sign) {
return sign in this.Dictionary; return sign in this.Dictionary;
} }
...@@ -22,32 +24,48 @@ export default class Converter { ...@@ -22,32 +24,48 @@ export default class Converter {
} }
static _extractRomanSign(sign, value) { static _extractRomanSign(sign, value) {
if (value / this.Dictionary[sign] >= 1) { const upperDictionaryValue = this.Dictionary[
this._dictionaryNames[this._dictionaryNames.indexOf(sign) - 1]
];
if (
value / this.Dictionary[sign] >= 1 &&
(value / upperDictionaryValue < 1 || upperDictionaryValue === undefined)
) {
console.log('extract', sign, value);
return value - this.Dictionary[sign]; return value - this.Dictionary[sign];
} else { } else {
return false; return false;
} }
} }
static toRoman(decimalValue) { static _extractMultiple(sign, dictionary) {
let romanExpression = ""; const extractResult = this._extractRomanSign(
let decimal = decimalValue; sign,
this._decimalToPropagate
);
const calculatedDictionary = this._dictionaryNames.reduce( if (extractResult === 0) {
(dictionary, sign) => { dictionary[sign] = dictionary[sign] ? dictionary[sign] + 1 : 1;
const extractResult = this._extractRomanSign(sign, decimal); return dictionary;
}
if (extractResult === 0) { if (typeof extractResult === "number") {
return dictionary; this._decimalToPropagate = extractResult;
} dictionary[sign] = dictionary[sign] ? dictionary[sign] + 1 : 1;
if (typeof extractResult === "number") { return this._extractMultiple(sign, dictionary);
decimal = extractResult; }
dictionary[sign] = dictionary[sign] ? dictionary[sign] + 1 : 1;
}
return dictionary; return dictionary;
}, }
static toRoman(decimalValue) {
let romanExpression = "";
this._decimalToPropagate = decimalValue;
const calculatedDictionary = this._dictionaryNames.reduce(
(dictionary, sign) => this._extractMultiple(sign, dictionary),
{} {}
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment