#include <vector>
std::string gen(std::vector<char> alphabet, std::size_t idx, std::size_t digits)
{
std::string ret(digits, alphabet[0]);
std::size_t alphas = alphabet.size();
while (digits--)
{
ret[digits] = alphabet[idx % alphas];
idx /= alphas;
}
return ret;
}
void gen_and_out(std::size_t n, std::vector<char> alphabet)
{
std::size_t numbers = 1;
std::size_t alphas = alphabet.size();
for (std::size_t i = 0; i < n; ++i)
{
numbers *= alphas; // на каждом шаге чисел в alphas раз больше
for (std::size_t cur = 0; cur < numbers; ++cur)
{
std::cout << gen(alphabet, cur, i + 1) << std::endl;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
gen_and_out(3, std::vector<char>({ 'a', 'b', 'c'}));
}
#include <vector>
std::string gen(std::vector<char> alphabet, std::size_t idx)
{
std::vector<char> ret;
std::size_t alphas = alphabet.size();
while (idx)
{
std::size_t cur = idx % alphas;
if (!cur) // нет нуля
cur = alphas;
ret.push_back(alphabet[cur - 1]);
idx = (idx - cur) / alphas;
}
return std::string(ret.rbegin(), ret.rend());
}
void gen_and_out(std::size_t n, std::vector<char> alphabet)
{
std::size_t numbers = 1;
std::size_t alphas = alphabet.size();
for (std::size_t i = 0; i < n; ++i)
{
numbers *= alphas;
numbers += 1;
}
for (std::size_t i = 1; i < numbers; ++i)
std::cout << gen(alphabet, i) << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
gen_and_out(3, std::vector<char>({ 'a', 'b', 'c' }));
}
gen alphas n = concatMap (`replicateM` alphas) [1..n]
main = mapM_ putStrLn $ gen "abc" 3
- что есть "облачный маршрутизатор"?Практически любая фраза, содержащая слово "облачный" (кроме "облачная погода") - плод сумрачного маркетингового гения. Я не знаю, что такое "облачный маршрутизатор". Это может означать "SOHO-маршрутизатор со встроенным клиентом для файлового облака". Это может означать "группа маршрутизаторов с централизованным управлением/автоматическим распределением (provisioning) ресурсов конечным пользователям", некий шаг в сторону SDN (software-defined networking). Это может означать что угодно, это маркетинговое понятие.
- опять же, где более-менее можно узнать об отличиях между сериями?Логичнее всего - на сайте cisco.com. Еще, по-моему, на канале skillfactory в youtube были обзорные видео.
- чем маршрутизатор периметра отличается от просто маршрутизатора?Положением в топологии сети (на границе вашей сети и сети вашего провайдера) и вытекающими из этого требованиями (EBGP-сессии, некая фильтрация трафика и т.д.).
- например, недавно была статья, исходя из которой мне не понятно, что такое сетевой экран и система предотвращения вторжений, т.к. у меня в голове это все равнозначно файрволлу и встроено в роутер?Фаерволлы, насколько мне известно, начинались как простые пакетные фильтры, затем фильтры с учетом состояния сессии (TCP), затем фильтры с учетом L7-данных (Application level gateways, ALG; началось это с необходимости обработки протокола FTP, известного своим специфическим дизайном), затем добавились антивирусы, антиспам и поиск сигнатур вредоносного трафика (IDS/IPS). Часто все эти возможности в той или иной степени совмещаются в одном устройстве (Unified Threat Management, UTM).
так вот, с чего бы начать, чтобы таких вопросов поубавилось?Изучите спецификации и примеры использования каждого из интересующих вас семейств устройств. Разберитесь, какие особенности устройств (большой объем памяти - можно принять несколько BGP Full View, высокопроизводительные ASIC - низкие задержки при обработке трафика, криптографический ускоритель - высокая производительность шифрованных тоннелей и т.д.) позволяют их использовать в соответствующих ролях.