Змінюй хід війни! Допомагай ЗСУ!
  • Знижка на баннерну рекламу 30%! Банер на всіх сторінках сайту, в мобільній та десктопній версії за 14 тис. грн на місяць. Статистика сайту. Контакт: [email protected]

Вы смотрите телепередачу "А нука, гуру!"

  • Автор теми Автор теми dr_mousefly
  • Дата створення Дата створення
Stqs, выглядит компактно и продуманно, но немного напрягают последние 3-4 числа в каждой строке, они почти всегда одинаковые.
 
Stqs, молодца!
Achenar, как-то все путанно. рекурсие??

Stqs, выглядит компактно и продуманно, но немного напрягают последние 3-4 числа в каждой строке, они почти всегда одинаковые.

совпадение
 
Так нужен "короткий" или быстрый? :D

Начнем с самого не оптимального варианта "O(n)":
Код:
void fun(int count, int min, int max, int* mas, int size)
{
	assert(min*size<=count);

	for(int i = 0; i<size; i++)
		mas[i] = min;

	for(int i=min*size; i<count; i++)
	{
		int j = rand()%size;
		if(mas[j]<max) 
			mas[j]++;
		else
			i--;
	}
}
Алгоритм интерсеный - но попять вертикальный. Вас просят рандомизовать по времени, а вы рандомизуете количеству оптимизаций в день. каждый день оптимизировать по 15 раз, а там еще остаток раскидать по дням недели. решение формально верное и адекватное тупому ТЗ. Но вот представьте, что *****ьное ограничение снято, т.е. объемы выборки намного больше 7. Вы тоже будете так же адекватноТЗ (*****ьно) решать?
 
