HakerRank
Day of Programmer
by syjsdev
JavaScript
function calcMonth(days, febDays) {
var ds = days;
var month = 1,
lastValue = 0;
while (ds >= 0) {
let daysPerMonth = 31;
if (month === 2) daysPerMonth = febDays;
else if (month <= 7) daysPerMonth = month % 2 === 0 ? 30 : 31;
else daysPerMonth = month % 2 === 0 ? 31 : 30;
ds -= daysPerMonth;
lastValue = daysPerMonth;
month++;
}
month--;
var day = lastValue + ds;
return {
day: day,
month: month,
};
}
function formatedPrint(number) {
return number < 10 ? `0${number}` : number;
}
// Complete the dayOfProgrammer function below.
function dayOfProgrammer(year) {
var days = 256,
febDays = 28;
if (year < 1918) {
febDays = (year % 4 === 0) ? 29 : 28;
} else if (year === 1918) {
febDays = 15;
} else {
febDays = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 ? 29 : 28;
}
var obj = calcMonth(days, febDays);
if (year === 1918 && obj.month === 2) {
return `${formatedPrint(obj.day + 14)}.${formatedPrint(obj.month)}.${year}`;
} else {
return `${formatedPrint(obj.day)}.${formatedPrint(obj.month)}.${year}`;
}
}
console.log(dayOfProgrammer(1800));
console.log(dayOfProgrammer(1900));
console.log(dayOfProgrammer(1918));
console.log(dayOfProgrammer(1917));
console.log(dayOfProgrammer(2016));