Оlеg75
18.10.2015, 21:48
XPoint дал задание к сегодняшнему дню придумать алгоритм бота, который будет по запросу пользователя задаватьт фразам в чате этого пользователя определённый цвет.
Алгоритм я написал просто своими словами, даже без псевдокода, так как не знаю механизм опроса в СДК, касающийся ожидания входа пользователей и вывода фраз в чат.
Алгоритм писал быстро из за нехватки времени, поэтому мог где- то ошибиться.
-------------------------------------------------------------------------------------------
1. Создать 4 массива. у всех количество элементов равно 15.
-1 Массив типа string для названий всех имеющихся цветов. Сразу задаются названия цветов.
-2 Массив типа int для номеров гражданств вошедших пользователей. Все элементы сначала инициализируются нулевым значением.
-3 Массив типа int для номеров выбранных пользователями цветов. Все элементы сначала инициализируются нулевым значением.
-4 Массив типа int для номеров элементов массива 1. Все элементы сначала инициализируются номерами от 0 до 14.
2. Номер гражданства первого вошедшего пользователя заносится в массив 2 в первый элемент (элемент 0).
3. В приват пользователю выводится текст: "Здравствуйте, [ник]. Выберите номер цвета для своих фраз." Далее идёт список всех цветов, и их порядковый номер. Порядковый номер - это содержимое ячеек массива 4. Список цветов - это названия цветов, находящихся в ячейках массива 1 с такими номерами. При выборе цвета следующими пользователями, им уже предоставляется список без тех цветов, которые выбьрали предыдущие пользователи. Вместо таких цветов в ячейки массива 4 с номерами, сооответствующие номерам ячейки массива 2, в которых записаны гражданства уже выбравших цвет пользователей - записывается значение ноль. Поэтому, например, в списке вместо цвета "7 - зелёный", уже может стоять "0 - чёрный".
4. Ожидание ввода текста пользователем в приват бота.
5. Если пользователь вводит число (от 1 до 14), являющееся порядковым номером какого-либо ещё не выбраного другими пользователями цвета, переходим дальше (п. 7). Введённое пользователем число указывает на номер элемента массива 1.
6. Если вводит что-то другое, либо номер 0 (это тоже номер элемента массива 1)- пользователю присваивается чёрный цвет текста.
7. Введённое пользователем число присваивается первому элементу массива 3 (элемент 0).
--Номера гражданств всех последующих входящих пользователей заносятся в следующие ячейки массива 2 (элемент 1, элемент 2, ..., элемент 14).
--Выбранные номера цветов этих пользователей присваиваются следующим элементам массива 3 (элемент 1, элемент 2, ..., элемент 14).
--Таким образом создаётся таблица соответствия номеров гражданств выбранным номерам цветов.
--Если пользователь выходит из зоны действия бота - его номера из таблицы соответствия не исчезают, и при следующем входе пользователя (пока запущен бот), ему уже не задаётся вопрос о выборе цвета, а сразу назначается ранее выбранный цвет.
--При входе в зону действия бота более 15 пользователей, последующим (16-му, 17-му, и т.д.) пользователям никаких вопросов уже не задаётся, а автоматически присваивается чёрный цвет фраз для чата.
8. При отправке сообщения в чат фраза сначала попадает к боту и анализируется:
- Определяется номер ячейки массива 2, где находится гражданство написавшего в чат пользователя
- Ищется совпадающий номер ячейки массива 3. Из этой ячейки считывается номер цвета и сопоставляется с аналогичным номером ячейки массива 1
- Из найденной ячейки массива 1 извлекается название выбранного ранее пользователем цвета.
9. Фраза попадает в чат с уже нужным цветом.
Алгоритм я написал просто своими словами, даже без псевдокода, так как не знаю механизм опроса в СДК, касающийся ожидания входа пользователей и вывода фраз в чат.
Алгоритм писал быстро из за нехватки времени, поэтому мог где- то ошибиться.
-------------------------------------------------------------------------------------------
1. Создать 4 массива. у всех количество элементов равно 15.
-1 Массив типа string для названий всех имеющихся цветов. Сразу задаются названия цветов.
-2 Массив типа int для номеров гражданств вошедших пользователей. Все элементы сначала инициализируются нулевым значением.
-3 Массив типа int для номеров выбранных пользователями цветов. Все элементы сначала инициализируются нулевым значением.
-4 Массив типа int для номеров элементов массива 1. Все элементы сначала инициализируются номерами от 0 до 14.
2. Номер гражданства первого вошедшего пользователя заносится в массив 2 в первый элемент (элемент 0).
3. В приват пользователю выводится текст: "Здравствуйте, [ник]. Выберите номер цвета для своих фраз." Далее идёт список всех цветов, и их порядковый номер. Порядковый номер - это содержимое ячеек массива 4. Список цветов - это названия цветов, находящихся в ячейках массива 1 с такими номерами. При выборе цвета следующими пользователями, им уже предоставляется список без тех цветов, которые выбьрали предыдущие пользователи. Вместо таких цветов в ячейки массива 4 с номерами, сооответствующие номерам ячейки массива 2, в которых записаны гражданства уже выбравших цвет пользователей - записывается значение ноль. Поэтому, например, в списке вместо цвета "7 - зелёный", уже может стоять "0 - чёрный".
4. Ожидание ввода текста пользователем в приват бота.
5. Если пользователь вводит число (от 1 до 14), являющееся порядковым номером какого-либо ещё не выбраного другими пользователями цвета, переходим дальше (п. 7). Введённое пользователем число указывает на номер элемента массива 1.
6. Если вводит что-то другое, либо номер 0 (это тоже номер элемента массива 1)- пользователю присваивается чёрный цвет текста.
7. Введённое пользователем число присваивается первому элементу массива 3 (элемент 0).
--Номера гражданств всех последующих входящих пользователей заносятся в следующие ячейки массива 2 (элемент 1, элемент 2, ..., элемент 14).
--Выбранные номера цветов этих пользователей присваиваются следующим элементам массива 3 (элемент 1, элемент 2, ..., элемент 14).
--Таким образом создаётся таблица соответствия номеров гражданств выбранным номерам цветов.
--Если пользователь выходит из зоны действия бота - его номера из таблицы соответствия не исчезают, и при следующем входе пользователя (пока запущен бот), ему уже не задаётся вопрос о выборе цвета, а сразу назначается ранее выбранный цвет.
--При входе в зону действия бота более 15 пользователей, последующим (16-му, 17-му, и т.д.) пользователям никаких вопросов уже не задаётся, а автоматически присваивается чёрный цвет фраз для чата.
8. При отправке сообщения в чат фраза сначала попадает к боту и анализируется:
- Определяется номер ячейки массива 2, где находится гражданство написавшего в чат пользователя
- Ищется совпадающий номер ячейки массива 3. Из этой ячейки считывается номер цвета и сопоставляется с аналогичным номером ячейки массива 1
- Из найденной ячейки массива 1 извлекается название выбранного ранее пользователем цвета.
9. Фраза попадает в чат с уже нужным цветом.