Skip to content

Instantly share code, notes, and snippets.

@kuldeepkeshwar
Created May 1, 2017 14:24
Show Gist options
  • Save kuldeepkeshwar/71fb55c989e15da091ed7c135f1664d7 to your computer and use it in GitHub Desktop.
Save kuldeepkeshwar/71fb55c989e15da091ed7c135f1664d7 to your computer and use it in GitHub Desktop.
const ACTIVITIES = [
{name: 'side-project', time: 10, xp: 12},
{name: 'algorithms', time: 3, xp: 7},
{name: 'networking', time: 1, xp: 0.5},
{name: 'exercise', time: 2, xp: 1.5},
{name: 'systems design', time: 4, xp: 4},
{name: 'making CSS codepens', time: 3, xp: 4}
];
function findJob(time){
if(time==0){
return [];
}
const availibleActivities=ACTIVITIES.filter(activity=>activity.time<=time);
let max=0;
let arr=[];
availibleActivities.forEach(item=>{
const q=Math.floor(time/item.time);
const xp=item.xp*q;
const remainingXP=findJob(time-item.time*q);
const sum=remainingXP.reduce((result,item)=>{return (item.qty||0)*item.xp+result},xp);
if(max<sum){
max=sum;
item.qty=q;
arr=[...remainingXP,item];
return sum
}
})
return arr;
}
const TIME=6;
console.time('findJob');
const result=findJob(TIME, ACTIVITIES)
console.timeEnd('findJob');
console.log('findJob',result);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment