Example #1
0
 internal static c_coordinate max_coordinate(c_coordinate a, c_coordinate b)
 {
     return(new c_coordinate()
     {
         X = Math.Max(a.X, b.X), Y = Math.Max(a.Y, b.Y)
     });
 }
Example #2
0
 internal static void clamp_to_fold(c_coordinate point, c_fold fold)
 {
     if (fold.orientation == e_orientation.horizontal)
     {
         point.Y = Math.Min(point.Y, fold.position);
     }
     else
     {
         point.X = Math.Min(point.X, fold.position);
     }
 }
Example #3
0
        internal static void parse_input(string input, out List <c_coordinate> points, out List <c_fold> folds, out c_coordinate max)
        {
            c_input_reader input_reader = new c_input_reader(input);

            points = new List <c_coordinate>();
            max    = new c_coordinate();

            while (input_reader.has_more_lines())
            {
                string input_line = input_reader.read_line();

                if (string.IsNullOrEmpty(input_line))
                {
                    break;
                }

                int[] parsed_input_line = input_line.Split(",").Select(x => int.Parse(x)).ToArray();

                c_coordinate new_point = new c_coordinate()
                {
                    X = parsed_input_line[0], Y = parsed_input_line[1]
                };
                points.Add(new_point);

                max = max_coordinate(max, new_point);
            }

            folds = new List <c_fold>();

            while (input_reader.has_more_lines())
            {
                string input_line = input_reader.read_line();

                string[] split_input_line = input_line.Split(" ").ToArray();

                string[] parsed_input_line = split_input_line[2].Split("=");

                int           fold_position    = int.Parse(parsed_input_line[1]);
                e_orientation fold_orientation = (parsed_input_line[0] == "x") ? e_orientation.vertical : e_orientation.horizontal;

                folds.Add(new c_fold {
                    position = fold_position, orientation = fold_orientation
                });
            }
        }
Example #4
0
        internal static void display_points(c_coordinate max, List <c_coordinate> points)
        {
            bool[,] output = new bool[max.X + 1, max.Y + 1];
            foreach (c_coordinate point in points)
            {
                output[point.X, point.Y] = true;
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine();

            for (int y = 0; y < output.GetLength(1); y++)
            {
                for (int x = 0; x < output.GetLength(0); x++)
                {
                    Console.Write(output[x, y] ? "O" : " ");
                }
                Console.WriteLine();
            }
            Console.ResetColor();
        }