From c282a8fee2683700376d9f4c17d39edf1f499f41 Mon Sep 17 00:00:00 2001 From: chrighter Date: Sun, 9 Oct 2016 20:59:32 +0600 Subject: [PATCH 1/5] Update roman-time.js --- roman-time.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/roman-time.js b/roman-time.js index f66353e..d094b5b 100644 --- a/roman-time.js +++ b/roman-time.js @@ -4,9 +4,62 @@ * @param {String} time – время в формате HH:MM (например, 09:05) * @returns {String} – время римскими цифрами (IX:V) */ +var arabic = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60]; +var roman = ["N", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XX", "XXX", "XL", "L", "LX"]; + +var hour; +var minute; +var roman_hour = ""; +var roman_minute = ""; +var roman_number = ""; + +function isCorrect(hour, minute) { + if (hour.length > 2 || minute.length > 2) { + return false; + } + if (parseInt(hour, 10) > 23 || parseInt(hour, 10) < 0 || parseInt(minute, 10) > 59 || parseInt(minute, 10) < 0) { + return false; + } + + return true; +} + +function translate(number) { + var i = 0; + if (number === 0) { + roman_number += "N"; + return roman_number; + } + for (i = 0; i < arabic.length; i += 1) { + if (number < arabic[i]) { + number -= arabic[i - 1]; + roman_number += roman[i - 1]; + if (number === 0) { + return roman_number; + } else { + i = 0; + translate(number); + } + return roman_number; + } + } +} + function romanTime(time) { // Немного авторского кода и замечательной магии - return time; + hour = parseInt(time.split(":")[0], 10); + minute = parseInt(time.split(":")[1], 10); + if (isCorrect(hour, minute)) { + roman_hour = translate(hour); + roman_number = ""; + roman_minute = translate(minute); + roman_number = ""; + time = roman_hour + ":" + roman_minute; + return time; + } else { + throw new TypeError("Неверное время"); + } + } module.exports = romanTime; From c6220fbe7be0f6fe5e92564aa5543446f0bd0c9f Mon Sep 17 00:00:00 2001 From: chrighter Date: Sun, 9 Oct 2016 21:14:55 +0600 Subject: [PATCH 2/5] Update roman-time.js --- roman-time.js | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/roman-time.js b/roman-time.js index d094b5b..af51fbc 100644 --- a/roman-time.js +++ b/roman-time.js @@ -5,19 +5,21 @@ * @returns {String} – время римскими цифрами (IX:V) */ var arabic = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60]; -var roman = ["N", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XX", "XXX", "XL", "L", "LX"]; +var roman = ["N", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", + "IX", "X", "XX", "XXX", "XL", "L", "LX"]; var hour; var minute; -var roman_hour = ""; -var roman_minute = ""; -var roman_number = ""; +var romanHour = ""; +var romanMinute = ""; +var romanNumber = ""; function isCorrect(hour, minute) { if (hour.length > 2 || minute.length > 2) { return false; } - if (parseInt(hour, 10) > 23 || parseInt(hour, 10) < 0 || parseInt(minute, 10) > 59 || parseInt(minute, 10) < 0) { + if (parseInt(hour, 10) > 23 || parseInt(hour, 10) < 0 + || parseInt(minute, 10) > 59 || parseInt(minute, 10) < 0) { return false; } @@ -27,20 +29,21 @@ function isCorrect(hour, minute) { function translate(number) { var i = 0; if (number === 0) { - roman_number += "N"; - return roman_number; + romanNumber += "N"; + return romanNumber; } for (i = 0; i < arabic.length; i += 1) { if (number < arabic[i]) { number -= arabic[i - 1]; - roman_number += roman[i - 1]; - if (number === 0) { - return roman_number; - } else { + romanNumber += roman[i - 1]; + if (number !== 0) { + //return romanNumber; + //} else { i = 0; translate(number); } - return roman_number; + + return romanNumber; } } } @@ -50,16 +53,16 @@ function romanTime(time) { hour = parseInt(time.split(":")[0], 10); minute = parseInt(time.split(":")[1], 10); if (isCorrect(hour, minute)) { - roman_hour = translate(hour); - roman_number = ""; - roman_minute = translate(minute); - roman_number = ""; - time = roman_hour + ":" + roman_minute; - return time; + romanHour = translate(hour); + romanNumber = ""; + romanMinute = translate(minute); + romanNumber = ""; + time = romanHour + ":" + romanMinute; } else { throw new TypeError("Неверное время"); } - + + return time; } module.exports = romanTime; From 191846e9c9fa455e9bd8657adba374a463c0a297 Mon Sep 17 00:00:00 2001 From: chrighter Date: Sun, 9 Oct 2016 22:13:38 +0600 Subject: [PATCH 3/5] Update roman-time.js --- roman-time.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/roman-time.js b/roman-time.js index af51fbc..d2ea518 100644 --- a/roman-time.js +++ b/roman-time.js @@ -5,8 +5,8 @@ * @returns {String} – время римскими цифрами (IX:V) */ var arabic = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60]; -var roman = ["N", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", - "IX", "X", "XX", "XXX", "XL", "L", "LX"]; +var roman = ["N", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", + "IX", "X", "XX", "XXX", "XL", "L", "LX"]; var hour; var minute; @@ -18,8 +18,8 @@ function isCorrect(hour, minute) { if (hour.length > 2 || minute.length > 2) { return false; } - if (parseInt(hour, 10) > 23 || parseInt(hour, 10) < 0 - || parseInt(minute, 10) > 59 || parseInt(minute, 10) < 0) { + if (parseInt(hour, 10) > 23 || parseInt(hour, 10) < 0 || + parseInt(minute, 10) > 59 || parseInt(minute, 10) < 0) { return false; } @@ -30,15 +30,15 @@ function translate(number) { var i = 0; if (number === 0) { romanNumber += "N"; + return romanNumber; } + for (i = 0; i < arabic.length; i += 1) { if (number < arabic[i]) { number -= arabic[i - 1]; romanNumber += roman[i - 1]; if (number !== 0) { - //return romanNumber; - //} else { i = 0; translate(number); } From 83a63beb97d056a66588a9d0222dc0d679968769 Mon Sep 17 00:00:00 2001 From: chrighter Date: Sun, 9 Oct 2016 22:56:58 +0600 Subject: [PATCH 4/5] Update roman-time.js --- roman-time.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/roman-time.js b/roman-time.js index d2ea518..d1bdd10 100644 --- a/roman-time.js +++ b/roman-time.js @@ -1,4 +1,4 @@ -'use strict'; +"use strict"; /** * @param {String} time – время в формате HH:MM (например, 09:05) @@ -8,8 +8,6 @@ var arabic = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60]; var roman = ["N", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XX", "XXX", "XL", "L", "LX"]; -var hour; -var minute; var romanHour = ""; var romanMinute = ""; var romanNumber = ""; @@ -50,8 +48,8 @@ function translate(number) { function romanTime(time) { // Немного авторского кода и замечательной магии - hour = parseInt(time.split(":")[0], 10); - minute = parseInt(time.split(":")[1], 10); + var hour = parseInt(time.split(":")[0], 10); + var minute = parseInt(time.split(":")[1], 10); if (isCorrect(hour, minute)) { romanHour = translate(hour); romanNumber = ""; From 8d88560d2125d8b6c876975662fb49169c05ea54 Mon Sep 17 00:00:00 2001 From: chrighter Date: Sun, 9 Oct 2016 23:16:23 +0600 Subject: [PATCH 5/5] Update roman-time.js --- roman-time.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/roman-time.js b/roman-time.js index d1bdd10..58137a0 100644 --- a/roman-time.js +++ b/roman-time.js @@ -12,18 +12,31 @@ var romanHour = ""; var romanMinute = ""; var romanNumber = ""; -function isCorrect(hour, minute) { +function isCorrectCount(hour, minute) { if (hour.length > 2 || minute.length > 2) { return false; } - if (parseInt(hour, 10) > 23 || parseInt(hour, 10) < 0 || - parseInt(minute, 10) > 59 || parseInt(minute, 10) < 0) { + + return true; +} + +function isCorrectHour(hour) { + if (hour > 23 || hour < 0 || typeof hour === "None") { + return false; + } + + return true; +} + +function isCorrectMinute(minute) { + if (minute > 59 || minute < 0 || typeof minute === "None") { return false; } return true; } +// jshint maxdepth:5 function translate(number) { var i = 0; if (number === 0) { @@ -50,7 +63,7 @@ function romanTime(time) { // Немного авторского кода и замечательной магии var hour = parseInt(time.split(":")[0], 10); var minute = parseInt(time.split(":")[1], 10); - if (isCorrect(hour, minute)) { + if (isCorrectMinute(minute) && isCorrectCount(hour, minute) && isCorrectHour(hour)) { romanHour = translate(hour); romanNumber = ""; romanMinute = translate(minute);