public IActionResult MedicalDecision(long emergencyId, string orientation, CodeColor codeColor = CodeColor.NoColor)
        {
            var user   = _userService.GetCurrentUser();
            var result = _medicalDecisionHistoryRest.Register(new MedicalDecisionHistoryModel
            {
                Description  = orientation,
                Date         = DateTime.Now,
                EmergencyId  = emergencyId,
                EmployeeGuid = user.EmployeeGuid,
                EmployeeName = user.EmployeeName,
                CodeColor    = codeColor
            });

            if (!result.Success)
            {
                ViewBag.Error = result.Messages;
                LoadBag();
                var resultE = _emergencyRest.Find(new EmergencyFilter {
                    Id = emergencyId
                });
                return(View("Index", resultE.Model));
            }

            var resultEmergency = _emergencyRest.Find(new EmergencyFilter {
                Id = emergencyId
            });

            LoadBag();
            return(View("Index", resultEmergency.Model));
        }
Beispiel #2
0
    public void ValidResponses()
    {
        ReadOnlySpan <CodeColor> solution = new CodeColor[Rules.CodeSize]
        {
            Magenta,
            Purple,
            Yellow,
            Teal,
        };

        Response response = Rules.CreateResponse(new[] { Magenta, Yellow, Teal, Orange }, solution);

        Assert.Equal(1, response.RedCount);
        Assert.Equal(2, response.WhiteCount);

        response = Rules.CreateResponse(new[] { Magenta, White, White, Orange }, solution);
        Assert.Equal(1, response.RedCount);
        Assert.Equal(0, response.WhiteCount);

        response = Rules.CreateResponse(new[] { White, Magenta, White, Orange }, solution);
        Assert.Equal(0, response.RedCount);
        Assert.Equal(1, response.WhiteCount);

        response = Rules.CreateResponse(new[] { White, Orange, White, Orange }, solution);
        Assert.Equal(0, response.RedCount);
        Assert.Equal(0, response.WhiteCount);

        response = Rules.CreateResponse(new[] { Magenta, Purple, Yellow, Teal }, solution);
        Assert.Equal(4, response.RedCount);
        Assert.Equal(0, response.WhiteCount);
    }
Beispiel #3
0
    public override void GenerateCode()
    {
        var codeColors = new CodeColor[codeLength];

        for (int i = 0; i < codeColors.Length; i++)
        {
            codeColors[i] = availableColors[0];
        }
        var code = new Code(codeColors);

        Debug.LogFormat("Generated code: {0}", code.ToString());
        CodeGeneratedEvent(code);
    }
Beispiel #4
0
        private static ReadOnlyMemory <CodeColor> InputCode(string prompt)
        {
            var guess = new CodeColor[Rules.CodeSize];

            while (true)
            {
                Console.Write($"{prompt} ({ColorChoices}): ");
                string guessLine = Console.ReadLine();
                if (TryParseCode(guessLine, guess))
                {
                    return(guess);
                }
            }
        }
Beispiel #5
0
        private static void CodeMaker()
        {
            CodeColor[] code = new CodeColor[Rules.CodeSize];
            while (true)
            {
                Console.Write("Enter code (or leave blank to generate one): ");
                string codeLine = Console.ReadLine();
                if (codeLine.Length == 0)
                {
                    var random = new Random();
                    for (int i = 0; i < code.Length; i++)
                    {
                        code[i] = (CodeColor)random.Next(Rules.ColorCount);
                    }

                    break;
                }
                else if (TryParseCode(codeLine, code))
                {
                    break;
                }
            }

            Console.WriteLine("Your code is: {0}", string.Join(", ", code));

            int breakerAttemptsCount = 0;

            while (true)
            {
                ReadOnlySpan <CodeColor> guess = InputCode("What is the code breaker's guess?").Span;
                var response = Rules.CreateResponse(guess, code);
                Console.WriteLine($"{response.RedCount} red pins, {response.WhiteCount} white pins.");
                if (response.RedCount == Rules.CodeSize)
                {
                    Console.WriteLine("Game over. Code breaker wins.");
                    break;
                }

                if (++breakerAttemptsCount == 10)
                {
                    Console.WriteLine("Game over. YOU win.");
                    break;
                }
            }
        }
