예제 #1
0
        static void Main(string[] args)
        {
            int a, b, c = 0;
            ITriangleValidator    validator = new TriangleValidator();
            ITriangleDeterminator service   = new TriangleDeterminatorService(validator);

            Console.WriteLine("Guess the triangle");
            Console.WriteLine("==================");

            Console.Write("Enter length of Side 1 :");
            a = GetInt();

            Console.Write("Enter length of Side 2 :");
            b = GetInt();

            Console.Write("Enter length of Side 3 :");
            c = GetInt();

            Console.WriteLine();

            if (!validator.IsValid(a, b, c))
            {
                Console.WriteLine("Sorry, this is not a valid triangle.");
            }
            else
            {
                Console.WriteLine($"Your triangle is a {service.Determine(a, b, c)} triangle.");
            }

            Console.WriteLine("Press a key to exit.");
            Console.ReadKey();
        }
예제 #2
0
        public string[] Get(string vertex1, string vertex2, string vertex3)
        {
            List <Point> points = new List <Point>();
            Point        point1 = ParsePoint(vertex1);
            Point        point2 = ParsePoint(vertex2);
            Point        point3 = ParsePoint(vertex3);

            points.Add(point1);
            points.Add(point2);
            points.Add(point3);

            TriangleValidator validator = new TriangleValidator(point1, point2, point3);

            if (!validator.IsValid())
            {
                return(new string[] { "INVALID COORDINATES" });
            }

            string row = ROWS[GetMin_Y(points) / 10];

            int col = -1;

            if (IsTheTriangleInEvenNumberPosition(points, GetMax_X(points)))
            {
                col = GetMax_X(points) * 2 / 10;
            }
            else
            {
                col = (GetMin_X(points) * 2 / 10) + 1;
            }
            return(new string[] { row + col });
        }
예제 #3
0
        public void Day3_Part2()
        {
            var input     = Utils.ReadLines("day3_data.txt");
            var validator = new TriangleValidator();

            Assert.That(validator.NumberOfValidTrianglesInColumns(input), Is.EqualTo(1544));
        }
예제 #4
0
        public Startup()
        {
            _loggre = LogManager.GetCurrentClassLogger();

            ValidatorToSide     = new DefaultValidatorBuilder().Create();
            TransformatorToSide = new DefaultTransformatorBuilder().Create();
            ValidatorToTriangle = new TriangleValidator();
        }
        public void IsTriangleValid_Pass()
        {
            var triangleValidator = new TriangleValidator();

            var status = triangleValidator.IsTriangleValid(probableTriangles["Equilateral"]);

            Assert.True(status);
        }
        public void IsTriangleValid_Fail()
        {
            var triangleValidator = new TriangleValidator();

            var status = triangleValidator.IsTriangleValid(probableTriangles["NotATriangle"]);

            Assert.False(status);
        }
예제 #7
0
        public static IShapeService GetShapeService()
        {
            IShapeValidator typeValidator       = new TriangleValidator();
            IShapeFactory   shapeFactory        = new TriangleFactory(typeValidator);    // Compose shape factory
            IShapeFactory   UnknownShapeFacotry = new UnknownShapeFactory();

            var genericShapeValidator = new GenericShapeValidator();

            return(new ShapeService(shapeFactory, UnknownShapeFacotry, genericShapeValidator));          // Compose shape service
        }
예제 #8
0
        public void ValidateTriangle_WrongTriangle_Test()
        {
            const double firstSide  = 1.0;
            const double secondSide = 2.0;
            const double thirdSide  = 4.0;

            var actual = TriangleValidator.Validate(firstSide, secondSide, thirdSide);

            Assert.IsFalse(actual);
        }
예제 #9
0
        public void Test_ValidatorInvalidTriangle4_Ok()
        {
            //given
            ITriangleValidator validator = new TriangleValidator();

            //when
            bool isValid = validator.IsValid(-4, -4, -4);

            //then
            Assert.False(isValid);
        }
예제 #10
0
        public void ValidateTriangle_CorrectTriangle_Test()
        {
            const double firstEdge       = 1.0;
            const double secondEdge      = 2.0;
            var          setOfThirdEdges = new List <double> {
                1.0, 2.0, 3.0
            };

            var actual = setOfThirdEdges.All(x => TriangleValidator.Validate(firstEdge, secondEdge, x));

            Assert.IsTrue(actual);
        }
        public double?Calculate()
        {
            var result = new TriangleValidator().Validate(_triangle);

            if (!result.IsValid)
            {
                return(default(double?));
            }

            var halfPerimeter = (_triangle.SideA + _triangle.SideB + _triangle.SideC) / 2F;

            return(Math.Sqrt(halfPerimeter
                             * (halfPerimeter - _triangle.SideA)
                             * (halfPerimeter - _triangle.SideB)
                             * (halfPerimeter - _triangle.SideC)));
        }
예제 #12
0
        protected override int Part2(string[] input)
        {
            var tv1 = new TriangleValidator();
            var tv2 = new TriangleValidator();
            var tv3 = new TriangleValidator();

            foreach (var line in input)
            {
                var side = line.ToIntArray();
                tv1.AddSide(side[0]);
                tv2.AddSide(side[1]);
                tv3.AddSide(side[2]);
            }
            var valid = tv1.Count + tv2.Count + tv3.Count;

            return(valid);
        }
        public bool?IsRightTriangle()
        {
            var result = new TriangleValidator().Validate(_triangle);

            if (!result.IsValid)
            {
                return(default(bool?));
            }

            var hypOppositeAngle = MathConvert.ToDegrees(
                Math.Acos(
                    MathConvert.ToRadians(
                        (Math.Pow(_triangle.SideA, 2) + Math.Pow(_triangle.SideB, 2) - Math.Pow(_triangle.SideC, 2))
                        / 2F * _triangle.SideA * _triangle.SideB
                        )
                    )
                );

            return(Math.Abs(hypOppositeAngle - 90F) <= MathConvert.Precision);
        }
        public void TriangleValidationDoesAllowHypotenusTopRightToBottomLeft(int point1_X, int point1_y, int point2_X, int point2_y, int point3_X, int point3_y)
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(point1_X, point1_y), new Point(point2_X, point2_y), new Point(point3_X, point3_y));

            Assert.IsTrue(triangleValidator.IsValid(), "Invalid Triangle coordinates right angle is only allowed bottom left or top right");
        }
        public void TriangleValidationDoesAllowTrianglesOutOfTheAllowedGridBottomRight(int point1_X, int point1_y, int point2_X, int point2_y, int point3_X, int point3_y)
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(point1_X, point1_y), new Point(point2_X, point2_y), new Point(point3_X, point3_y));

            Assert.IsFalse(triangleValidator.IsValid(), "Triangle is out of bounds");
        }
        public void TriangleRightSidesAreOfLength10()
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(20, 20), new Point(20, 30), new Point(30, 30));

            Assert.IsTrue(triangleValidator.IsValid(), "Triangle vertices are not located on 10x10 grid");
        }
        public void TriangleValidationDoesNotAllowRightSidesAreNotOfLength10(int point1_X, int point1_y, int point2_X, int point2_y, int point3_X, int point3_y)
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(point1_X, point1_y), new Point(point2_X, point2_y), new Point(point3_X, point3_y));

            Assert.IsFalse(triangleValidator.IsValid(), "Triangle vertices do not have sides length 10");
        }
        public void TriangleVerticesAre10PixelsApartPerAxis()
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(0, 0), new Point(0, 10), new Point(10, 10));

            Assert.IsTrue(triangleValidator.IsValid(), "Triangle vertices are not located on 10x10 grid");
        }
        public void TriangleVerticesAreNotValidWhenTheyAreNot10PixelsApartPerAxis()
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(1, 0), new Point(0, 0), new Point(10, 0));

            Assert.IsFalse(triangleValidator.IsValid(), "Triangle vertices are not located on 10x10 grid");
        }
 public void SetUp()
 {
     _validator = new TriangleValidator();
 }
 public void TriangleValidator_Invalid_2()
 {
     Assert.AreEqual(false, TriangleValidator.IsValid(10, 25, 5));
 }
예제 #22
0
            public void Should_CheckIfSumOfAnyTwoEdgesIsGreaterThanTheRemainingEdge(int one, int two, int three, bool expected)
            {
                bool result = TriangleValidator.Validate(one, two, three);

                Assert.Equal(expected, result);
            }
예제 #23
0
 private static Triangle CreateTriangle(double firstEdge, double secondEdge, double thirdEdge)
 {
     return(TriangleValidator.Validate(firstEdge, secondEdge, thirdEdge) ? new Triangle(firstEdge, secondEdge, thirdEdge) : null);
 }
 public void TriangleValidator_Valid_2()
 {
     Assert.AreEqual(true, TriangleValidator.IsValid(5, 4, 3));
 }
 public void TriangleValidator_Valid_1()
 {
     Assert.AreEqual(true, TriangleValidator.IsValid(3, 4, 5));
 }
 public void OneTimeSetUp()
 {
     _triangleValidator = new TriangleValidator();
 }
        [DataRow(50, 50, 50, 60, 60, 60)] //F11
        public void TriangleValidationDoesAllowTrianglesOnTheInsideEdgeOfTheGrid(int point1_X, int point1_y, int point2_X, int point2_y, int point3_X, int point3_y)
        {
            TriangleValidator triangleValidator = new TriangleValidator(new Point(point1_X, point1_y), new Point(point2_X, point2_y), new Point(point3_X, point3_y));

            Assert.IsTrue(triangleValidator.IsValid(), "Triangle is out of bounds");
        }
 public void IsTriangleExists_WithTriangleSides_ShouldReturnDoesntExists(double firstSide, double secondSide, double thirdSide)
 {
     Assert.False(TriangleValidator.IsTriangleExists(firstSide, secondSide, thirdSide));
 }
 public void TriangleValidator_Invalid_3()
 {
     Assert.AreEqual(false, TriangleValidator.IsValid(25, 5, 10));
 }
 public void TriangleValidator_Valid_3()
 {
     Assert.AreEqual(true, TriangleValidator.IsValid(4, 5, 3));
 }