Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class LegoBlocks
- {
- static int[] FillJaggedArrayRow(string[] row)
- {
- int[] array = new int[row.Length];
- for (int j = 0; j < row.Length; j++)
- {
- array[j] = int.Parse(row[j]);
- }
- return array;
- }
- static int[] ReversingArray(int[] jaggedArrayTwoRow)
- {
- for (int i = 0; i < jaggedArrayTwoRow.Length / 2; i++)
- {
- int container = jaggedArrayTwoRow[i];
- jaggedArrayTwoRow[i] = jaggedArrayTwoRow[jaggedArrayTwoRow.Length - i - 1];
- jaggedArrayTwoRow[jaggedArrayTwoRow.Length - i - 1] = container;
- }
- return jaggedArrayTwoRow;
- }
- private static bool CheckingIfTheArraysCanConnect(int[][] jaggedArrayOne, int[][] jaggedArrayTwo)
- {
- bool arraysCanConnect = true;
- int lastRowLength = -1;
- for (int i = 0; i < jaggedArrayOne.Length; i++)
- {
- int currentRowLength = jaggedArrayOne[i].Length + jaggedArrayTwo[i].Length;
- if(arraysCanConnect == false )
- {
- break;
- }
- if((currentRowLength != lastRowLength) && lastRowLength > -1)
- {
- arraysCanConnect = false;
- }
- lastRowLength = jaggedArrayOne[i].Length + jaggedArrayTwo[i].Length;
- }
- return arraysCanConnect;
- }
- private static void PrintingResult(bool theJaggedArraysCanBeConnected, int[][] jaggedArrayOne, int[][] jaggedArrayTwo)
- {
- if(theJaggedArraysCanBeConnected == true)
- {
- for (int i = 0; i < jaggedArrayOne.Length; i++)
- {
- Console.WriteLine('[' + string.Join(", ", jaggedArrayOne[i]) + ", " + string.Join(", ", jaggedArrayTwo[i]) + ']');
- }
- }
- else
- {
- int numberOfCells = 0;
- for (int i = 0; i < jaggedArrayOne.Length; i++)
- {
- foreach (var number in jaggedArrayOne[i])
- {
- numberOfCells++;
- }
- foreach (var number in jaggedArrayTwo[i])
- {
- numberOfCells++;
- }
- }
- Console.WriteLine("The total number of cells is: {0}", numberOfCells);
- }
- }
- static void Main()
- {
- // You are given two jagged arrays. Each array represents a Lego block containing integers. Your task is first to reverse the second jagged array and then check if it would fit perfectly in the first jagged array.
- int rows = int.Parse(Console.ReadLine());
- int[][] jaggedArrayOne = new int[rows][];
- int[][] jaggedArrayTwo = new int[rows][];
- int index = 0;
- // Filling the jaggedArrays
- for (int i = 0; i < 2 * rows; i++)
- {
- string[] row = Console.ReadLine().Split(' ');
- if (i < rows)
- {
- jaggedArrayOne[index] = FillJaggedArrayRow(row);
- }
- else
- {
- jaggedArrayTwo[index] = FillJaggedArrayRow(row);
- jaggedArrayTwo[index] = ReversingArray(jaggedArrayTwo[index]);
- }
- index++;
- if (index == rows)
- {
- index = 0;
- }
- }
- // initialising a new jagged array to connect the first two
- bool theJaggedArraysCanBeConnected = CheckingIfTheArraysCanConnect(jaggedArrayOne, jaggedArrayTwo);
- // Printing result
- PrintingResult(theJaggedArraysCanBeConnected, jaggedArrayOne, jaggedArrayTwo);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment