Exemplo n.º 1
0
        public BoardingPane()
        {
            List <string> lines = new List <string>(ASCII_LAYOUT.Split('\n'));

            lines      = lines.FindAll(line => line.Contains("O") || line.Contains("B"));
            numRows    = lines.Count;
            numColumns = lines[0].Trim().Length;
            cells      = new Cell[lines.Count, numColumns];
            for (int row = 0; row < numRows; row++)
            {
                String line = lines[row].Trim();
                for (int column = 0; column < numColumns; column++)
                {
                    cells[row, column] = new Cell(row, column, line[column]);
                }
            }
            Console.WriteLine("num rows: " + numRows);
            Console.WriteLine("num columns: " + numColumns);

            boarders = new Boarder[3];
            for (int i = 0; i < boarders.Length; i++)
            {
                boarders[i] = new Boarder();
                boarders[i].path.Add(cells[0, 3 + i]);
                boarders[i].progress = 0.0f;
                boarders[i].turning  = turningTime;
            }

            boarderTexture = Game().Content.Load <Texture2D>("boarder");
        }
Exemplo n.º 2
0
        private async Task <StringResultTask> GetFirstTask()
        {
            string filePath = @"AdventOfCode2020.Calender.Day5.Input.txt";
            var    input    = await ParseHelper.GetInput(Environment.NewLine, filePath, new BoardingParser());

            var seat = input.Select(commands => Boarder.Boarding(commands, 128, 8)).Max(seat => seat.Id);

            return(new StringResultTask("Part 1", $"Answer: {seat}"));
        }
Exemplo n.º 3
0
        public void PutBoarderPositive()
        {
            var repo = new Mock <BoarderRep>(db);
            BoarderController controller = new BoarderController(repo.Object);
            Boarder           boarder    = new Boarder {
                FirstName = "Siddhartha", LastName = "Banerjee"
            };
            var data = controller.Put("*****@*****.**", boarder) as OkObjectResult;

            Assert.AreEqual(200, data.StatusCode);
        }
Exemplo n.º 4
0
        public void PostBoarder()
        {
            var repo = new Mock <BoarderRep>(db);
            BoarderController controller = new BoarderController(repo.Object);
            Boarder           boarder    = new Boarder {
                FirstName = "Sid", LastName = "Ban", Email = "*****@*****.**", Password = "******"
            };
            var data = controller.Post(boarder) as OkObjectResult;

            Assert.AreEqual(200, data.StatusCode);
        }
Exemplo n.º 5
0
        public IActionResult Edit(string id)
        {
            Boarder             ls       = new Boarder();
            HttpResponseMessage response = client.GetAsync(client.BaseAddress + "/Boarder/" + id).Result;

            if (response.IsSuccessStatusCode)
            {
                string data = response.Content.ReadAsStringAsync().Result;
                ls = JsonConvert.DeserializeObject <Boarder>(data);
            }
            return(View(ls));
        }
Exemplo n.º 6
0
        public IActionResult Edit(Boarder obj)
        {
            string              data     = JsonConvert.SerializeObject(obj);
            StringContent       content  = new StringContent(data, Encoding.UTF8, "application/json");
            HttpResponseMessage response = client.PutAsync(client.BaseAddress + "/Boarder/" + obj.Email, content).Result;

            if (response.IsSuccessStatusCode)
            {
                return(RedirectToAction("Index"));
            }
            return(View());
        }
Exemplo n.º 7
0
        public void Boarder_tests()
        {
            var boarder = new Boarder(new[] { true, false, true, false, true, false, true, false, true, false });

            Assert.Equal("#.#.#.#.#.", boarder.ToString());
            Assert.Equal(".#.#.#.#.#", boarder.Flip().ToString());

            Assert.True(boarder.MatchesInADirection(boarder));
            Assert.True(boarder.MatchesInADirection(boarder.Flip()));

            Assert.True(boarder.Equals(boarder));
            Assert.True(boarder.Equals(boarder.Flip().Flip()));
        }
Exemplo n.º 8
0
 public int UpdateDetail(string id, Boarder boarder)
 {
     if (db != null)
     {
         var obj = (db.Boarders.Where(x => x.Email == id)).FirstOrDefault();
         if (obj != null)
         {
             obj.FirstName = boarder.FirstName;
             obj.LastName  = boarder.LastName;
             //obj.Email = boarder.Email;
             obj.Password = boarder.Password;
             db.SaveChanges();
             return(1);
         }
     }
     return(0);
 }
