public IActionResult Solve(LightBulbPuzzleRequest model) { try { model.BulbsRemainingIlluminated = _lightbulbService.Solve(model); return(Ok(model)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public int[] Solve(LightBulbPuzzleRequest model) { bool[] switches = Enumerable.Repeat(false, model.NumOfBulbs).ToArray(); int[] result; try { // flip switches for (int i = 1; i <= model.NumOfPeople; i++) { switches = switches.Select((value, index) => { if ((index + 1) % i == 0) { return(!value); } return(value); }).ToArray(); } // find indices of illuminated bulbs result = Enumerable.Range(0, switches.Length).Where(i => switches[i]).ToArray(); // increment each for (var i = 0; i < result.Length; i++) { result[i]++; } } catch (Exception ex) { throw ex; } return(result); }