Такие вещи как максимальное/*минимальное количество определяются автоматически методами статистическйо математики. Если автор ТЗ об этом не знает , он как минимум некомпетентен, как реально - *****.
Впрочем, если такая постановка ТЗ обосновыввается тьупо "хачу так" - то вон прекрасный гавнокод асокола - на 4 страницы, на который нельзя смотреть без слез. То что надо. Если переступить через себя и отказаться от необоснорванной прихоти - решение в пару строк. Есть как-бы задача решаемые красиво, а есть задачи, поставленные мудаками. Это кстати не только в прораммировании.
 
Achenar, как-то все путанно. рекурсие??

Угу. Перестарался :) Ну цикл, конечно, обычный цикл.

Код:
private static IEnumerable<int> GetCards( int cards, int boxes, int minCards, int maxCards )
		{
			var random = new Random();
			var temp = new List<int>();
			while( boxes > 1 )
			{
				var tolMin = cards - (boxes - 1) * maxCards;
				var tolMax = cards - (boxes - 1) * minCards;
				minCards = tolMin > minCards ? tolMin : minCards;
				maxCards = tolMax < maxCards ? tolMax : maxCards;
				if (minCards > maxCards) throw new Exception("Все плохо");
				var layInBox = minCards + random.Next(maxCards - minCards + 1);
				temp.Add(layInBox);
				cards -= layInBox;
				boxes--;
			}
			temp.Add(cards);
			var result = new List<int>();
			while( temp.Count() > 0 )
			{
				var ix = random.Next(temp.Count());
				result.Add(temp[ix]);
				temp.RemoveAt(ix);
			}
			return result;
		}
 
Такие вещи как максимальное/*минимальное количество определяются автоматически методами статистическйо математики.

в реалите - только хотелками клиента.

Впрочем, если такая постановка ТЗ обосновыввается тьупо "хачу так" - то вон прекрасный гавнокод асокола - на 4 страницы, на который нельзя смотреть без слез. То что надо. Если переступить через себя и отказаться от необоснорванной прихоти - решение в пару строк.

слу, это проект в тыщи строк кода.
плюс-минус три десятка строк не есть предмет вообще чего-либо.
у меня получилось 25см строк.
 
Ну тогда и реализация будет достойной. Как говорит мой лучший друг "в армии плац чистят вилами" ))
К постановке ТЗ надо подходить подготовленным, а не так, позавчера снял в подворотне двоих - вот минимум 2 карточки, а вчера 5-ых - максимум 5.
слу, это проект в тыщи строк кода.
плюс-минус три десятка строк не есть предмет вообще чего-либо.
вот так и микрософт говорит, а потом виста занимает 1 гиг памяти...
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
Кстати, надо бы и результаты показать, наверное.

30 карточек, 7 ящиков, от 2 до 8
Код:
3 7 2 4 4 5 5
2 8 2 8 3 5 2
3 3 3 6 7 2 6
2 2 7 8 2 6 3
5 2 3 2 6 6 6
2 6 7 2 7 3 3
8 6 6 3 2 2 3
5 6 7 2 3 3 4
4 5 4 4 4 4 5
3 4 3 8 3 5 4
4 4 2 2 7 5 6
3 2 8 5 2 2 8
2 5 6 7 4 2 4
3 8 6 6 2 2 3
8 2 3 7 3 3 4
6 3 3 2 3 7 6
5 4 5 3 6 3 4
4 7 7 4 4 2 2
4 4 8 2 3 2 7
8 2 5 2 5 3 5
6 2 6 3 2 8 3
3 2 6 2 8 2 7
6 2 5 5 2 4 6
5 7 8 2 2 4 2
4 6 4 4 2 7 3
7 4 6 2 2 7 2
5 5 3 2 5 4 6
3 3 2 6 7 6 3

30 ящиков, 1 карточка
Код:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 
вам не кажется, что 30 ящиков 1 карточка и
5 ящиков 500 карточек решаются несколько иначе?
или зубная щетка самэ оно для подметания плаца?
 
согласен. для больших количеств по-другому. как определить где грань?
 
это Ваша реализация не будет удовлетворять хотелкам клиента.
Вы больше времени потратите на споры.
все, встал и вышел. )))

при выборке 200/7 алгоритм один
при выборке 20/7 - иной
да, во втором случае надо принимать дополнительные меры, чтобы удовлетворить заказчика. что вынуждает раздувать код
но мне интересно, выборку 200/7 с минимумом/максимумром например 20-40 вы бы тоже решали так?
 
вам не кажется, что 30 ящиков 1 карточка и
5 ящиков 500 карточек решаются несколько иначе?
или зубная щетка самэ оно для подметания плаца?

Простите, это метафора или надо понимать буквально? Тот же алгоритм для 500 карточек, 5 ящиков от 10 до 200 в каждом.

Код:
23 143 81 78 175
71 18 197 64 150
46 125 139 141 49
92 136 111 23 138
43 36 91 190 140
188 142 51 15 104
63 57 11 188 181
163 117 47 162 11
122 122 167 12 77
94 82 11 183 130
99 65 42 196 98
95 135 104 137 29
14 29 84 179 194
131 177 36 17 139
137 18 134 43 168
60 16 198 32 194
111 27 22 160 180
36 167 15 145 137
102 193 32 90 83
186 117 56 24 117
 
согласен. для больших количеств по-другому. как определить где грань?

теория вероятности. дисперсия выборки.
если моделируется именно случайный закон, то никаких дополнительных ограничений не надо. я ж не влзражаю, что проще написать больше ****окода и это будет адекватной реакцией на такое ТЗ, но кричать, что это огерцогенно красивое решение нельзя!
да, и хотелось бы услышать мнение начальника транспортного цеха. Дмитрий.....

Простите, это метафора или надо понимать буквально? Тот же алгоритм для 500 карточек, 5 ящиков от 10 до 200 в каждом.

я ъхочу сказать, что если число карточек намного больше чем число коробок, то можно с определенной вероятностью утверждать, что дисперсия выбоки, полученной путем рандомизации по дням!!!! не превысит заданную. А в случае, если превышение приниципиально недопустимо, то хотелось бы услышать обоснование этого. В противном случае это просто самодурство клиента - адекватный ответ - ****окод, который мы наблюдали на первой странице. Автор видать имеет бааальшой опыт работы с мудаками..
А квинтэссенция темы - красивое решение.
 
теория вероятности. дисперсия выборки.
если моделируется именно случайный закон, то никаких дополнительных ограничений не надо. я ж не влзражаю, что проще написать больше ****окода и это будет адекватной реакцией на такое ТЗ, но кричать, что это огерцогенно красивое решение нельзя!
да, и хотелось бы услышать мнение начальника транспортного цеха. Дмитрий.....

я ъхочу сказать, что если число карточек намного больше чем число коробок, то можно с определенной вероятностью утверждать, что дисперсия выбоки, полученной путем рандомизации по дням!!!! не превысит заданную. А в случае, если превышение приниципиально недопустимо, то хотелось бы услышать обоснование этого. В противном случае это просто самодурство клиента - адекватный ответ - ****окод, который мы наблюдали на первой странице. Автор видать имеет бааальшой опыт работы с мудаками..
А квинтэссенция темы - красивое решение.

Для тупорылых: в решении на первой странице код занимает 21 строчку, остальное проверки и более быстрые алгоритмы заполнения массива для разных частных случаев, плюс html для проверки реализации алгоритма. Еще раз ***.
 
<br/>
 
Останнє редагування:
я ъхочу сказать, что если число карточек намного больше чем число коробок, то можно с определенной вероятностью утверждать, что дисперсия выбоки, полученной путем рандомизации по дням!!!! не превысит заданную. А в случае, если превышение приниципиально недопустимо, то хотелось бы услышать обоснование этого. В противном случае это просто самодурство клиента - адекватный ответ - ****окод, который мы наблюдали на первой странице. Автор видать имеет бааальшой опыт работы с мудаками..
А квинтэссенция темы - красивое решение.

исступление эмоций...
 
Стремная цитата получилась, г-н ASOkol, я по поводу Вашего кода ни слова не сказал, но тем не менее, был послан :)

Это не тебе. Пост поправил.

исступление эмоций...

впридачу настолько самоуверенный и тупорылый , что даже не рассмотрел
Код:
        else if (aMaxCount * aBoxCount <= aCardCount) {
          for (var lBoxIndex = 0; lBoxIndex < aBoxCount; lBoxIndex++) {
            lResult[lBoxIndex] = aMaxCount;
          }
на той же первой странице.
 
Для тупорылых: в решении на первой странице код занимает 21 строчку, остальное проверки и более быстрые алгоритмы заполнения массива для разных частных случаев, плюс html для проверки реализации алгоритма. Еще раз ***.
все равно там много и 21
феерия :іржач::іржач:
пошли еще раза 4
 
Назад
Зверху Знизу