constninjaTraining=(matrix,Days)=>{// moving it to zero index daysletday=Days-1;letmemo=newMap();constgetMaxPoints=(dayIndex,lastTask)=>{if (dayIndex===0){letmaxPoint=-Infinity;for (leti=0;i<3;i++){if (i!==lastTask){maxPoint=Math.max(maxPoint,matrix[dayIndex][i]);}}returnmaxPoint;}if (memo.has(dayIndex+"_"+lastTask)){returnmemo.get(dayIndex+"_"+lastTask);}letmaxPoint=-Infinity;for (leti=0;i<3;i++){if (i!==lastTask){letpoint=matrix[dayIndex][i]+getMaxPoints(dayIndex-1,i);maxPoint=Math.max(maxPoint,point);}}memo.set(dayIndex+"_"+lastTask,maxPoint);returnmaxPoint;};returngetMaxPoints(day,3);};console.log(ninjaTraining([[1,2,5],[3,1,1],[3,3,3],],3));console.log(ninjaTraining([[10,40,70],[20,50,80],[30,60,90],],3));