public void OnPost() { CaveReturnModel newCave = new CaveReturnModel(); if (ModelState.IsValid) { List <int> caves = CaveListFromForm.Split(",").Select(Int32.Parse).ToList(); newCave.CaveList = caves; caveData = MaxSumNonAdjacentNumbers.GetCaveData(newCave); } else { newCave.CaveList = new List <int> { 8, 2, 1, 9, 1, 1, 9 }; caveData = MaxSumNonAdjacentNumbers.GetCaveData(newCave); } for (int i = 0; i < newCave.MaxCavesByIndex.Count(); i++) { newCave.MaxCavesByIndex[i] = newCave.MaxCavesByIndex[i] + 1; } }
public static CaveReturnModel GetCaveData(CaveReturnModel cave) { int priorMaxSum = 0; List <int> priorMaxSumList = new List <int>(); // initial max sum int maxSum = cave.CaveList[0]; List <int> maxSumList = new List <int>(); maxSumList.Add(0); for (int i = 1; i < cave.CaveList.Count; i++) { int currSum; List <int> currSumList; currSum = priorMaxSum + cave.CaveList[i]; currSumList = new List <int>(priorMaxSumList); currSumList.Add(i); // update prior max sum and list priorMaxSum = maxSum; priorMaxSumList = new List <int>(maxSumList); if (currSum > maxSum) { // update max sum maxSum = currSum; maxSumList = currSumList; } } cave.MaxCaveLoot = maxSum; cave.MaxCavesByIndex = maxSumList; cave.MaxCavesByInteger = (from x in cave.MaxCavesByIndex select cave.CaveList[x]).ToList(); return(cave); }
public IActionResult GetBestLoot([FromBody] CavePostModel caveData) { CaveReturnModel newCave = new CaveReturnModel(); newCave.CaveList = caveData.CaveList.Split(",").Select(int.Parse).ToList(); newCave = MaxSumNonAdjacentNumbers.GetCaveData(newCave); return(Ok(newCave)); }
public IActionResult GetLoot() { CaveReturnModel newCave = new CaveReturnModel(); newCave.CaveList = new List <int> { 8, 2, 1, 9, 1, 1, 9 }; newCave = MaxSumNonAdjacentNumbers.GetCaveData(newCave); return(Ok(newCave)); }
public void OnGet() { CaveReturnModel newCave = new CaveReturnModel(); newCave.CaveList = new List <int> { 8, 2, 1, 9, 1, 1, 9 }; caveData = MaxSumNonAdjacentNumbers.GetCaveData(newCave); for (int i = 0; i < newCave.MaxCavesByIndex.Count(); i++) { newCave.MaxCavesByIndex[i] = newCave.MaxCavesByIndex[i] + 1; } }