public async Task <IActionResult> Save(CameraTile tile) { if (ModelState.IsValid) { return(await SaveBaseTile(ConfigStore, tile)); } return(View("Add", tile)); }
public async Task <IActionResult> Save(CameraTile tile) { if (ModelState.IsValid) { return(await SaveBaseTile(ConfigStore, tile)); } ViewBag.Entities = (await EntityClient.GetEntities("camera")).OrderBy(e => e).Select(e => new SelectListItem(e, e)); return(View("Add", tile)); }
public Day20() : base(20, 2020, "") { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); string[] tiles = Input.Split("\n\n"); Dictionary <int, int> allEdges = new Dictionary <int, int>(); List <CameraTile> allTiles = new List <CameraTile>(); var edgeToTiles = new Dictionary <int, List <CameraTile> >(); foreach (string tile in tiles) { CameraTile newTile = new CameraTile(tile); allTiles.Add(newTile); foreach (int edge in newTile.AllPossibleNeighbors()) { allEdges[edge] = allEdges.GetValueOrDefault(edge, 0) + 1; if (edgeToTiles.TryGetValue(edge, out List <CameraTile> tilesWithEdge)) { tilesWithEdge.Add(newTile); } else { edgeToTiles[edge] = new List <CameraTile>(); edgeToTiles[edge].Add(newTile); } } } List <CameraTile> Corner = new List <CameraTile>(); List <CameraTile> Edge = new List <CameraTile>(); List <CameraTile> Center = new List <CameraTile>(); foreach (CameraTile t in allTiles) { int edgeCount = 0; if (allEdges[t.N] == 1 && allEdges[flipped(t.N)] == 1) { t.blockedN = true; edgeCount++; } if (allEdges[t.E] == 1 && allEdges[flipped(t.E)] == 1) { t.blockedE = true; edgeCount++; } if (allEdges[t.S] == 1 && allEdges[flipped(t.S)] == 1) { t.blockedS = true; edgeCount++; } if (allEdges[t.W] == 1 && allEdges[flipped(t.W)] == 1) { t.blockedW = true; edgeCount++; } if (edgeCount == 2) { Corner.Add(t); } else if (edgeCount == 1) { Edge.Add(t); } else { Center.Add(t); } } long product = 1; foreach (CameraTile t in Corner) { product *= t.tileId; } partOne = product.ToString(); //////////////////////////////////////////////////////////////////////////////////////////////////// Dictionary <Coordinate2D, CameraTile> board = new Dictionary <Coordinate2D, CameraTile>(); CameraTile lastTile = Corner[0]; board[(0, 0)] = lastTile;