Сформировать массив, представляющий собой поле для игры в «Пятнашки» - C#
Формулировка задачи:
Надо сформировать массив, представляющий собой поле для игры в «Пятнашки». Поле является массивом 4x4, в клетках которого располагаются числа от 1 до 15 в случайном порядке без повторений. Одна клетка игрового поля остается свободной.
Решение задачи: «Сформировать массив, представляющий собой поле для игры в «Пятнашки»»
textual
Листинг программы
- static void Main(string[] args)
- {
- const int N = 4;
- int l = N * N;
- //формируем сначала одномерный массив (0, 1, , ... , 15), 0 - пустая клетка
- //будем работать пока с этим массивом
- var array = Enumerable.Range(0, l).ToArray();
- var rnd = new Random();
- //переставляем элементы массива в случайном порядке
- for(int i = l - 1; i >= 0; i--)
- {
- var j = rnd.Next(i);
- Swap(ref array[i], ref array[j]);
- }
- //пусть наш массив - функция подстановки из индексов в значения
- //определим четность подстановки
- int count = 0;
- for(int i = 0; i < l; i++)
- {
- for(int j = 0; j < i; j++)
- if (array[i] < array[j])
- count++;
- }
- //если подстановка нечетна - делаем еще одну транспозицию
- if(count % 2 != 0)
- {
- int i = rnd.Next(l - 2);
- Swap(ref array[i], ref array[i + 1]);
- }
- int[,] field = new int[N, N];
- //приводим одномерный массив к двумерному полю
- for(int i = 0; i < l; i++)
- {
- field[i / N, i % N] = array[i];
- }
- }
- static void Swap(ref int a, ref int b)
- {
- var t = a;
- a = b;
- b = t;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д