Смоделировать работу локальной сети:
- в сети есть несколько компьютеров, связанных друг с другом (каким образом — можно задавать, например, матрицей смежности);
- на каждом компе стоит ОС (Windows, Linux, etc...);
- в сети гуляют вирусы, так что для каждой машины есть вероятность заразиться (вероятность зависит от типа ОС), заражаются компьютеры, непосредственно соединённые с заражёнными;
- заражения (и проверки, заразился компьютер или нет) происходят дискретно — по ходам; Обратите внимание, если компьютер A связан с B, а B связан с C, то A не может заразить C за один ход. Требуется выводить состояние сети после каждого хода, пока состояние в принципе может измениться. Необходимы также юнит-тесты, проверяющие корректность работы алгоритма заражения: если вероятность заражения всегда 1, вирус должен вести себя как обход в ширину, если вероятность 0 — никто не должен заражаться. Можно (но нужно ли?) использовать mock-объекты для тестирования (подумайте, куда их можно прикрутить — например, для исключения фактора случайности из симуляции).