Заполнение массива, с условием - C#
Формулировка задачи:
Всем привет!
Подскажите горе программисту одну штуку:
Нужно заполнить одномерный массив на 11 ячеек, выбранным пользователем (от 1 до 6) количеством элементов, на рандомные позиция.
Единственное условие между каждым из элементов должна быть минимум 1 пустая ячейка.
Расставить 1, 2 и 6 не составляет проблем. Но вот как одним алгоритмом, при необходимости, расставлять 3, 4 и 5 не знаю.
Пока сделал костыльный while() который повторяет расстановку до тех пор пока все не станет как нужно, но работает это ужасно.
Решение задачи: «Заполнение массива, с условием»
textual
Листинг программы
using System;
class Program
{
public static void Main()
{
Random rnd = new Random();
while (true)
{
Console.WriteLine("Введите число от 1 до 6");
string s = Console.ReadLine();
if (s == null) break;
int n;
if (!Int32.TryParse(s, out n) || n < 1 || n > 6) break;
int[] spaces = new int[n + 1];
for (int i = 1; i < spaces.Length - 1; ++i)
{
spaces[i] = 1;
}
for (int i = 12 - n * 2; i != 0; --i)
{
spaces[rnd.Next(spaces.Length)]++;
}
for (int i = 0; i < spaces.Length; ++i)
{
if (i != 0) Console.Write("1 ");
while (spaces[i]-- != 0) Console.Write("0 ");
}
Console.WriteLine();
}
}
}