Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Введите размер калейдоскопа (половина стороны)");
- int kaleidoscopeSize = Convert.ToInt32(Console.ReadLine());
- int[,] kaleidoscope = MakeKaleidoscope(kaleidoscopeSize);
- PrintKaleidoscope(kaleidoscope);
- }
- /**
- * Возвращает случайный код цвета из Console.ConsoleColor
- */
- static int GetRandomColorCode()
- {
- const int COLORS_COUNT = 16;
- Random random = new Random();
- return random.Next(COLORS_COUNT);
- }
- /**
- * Метод генерирует случайную матрицу, которая симметрична по горизонтали, вертикали и диагонали
- */
- static int[,] MakeKaleidoscope(int halfSize)
- {
- int size = halfSize + halfSize;
- int[,] kaleidoscope = new int[size, size];
- for (int imain = 0; imain < halfSize; imain++)
- {
- int randomColorCode = GetRandomColorCode();
- SetValueForSymmetricalPoints(kaleidoscope, imain, imain, randomColorCode);
- for (int i = imain + 1; i < halfSize; i++)
- {
- randomColorCode = GetRandomColorCode();
- SetValueForSymmetricalPoints(kaleidoscope, i, imain, randomColorCode);
- SetValueForSymmetricalPoints(kaleidoscope, imain, i, randomColorCode);
- }
- }
- return kaleidoscope;
- }
- /**
- * Выводит калейдоскоп в консоль в виде цветов
- */
- static void PrintKaleidoscope(int[,] kaleidoscope)
- {
- int rowCount = kaleidoscope.GetLength(0);
- int columnCount = kaleidoscope.GetLength(1);
- for (int i = 0; i < rowCount; i++)
- {
- for (int j = 0; j < columnCount; j++)
- {
- Console.BackgroundColor = (ConsoleColor)kaleidoscope[i, j];
- Console.Write(" ");
- }
- Console.WriteLine();
- }
- }
- /**
- * Получая на вход координаты из левой верхней части матрицы, метод устанавливает значение для всех симметричных
- * точек
- */
- static void SetValueForSymmetricalPoints(int[,] arr, int i, int j, int value)
- {
- int rowCount = arr.GetLength(0);
- int columnCount = arr.GetLength(1);
- // Лево верх
- arr[i, j] = value;
- // Право верх
- arr[i, columnCount - j - 1] = value;
- // Лево низ
- arr[rowCount - i - 1, j] = value;
- // Право низ
- arr[rowCount - i - 1, columnCount - j - 1] = value;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement