Составить алгоритм выдачи ролей в игре Мафия на PHP

141
25 марта 2018, 21:59

Здравствуйте! Помогите составить алгоритм, чтобы на входе было только количество игроков от 10 до 30, а не выходе показывало количество всех ролей: мафия, доктор, коп, путана, мирный житель.

Вот как должно быть:

10 игроков
   3 мафии
   1 коп
   1 доктор
   1 путана
   4 мирных жителя
11 игроков
   4 мафии
   1 коп
   1 доктор
   1 путана
   4 мирных жителя
12 игроков
   4 мафии
   2 коп
   1 доктор
   1 путана
   4 мирных жителя
13 игроков
   4 мафии
   2 коп
   1 доктор
   1 путана
   5 мирных жителя
14 игроков
   5 мафии
   2 коп
   1 доктор
   1 путана
   5 мирных жителя
15 игроков
   5 мафии
   2 коп
   2 доктор
   1 путана
   5 мирных жителя
16 игроков
   5 мафии
   2 коп
   2 доктор
   1 путана
   6 мирных жителя
17 игроков
   6 мафии
   2 коп
   2 доктор
   1 путана
   6 мирных жителя
18 игроков
   6 мафии
   2 коп
   2 доктор
   2 путана
   6 мирных жителя
19 игроков
   6 мафии
   2 коп
   2 доктор
   2 путана
   7 мирных жителя
20 игроков
   7 мафии
   2 коп
   2 доктор
   2 путана
   7 мирных жителя
21 игроков
   7 мафии
   3 коп
   2 доктор
   2 путана
   7 мирных жителя
22 игроков
   7 мафии
   3 коп
   2 доктор
   2 путана
   8 мирных жителя
23 игроков
   8 мафии
   3 коп
   2 доктор
   2 путана
   8 мирных жителя
24 игроков
   8 мафии
   3 коп
   3 доктор
   2 путана
   8 мирных жителя
25 игроков
   8 мафии
   3 коп
   3 доктор
   2 путана
   9 мирных жителя
26 игроков
   9 мафии
   3 коп
   3 доктор
   2 путана
   9 мирных жителя
27 игроков
   9 мафии
   3 коп
   3 доктор
   3 путана
   9 мирных жителя
28 игроков
   9 мафии
   3 коп
   3 доктор
   3 путана
   10 мирных жителя
29 игроков
   10 мафии
   3 коп
   3 доктор
   3 путана
   10 мирных жителя
30 игроков
   10 мафии
   4 коп
   3 доктор
   3 путана
   10 мирных жителя

А когда значения активных ролей (коп, доктор, путана) не равны, то распределять оставшиеся активные роли рандомно среди этих активных ролей, т.е. если активных ролей 6, то каждая по 2 игрока. Если активных ролей 8, то получается все активные роли должны быть каждая в количестве равном 2, а остальные 2 распределяются рандомно. Например, 2 доктора, 3 копа, 3 путаны ИЛИ 2 путаны, 3 копа, 3 доктора.

Как?

READ ALSO
Метод для слияния 2-ух List'ов С++

Метод для слияния 2-ух List'ов С++

Необходимо написать метод для отсортированного слияния List A и List BПример: List A 10 20 30 40 List B 15 25 35 Результат List C 10 15 20 25 30 35 40

205
boost::any копирует значение?

boost::any копирует значение?

Почему не совпадает указатель на объект, если сначала его превратит в any, а потом обратно в тот-же тип?

190
Перевод выражения в код ассемблера

Перевод выражения в код ассемблера

Есть программа который переводит выражение в обратную польскую запись и потом вычисляет результатмне нужно в момент вычисления транслировать...

197
Открытие файла без расширения в С++

Открытие файла без расширения в С++

Есть файл, путь - C:\Windows\System32\config\SYSTEM "SYSTEM" - сам файл, лог, в С++ пишу такой код, но файл невозможно открыть:

176