Интернет не удалось. DDoS-атаки сейчас широко распространены. Это зависит от вас, чтобы взять под контроль и восстановить Интернет.
Каждый бот будет контролировать 20 узлов в этой сети. Каждый узел активен или безопасен , имеет владельца и имеет силу, которая начинается с 2. Каждый активный узел связан со всеми другими активными узлами.
Каждый ход вы будете получать список всех активных узлов с указанием их силы. Для каждого активного узла, которым вы владеете, вы либо:
- Назначить активный узел , который вы хотите перенести цельный силу, или
- Сохранить и увеличить свою силу
Затем происходит следующее в порядке :
- Узел, решивший сохранить свою силу, увеличит свою силу на 1.
- Все узлы, решившие перенести свою силу, будут одновременно передавать всю свою силу новому узлу.
- Если узлу была передана сила от вражеского узла, атака начнется. Если владелец противника коллективно передает больше силы, чем первоначальный владелец (и все остальные атакующие), тогда этот враг становится новым владельцем. Сила этого узла становится силой атакующего. Если есть сила для связи, то владелец будет выбран случайным образом.
- Все узлы, оставшиеся без всякой силы, будут считаться безопасными и дают 1 очко владельцу.
После 100 игр по 100 ходов побеждает владелец с самыми безопасными узлами во всех играх. РЕДАКТИРОВАТЬ: я изменил его с 2000 до 100 витков, так как в итоге последние 1900 витков были бесполезны
IO
Вам будет передан список активных узлов (через аргументы командной строки), как показано ниже:
F20 F4 E7 E2 E20 F2
F
обозначает, что узел является дружественным узлом, и E
обозначает, что узел является врагом.
Для каждого из ваших дружественных узлов вы должны вернуть действие (через STDOUT), как показано ниже:
0,0 1,3 5,0
Выше будет означать, что вы хотите увеличить свою силу первого узла, использовать свой второй узел для атаки на четвертый узел, и ваш последний узел передаст свою силу первому узлу (и если никто не атакует его, он станет безопасным узлом ).
После возвращения ваша программа должна выйти.
Табло
Аккумулятор набрал 3240 баллов
классный получил 2370 баллов
Дамбот получил 2262 балла
random_bot получил 1603 балла
smarter_random_bot получил 1319 баллов
устойчивый бот получил 1097 баллов
Контроллер можно найти здесь: https://github.com/nathanmerrill/NetAttack
источник
Ответы:
Аккумулятор, Питон
Давайте начнем эту вечеринку! Моя заявка должна работать как на Python 2 и Python 3.
Идея действительно проста. Я начинаю перечислять свои узлы в порядке возрастания силы, сохраняя текущую сумму сил. Когда сумма превышает силу самого слабого вражеского узла (+1 для возможного увеличения), я атакую этот узел и удаляю его из пула, сбрасываю сумму и продолжаю. В конце концов, если самые сильные узлы не могут найти кого-то для атаки, они наберут больше силы.
РЕДАКТИРОВАТЬ: аккумулятор теперь немного умнее. Вместо того, чтобы всегда атаковать самый слабый вражеский узел, он накапливает силу до тех пор, пока он не может это сделать, а затем атакует самый сильный свободный узел, который он может с этой силой. Кроме того, если в конце все еще остаются враги, любые неназначенные узлы будут атаковать самого слабого из оставшихся врагов, на тот случай, если он решит перебросить свою силу.
источник
Классный, Python3
Бот делит свои собственные узлы на 3 категории в зависимости от силы, и каждый узел действует в соответствии со своей категорией.
Результат против Аккумулятора и двух ботов:
источник
Думбот, Нодейс
Бот будет атаковать без какого-либо мышления или стратегии. Основная цель - обеспечить множество безопасных узлов в самом начале. Имейте в виду, что этот бот делает бесконечный цикл с аккумулятором.
источник
SteadyBot, Node.js
источник
node SteadyBot.js F20 F4 E7 E2 E20 F2
, это работает для меня. Не могли бы вы сказать мне вход, для которого это не удается?cat F20 F4 E7 E2 E20 F2 | node SteadyBot.js