Beispiel #6
0
    public CodeValidationResult ValidateCode(Code codeGuess)
    {
        if (code == null)
        {
            throw new Exception("Tried to validate code without initializing the validator!");
        }

        if (code.Length != codeGuess.Length)
        {
            throw new Exception("Tried to validate code that is different length!");
        }

        ColorPositions colorPositions        = new ColorPositions(availableColors);
        int            countPositionsCorrect = 0;
        int            countColorsCorrect    = 0;

        for (int i = 0; i < code.Length; i++)
        {
            CodeColor colorGuess = codeGuess[i];
            if (code.IsPositionValid(i, colorGuess))
            {
                countPositionsCorrect++;
            }
            else
            {
                int nextColorIdx = colorPositions.GetLastColorPosition(colorGuess) + 1;
                int foundIdx     = code.PositionOf(colorGuess, nextColorIdx);
                if (foundIdx >= 0)
                {
                    colorPositions.SetLastColorPosition(colorGuess, foundIdx);
                    countColorsCorrect++;
                }
            }
        }

        return(new CodeValidationResult(countPositionsCorrect == code.Length, countPositionsCorrect, countColorsCorrect));
    }
        public IActionResult RequestVehicle(long emergencyId, VehicleType vehicleType, CodeColor codeColor)
        {
            var user = _userService.GetCurrentUser();

            var result = _emergencyRequiredVehicleRest.Register(new EmergencyRequiredVehicleModel
            {
                CodeColor   = codeColor,
                Date        = DateTime.Now,
                EmergencyId = emergencyId,
                Status      = VehicleRequiredStatus.Opened,
                VehicleType = vehicleType,
                MedicalDecisionHistoryModel = new MedicalDecisionHistoryModel
                {
                    Date         = DateTime.Now,
                    EmergencyId  = emergencyId,
                    EmployeeGuid = user.EmployeeGuid,
                    EmployeeName = user.EmployeeName,
                    CodeColor    = codeColor,
                    Description  = "Solicitado veículo - " + vehicleType
                }
            });

            LoadBag();
            var resultEmergency = _emergencyRest.Find(new EmergencyFilter {
                Id = emergencyId
            });

            if (!result.Success)
            {
                ViewBag.Error = result.Messages;
                LoadBag();
                return(View("Index", resultEmergency.Model));
            }
            return(View("index", resultEmergency.Model));
        }
Beispiel #8
0
 public int PositionOf(CodeColor color, int startIndex = 0)
 {
     return(colors.IndexOf(color, startIndex));
 }
Beispiel #9
0
 public bool IsPositionValid(int index, CodeColor color)
 {
     return(colors[index] == color);
 }
Beispiel #10
0
 private void blueRdBtn_Checked(object sender, RoutedEventArgs e)
 {
     insCode = CodeColor.Blue;
 }
Beispiel #11
0
 private void yellowRdBtn_Checked(object sender, RoutedEventArgs e)
 {
     insCode = CodeColor.Yellow;
 }
Beispiel #12
0
 private void greenRdBtn_Checked(object sender, RoutedEventArgs e)
 {
     insCode = CodeColor.Green;
 }
Beispiel #13
0
 private void redRdBtn_Checked(object sender, RoutedEventArgs e)
 {
     insCode = CodeColor.Red;
 }
Beispiel #14
0
 public int GetLastColorPosition(CodeColor color)
 {
     return(colorPositions[color]);
 }
Beispiel #15
0
 public void SetLastColorPosition(CodeColor color, int position)
 {
     colorPositions[color] = position;
 }