Skip to content

Instantly share code, notes, and snippets.

@mikecasas
Last active July 26, 2016 22:08
Show Gist options
  • Save mikecasas/56d1620248c87739fcc7 to your computer and use it in GitHub Desktop.
Save mikecasas/56d1620248c87739fcc7 to your computer and use it in GitHub Desktop.
Calculates how many chapters of a book to read each day
function calculateReading(chapters, days) {
return mike(chapters, days, 1);
}
function mike(chapters, days, dayNumber, endedOn) {
var result = (chapters % days);
var c=[];
var chaptersDay=(chapters/days);
startChapter=dayNumber;
if (days===1) {
c.push(onlyOne(chapters, dayNumber, endedOn));
return c;
}
if (result===0) {
c.push([...perfectlyEven(days, chaptersDay, dayNumber)]);
} else {
let firstDay=Math.ceil(chaptersDay);
var w={};
w.day="dd-day " + dayNumber;
var bgn2;
var end2;
if (endedOn) {
bgn2 = (1+endedOn);
end2 = (endedOn+firstDay);
} else {
bgn2=1;
end2 = firstDay;
}
w.chapters="chaps. " + bgn2 + " thru " + end2;
c.push(w);
var f=mike((chapters-firstDay),(days-1),(dayNumber+1), end2)
c.push([...f]);
}
return c;
}
function perfectlyEven(chapters, days, dayNumber) {
let c=[];
for (var i = 0; i < days; i++) {
var y={};
y.day="day " + (i+dayNumber)
var bgn=1+(chapters*i);
var end=chapters+(chapters*i);
y.chapters="chaps. " + bgn + "-" + end;
c.push(y)
}
return c;
}
function onlyOne(chapters, dayNumber, endedOn) {
var y={};
y.day="only-one-day " + dayNumber;
var endChapter=(chapters+endedOn);
y.chapters="chaps. " + startChapter + " thru " + endChapter;
return y;
}
//console.log(calculateReading(50,10));
//console.log(calculateReading(7,1));
//console.log(calculateReading(22,1));
console.log(calculateReading(7,2));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment