Example #1
0
        private static int CalculatePart1Area(List <Tuple <int, int> > points, Tuple <int, int> startingPoint, int index)
        {
            HashSet <Tuple <int, int> > coordMap   = new HashSet <Tuple <int, int> >();
            Queue <PointDist>           pointQueue = new Queue <PointDist>();

            pointQueue.Enqueue(new PointDist(startingPoint.Item1, startingPoint.Item2, CalculateDistances(points, startingPoint).Sum()));

            while (pointQueue.Count > 0)
            {
                PointDist currentPointDist = pointQueue.Dequeue();

                Tuple <int, int> point = new Tuple <int, int>(currentPointDist.x, currentPointDist.y);

                if (coordMap.Contains(point))
                {
                    continue;
                }

                List <int> distances     = CalculateDistances(points, point);
                int        totalDistance = distances.Sum();
                if (totalDistance - currentPointDist.prevDist == distances.Count)
                {
                    return(-1);
                }

                int minimum = distances.Min();

                if (distances[index] == minimum && distances.Where(x => x.Equals(minimum)).Count() == 1)
                {
                    coordMap.Add(point);

                    pointQueue.Enqueue(new PointDist(currentPointDist.x + 1, currentPointDist.y, totalDistance));
                    pointQueue.Enqueue(new PointDist(currentPointDist.x - 1, currentPointDist.y, totalDistance));
                    pointQueue.Enqueue(new PointDist(currentPointDist.x, currentPointDist.y - 1, totalDistance));
                    pointQueue.Enqueue(new PointDist(currentPointDist.x, currentPointDist.y + 1, totalDistance));
                }
            }

            return(coordMap.Count);
        }
Example #2
0
        static void Main()
        {
            //Test Task 1 - 3 PointStructure
            Point3D point = new Point3D(1, 2, 3);

            Console.WriteLine("Point distance {0:F2}", PointDist.PointDistance(point, Point3D.O));

            //Test Task 4 Writing and reading file
            Path points = new Path();

            points.Add(Point3D.O);
            points.Add(point);
            PathStorage.WriteFile(points, "MyPoints");
            Path newPoints = PathStorage.ReadFile("MyPoints");

            Console.WriteLine(newPoints);

            //Test Task 5 - 7 Generic Class
            GenericList <int> myList = new GenericList <int>(15);

            myList.Add(15);
            myList.Add(12);
            myList.Add(130);

            myList.RemoveAt(2);
            myList.Insert(0, 123);

            //myList.Clear();
            Console.WriteLine($"Index: {myList.Find(123)}");
            Console.WriteLine($"Max: {myList.Max()}");
            Console.WriteLine($"Max: {myList.Min()}");

            //Test Task 8 - 10 Generic Matrix
            //Task 8
            Matrix <int> matrix = new Matrix <int>(2, 3);

            //Task 9
            int increasingNumber = 1;

            for (int row = 0; row < matrix.GetLenght(0); row++)
            {
                for (int col = 0; col < matrix.GetLenght(1); col++)
                {
                    matrix[row, col] = increasingNumber;
                    increasingNumber++;
                }
            }

            //Task 10
            var matrixTwo = new Matrix <int>(3, 1);

            matrixTwo[0, 0] = 2;
            matrixTwo[1, 0] = 3;
            matrixTwo[2, 0] = 4;
            Console.WriteLine("Multiplication");
            Console.WriteLine(matrix * matrixTwo);

            var matrixTestOne = new Matrix <int>(2, 2);

            matrixTestOne[0, 0] = 2;
            matrixTestOne[0, 1] = 3;
            matrixTestOne[1, 0] = 4;
            matrixTestOne[1, 1] = 5;

            var matrixTestTwo = new Matrix <int>(2, 2);

            matrixTestTwo[0, 0] = 2;
            matrixTestTwo[0, 1] = 33;
            matrixTestTwo[1, 0] = 41;
            matrixTestTwo[1, 1] = 10;
            Console.WriteLine("Addition");
            Console.WriteLine(matrixTestOne + matrixTestTwo);
            Console.WriteLine("Substraction");
            Console.WriteLine(matrixTestOne - matrixTestTwo);

            //Test Task 11 Attribute
            var versionAtt = typeof(MainProgram).GetCustomAttributes(false);

            foreach (var att in versionAtt)
            {
                var versionAttr = (VersionAttribute)att;
                Console.WriteLine("Version: {0}", versionAttr.Version);
            }
        }