diff --git a/index.js b/index.js index 859ccde..3885bc3 100644 --- a/index.js +++ b/index.js @@ -12,4 +12,4 @@ console.info(romanTime('00:00')); console.info(romanTime('23:59')); // Выбросится ошибка [TypeError: Неверное время] -console.info(romanTime('24:00')); +console.info(romanTime()); diff --git a/roman-time.js b/roman-time.js index f66353e..9e20599 100644 --- a/roman-time.js +++ b/roman-time.js @@ -1,11 +1,51 @@ 'use strict'; +/** + * @param {int} num – целое число + * @returns {String} – число римскими цифрами + */ +function toRoman(num) { + var roman = ""; + var i = 0; + if (num === 0) { + return "N"; + } + var Romanic = ["L", "XL", "X", "IX", "V", "IV", "I", "N"]; + var Arab = [50, 40, 10, 9, 5, 4, 1, 0]; + for (i = 0; i < Arab.length; i++) { + if (num>= Arab[i] && num !== 0) { + roman += Romanic[i]; + num -= Arab[i]; + i = 0; + } + } + + return roman; +} + +/** + * @param {String} time – время в формате HH:MM (например, 09:05) + * @returns {bool} – правильно введено или нет + */ +function checkTime(time) { + return /^([0-1]\d|2[0-3])(:[0-5]\d)$/.test(time); +} + /** * @param {String} time – время в формате HH:MM (например, 09:05) * @returns {String} – время римскими цифрами (IX:V) */ function romanTime(time) { - // Немного авторского кода и замечательной магии + var error = new TypeError("Неверное время"); + if (!checkTime(time)) { + throw error; + } + var hours = time.split(":")[0]; + var minutes = time.split(":")[1]; + var hoursStr = toRoman(Number(hours)); + var minutesStr = toRoman(Number(minutes)); + time = hoursStr + ":" + minutesStr; + return time; }