From bb9361af452a98c8fc86408bfbc106fe09f5098b Mon Sep 17 00:00:00 2001 From: lexfor Date: Tue, 27 Jul 2021 18:26:27 +0300 Subject: [PATCH 1/2] Lesson-3: added classes for number operations --- 26.07.2021(Task 2)/Numbers.js | 71 +++++++++++++++++++++ 26.07.2021(Task 2)/NumbersDevide.js | 21 ++++++ 26.07.2021(Task 2)/NumbersDifference.js | 21 ++++++ 26.07.2021(Task 2)/NumbersMultiplication.js | 21 ++++++ 26.07.2021(Task 2)/NumbersSumm.js | 21 ++++++ 5 files changed, 155 insertions(+) create mode 100644 26.07.2021(Task 2)/Numbers.js create mode 100644 26.07.2021(Task 2)/NumbersDevide.js create mode 100644 26.07.2021(Task 2)/NumbersDifference.js create mode 100644 26.07.2021(Task 2)/NumbersMultiplication.js create mode 100644 26.07.2021(Task 2)/NumbersSumm.js diff --git a/26.07.2021(Task 2)/Numbers.js b/26.07.2021(Task 2)/Numbers.js new file mode 100644 index 0000000..1d01ec8 --- /dev/null +++ b/26.07.2021(Task 2)/Numbers.js @@ -0,0 +1,71 @@ +export default class Numbers { + constructor(firstNumber, secondNumber) { + this.firstNumber = firstNumber; + this.secondNumber = secondNumber; + this.result = 0; + } + + toMorze() { + let digitArray = []; + digitArray = String(this.result).split(''); + return digitArray.map(this.fromSybbolToMorze); + } + + toRoman() { + const discharge = [['I', 'V'], + ['X', 'L'], + ['C', 'D'], + ['M', '']]; + + const position = [[], + [[0, 1, 0]], + [[0, 2, 0]], + [[0, 3, 0]], + [[0, 1, 1], [0, 1, 0]], + [[0, 1, 1]], + [[0, 1, 0], [0, 1, 1]], + [[0, 2, 0], [0, 1, 1]], + [[0, 3, 0], [0, 1, 1]], + [[1, 1, 0], [0, 1, 0]]]; + + let romanNumber = ''; + + const digitArray = String(this.result).split(''); + digitArray.reverse(); + digitArray.forEach((number, index) => { + position[number].forEach((element) => { + const romanDigit = discharge[index + element[0]][element[2]].repeat(element[1]); + romanNumber = romanNumber.concat(romanDigit); + }); + }); + + return romanNumber.split('').reverse().join(''); + } + + static fromSybbolToMorze(symbol) { + switch (symbol) { + case '0': + return '-----'; + case '1': + return '.----'; + case '2': + return '..---'; + case '3': + return '...--'; + case '4': + return '....-'; + case '5': + return '.....'; + case '6': + return '-....'; + case '7': + return '--...'; + case '8': + return '---..'; + case '9': + return '----.'; + default: + return symbol; + } + } +} diff --git a/26.07.2021(Task 2)/NumbersDevide.js b/26.07.2021(Task 2)/NumbersDevide.js new file mode 100644 index 0000000..5e6567c --- /dev/null +++ b/26.07.2021(Task 2)/NumbersDevide.js @@ -0,0 +1,21 @@ +import Numbers from './Numbers'; + +export default class NumbersDevide extends Numbers { + devide(resultView) { + this.result = this.firstNumber / this.secondNumber; + if (this.result < 0) { + console.log('canot convert negative number'); + return this.result; + } + switch (resultView) { + case 'roman': + return this.toRoman(); + case 'morze': + return this.toMorze(); + case 'arabiс': + return this.result; + default: + return this.result; + } + } +} diff --git a/26.07.2021(Task 2)/NumbersDifference.js b/26.07.2021(Task 2)/NumbersDifference.js new file mode 100644 index 0000000..bce4959 --- /dev/null +++ b/26.07.2021(Task 2)/NumbersDifference.js @@ -0,0 +1,21 @@ +import Numbers from './Numbers'; + +export default class NumbersDifference extends Numbers { + difference(resultView) { + this.result = this.firstNumber - this.secondNumber; + if (this.result < 0) { + console.log('canot convert negative number'); + return this.result; + } + switch (resultView) { + case 'roman': + return this.toRoman(); + case 'morze': + return this.toMorze(); + case 'arabiс': + return this.result; + default: + return this.result; + } + } +} diff --git a/26.07.2021(Task 2)/NumbersMultiplication.js b/26.07.2021(Task 2)/NumbersMultiplication.js new file mode 100644 index 0000000..8fde5ac --- /dev/null +++ b/26.07.2021(Task 2)/NumbersMultiplication.js @@ -0,0 +1,21 @@ +import Numbers from './Numbers'; + +export default class NumbersMultiplication extends Numbers { + multiplication(resultView) { + this.result = this.firstNumber * this.secondNumber; + if (this.result < 0) { + console.log('canot convert negative number'); + return this.result; + } + switch (resultView) { + case 'roman': + return this.toRoman(); + case 'morze': + return this.toMorze(); + case 'arabiс': + return this.result; + default: + return this.result; + } + } +} diff --git a/26.07.2021(Task 2)/NumbersSumm.js b/26.07.2021(Task 2)/NumbersSumm.js new file mode 100644 index 0000000..04d7655 --- /dev/null +++ b/26.07.2021(Task 2)/NumbersSumm.js @@ -0,0 +1,21 @@ +import Numbers from './Numbers'; + +export default class NumbersSumm extends Numbers { + summ(resultView) { + this.result = this.firstNumber + this.secondNumber; + if (this.result < 0) { + console.log('canot convert negative number'); + return this.result; + } + switch (resultView) { + case 'roman': + return this.toRoman(); + case 'morze': + return this.toMorze(); + case 'arabiс': + return this.result; + default: + return this.result; + } + } +} From df5758f602ca321d770d3ce66b77c3fe270eed77 Mon Sep 17 00:00:00 2001 From: lexfor Date: Thu, 29 Jul 2021 11:44:06 +0300 Subject: [PATCH 2/2] Lesson-3: fixed toMorze --- 26.07.2021(Task 2)/Numbers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/26.07.2021(Task 2)/Numbers.js b/26.07.2021(Task 2)/Numbers.js index 1d01ec8..17e6093 100644 --- a/26.07.2021(Task 2)/Numbers.js +++ b/26.07.2021(Task 2)/Numbers.js @@ -42,7 +42,7 @@ export default class Numbers { return romanNumber.split('').reverse().join(''); } - static fromSybbolToMorze(symbol) { + fromSybbolToMorze(symbol) { switch (symbol) { case '0': return '-----';