Exemplo n.º 9
0
        public IActionResult Get(string id)
        {
            Boarder data = new Boarder();

            try
            {
                data = db.GetDetail(id);
                if (data == null)
                {
                    return(BadRequest(data));
                }
                return(Ok(data));
            }
            catch (Exception)
            {
                return(BadRequest(data));
            }
        }
Exemplo n.º 10
0
 public IActionResult Post([FromBody] Boarder obj)
 {
     if (ModelState.IsValid)
     {
         try
         {
             var res = db.AddDetail(obj);
             if (res != null)
             {
                 return(Ok(res));
             }
             return(NotFound());
         }
         catch (Exception)
         {
             return(BadRequest());
         }
     }
     return(BadRequest());
 }
Exemplo n.º 11
0
            public Tile(int id, ReadOnlySpan <string> input)
            {
                ID = id;

                Span <bool> top    = stackalloc bool[10];
                Span <bool> right  = stackalloc bool[10];
                Span <bool> bottom = stackalloc bool[10];
                Span <bool> left   = stackalloc bool[10];

                for (var index = 0; index < 10; index++)
                {
                    top[index]    = Parse(input[0][index]);
                    right[index]  = Parse(input[index][9]);
                    bottom[index] = Parse(input[9][index]);
                    left[index]   = Parse(input[index][0]);
                }

                TopBoarder    = new Boarder(top);
                LeftBoarder   = new Boarder(left);
                BottomBoarder = new Boarder(bottom);
                RightBoarder  = new Boarder(right);
Exemplo n.º 12
0
        private async Task <StringResultTask> GetSecondTask()
        {
            string filePath = @"AdventOfCode2020.Calender.Day5.Input.txt";
            var    input    = await ParseHelper.GetInput(Environment.NewLine, filePath, new BoardingParser());

            var seats = input.Select(commands => Boarder.Boarding(commands, 128, 8));

            var missingSeats = new List <AirlineSeat>();

            for (int indexRow = 0; indexRow < 128; indexRow++)
            {
                for (int indexColumn = 0; indexColumn < 8; indexColumn++)
                {
                    var result = seats.FirstOrDefault(seat => seat.Row == indexRow && seat.Column == indexColumn);
                    if (result == null)
                    {
                        missingSeats.Add(new AirlineSeat(indexRow, indexColumn));
                    }
                }
            }

            return(new StringResultTask("Part 2", $"Answer: {seats.Count()}"));
        }
Exemplo n.º 13
0
 public IActionResult Put(string id, [FromBody] Boarder boarder)
 {
     if (ModelState.IsValid)
     {
         try
         {
             var result = db.UpdateDetail(id, boarder);
             if (result != 1)
             {
                 return(BadRequest(result));
             }
             return(Ok(result));
         }
         catch (Exception ex)
         {
             if (ex.GetType().FullName == "Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException")
             {
                 return(NotFound());
             }
             return(BadRequest());
         }
     }
     return(BadRequest());
 }
Exemplo n.º 14
0
        public override void Update(Vector2 targetSize, GameTime gameTime)
        {
            HashSet <Boarder> toUpdate = new HashSet <Boarder>(boarders);

            while (toUpdate.Count > 0)
            {
                // silly pop
                Boarder boarder = null;
                foreach (Boarder b in toUpdate)
                {
                    boarder = b;
                    toUpdate.Remove(b);
                    break;
                }

                if (boarder.path.Count < 20)
                {
                    BuildCellPath(boarder.path, 20);
                }

                if (boarder.progress > 1)
                {
                    Cell prevCell = boarder.path[0];
                    boarder.path.RemoveAt(0);
                    boarder.progress = 0;

                    Cell currentCell = boarder.path[0];
                    Cell nextCell    = boarder.path[1];

                    if (nextCell.row < currentCell.row && prevCell.row == currentCell.row) // going up now
                    {
                        boarder.prevRotation   = boarder.rotation;
                        boarder.targetRotation = (float)Math.PI;
                        boarder.turning        = turningTime;
                    }
                    else if (nextCell.column > currentCell.column && prevCell.row != currentCell.row) // going right now
                    {
                        boarder.prevRotation   = boarder.rotation;
                        boarder.targetRotation = (float)(Math.PI * 1.5f);
                        boarder.turning        = turningTime;
                    }
                    else if (nextCell.row > currentCell.row && prevCell.column != currentCell.column) // going down now
                    {
                        boarder.prevRotation   = boarder.rotation;
                        boarder.targetRotation = 0;
                        boarder.turning        = turningTime;
                    }
                    else if (nextCell.column < currentCell.column && prevCell.row != currentCell.row) // going left now
                    {
                        boarder.prevRotation   = boarder.rotation;
                        boarder.targetRotation = (float)(Math.PI * 0.5f);
                        boarder.turning        = turningTime;
                    }
                }
                else if (boarder.turning > 0)
                {
                    boarder.turning -= (float)gameTime.ElapsedGameTime.TotalSeconds;
                    // TODO: clamp this

                    // c = 1 -> starting turn, c = 0 -> ending turn
                    float c = boarder.turning / turningTime;
                    boarder.rotation = boarder.targetRotation * (1 - c) + boarder.prevRotation * c;
                }
                else
                {
                    // if someone else going to my next spot, don't
                    Cell srcCell = boarder.path[0];
                    Cell dstCell = boarder.path[1];
                    bool wait    = false;
                    foreach (Boarder other in boarders)
                    {
                        if (boarder == other)
                        {
                            continue;
                        }
                        if (other.path.Count > 1 && other.path[1] == boarder.path[1] && other.progress > boarder.progress)
                        {
                            wait = true;
                        }
                    }
                    if (!wait)
                    {
                        boarder.progress += 1 * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    }
                }
            }
        }
Exemplo n.º 15
0
 public string AddDetail(Boarder boarder)
 {
     db.Boarders.Add(boarder);
     db.SaveChanges();
     return(boarder.Email);
 }
        private static string CheckWriteSpriteFromTexture(string writeSpritePath, Texture2D texture, Boarder boarder)
        {
            if (texture == null)
            {
                Debug.LogError($"textureがNullです CheckWriteTexture({writeSpritePath})");
                return($"error {writeSpritePath} is null");
            }

            var pngHash     = texture.imageContentsHash;
            var writeFolder = Path.GetDirectoryName(writeSpritePath);

            // HashMapキャッシュファイルを作成のために
            // - \を/にする
            // - 相対パスである
            writeSpritePath = writeSpritePath.Replace("\\", "/");
            LoadCache(writeFolder);

            var hashStr = pngHash.ToString();

            // ハッシュが同じテクスチャがある Shareする
            if (imageHashMap.ContainsKey(hashStr))
            {
                var path = imageHashMap[hashStr];
                if (File.Exists(path))
                {
                    // Debug.Log("shared texture " + Path.GetFileName(newPath) + "==" + Path.GetFileName(name));
                    imagePathMap[writeSpritePath] = path;
                    SaveCache(writeFolder);
                    return("Texture: Shared");
                }

                // ファイルが存在しない
                imageHashMap.Remove(hashStr); // hashStrの登録を削除

                var deleteList = imageHashMap
                                 .Where(kvp => kvp.Key == path || kvp.Value == path) // 存在しないファイルを参照している
                                 .Select(kvp => kvp.Key)
                                 .ToList();

                foreach (var key in deleteList)
                {
                    imagePathMap.Remove(key);
                }
            }

            // ハッシュからのパスを登録
            imageHashMap[hashStr] = writeSpritePath;
            // 置き換え対象のパスを登録
            imagePathMap[writeSpritePath] = writeSpritePath;

            // のちのUnity PreprocessTextureの処理への情報受け渡し
            // (PNGインポートでスプライトを作成するUnityのイベント)
            var slicedTexture = new SlicedTexture(texture, boarder);

            PreprocessTexture.SlicedTextures[writeSpritePath] = slicedTexture;

            try
            {
                // 本来はフォルダを作成しなくても良いはず
                EditorUtil.CreateFolder(Path.GetDirectoryName(writeSpritePath));

                // PNG での保存 (多プラットフォームに対応しやすい)
                var pngData = ImageConversion.EncodeToPNG(texture);
                File.WriteAllBytes(writeSpritePath, pngData);

                // spriteでの保存

                /*
                 * var sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height),
                 *  new Vector2(0.5f, 0.5f));
                 * AssetDatabase.CreateAsset(sprite, Path.ChangeExtension(writeSpritePath, "asset"));
                 */

                SaveCache(writeFolder);
            }
            catch (Exception ex)
            {
                Debug.LogAssertion($"Textureの書き込み中に例外が発生しました:{ex.Message}");
            }

            return("Texture: Created");
        }
Exemplo n.º 17
0
 public string Post([FromBody] Boarder value)
 {
     _context.Boarders.Add(value);
     _context.SaveChanges();
     return("sucess");
 }
Exemplo n.º 18
0
        public void Boarder_Boarding(BoardingCommandKind[] commands, int rows, int column, int expectedResult)
        {
            var result = Boarder.Boarding(commands, rows, column);

            Assert.Equal(expectedResult, result.Id);
        }