Skip to content

andgein/week_challenge_2017

Repository files navigation

Всё написано на третьем питоне. Перед запуском надо установить питоновские зависимости pip install -Ur requirements.txt (под линуксом pip3 вместо pip)

  1. Для запуска мега-решателя тасков в вечном цикле просто запустите python main.py. a. По умолчанию он интерактивный, будет спрашивать о каждом непонятном действии b. Можно запустить с параметром --silent, тогда он будет шарашить как безумный, пока сможет, спрашивать ничего не будет b. Можно запустить с параметром --multithread, тогда он будет шарашить как безумный в 8 потоков. Не советую запускать без --silent
  2. Для запуска тестов на корректность запустите python main.py --test,
  3. Можно запустить тесты конкретного решателя: python main.py --test aplusb

АПИ для работы с сервером тасков реализовано в weekchallenge.py

Микросервисный мега-решатель

Для запуска микросервисного решателя запуститет start_all.bat. Запустится несколько процессов получения задания, несколько процессов сдачи ответов и по несколько на каждый тип задания (количество регулирется в start_solvers.bat). Можно остановить всё (stop_all.bat) или перезапустить солверы, если вы изменили что-то в их исходниках (restart_solvers.bat).

Автоматически решаются таски

  • Colors

  • Accentuation

  • TTS

    Для солвера TTS на системе должен быть установлен ffmpeg. Он должен быть доступен по команде ffmpeg из консоли. Для винды можно установить отсюда: http://ffmpeg.zeranoe.com/builds/

  • A+B

  • I-love-time

  • S-like-$

  • bruce-schneier

    Для солвера bruce-schneier должен быть установлен ggnfs в папке C:\tmp\ggnfs (инструкция: http://gilchrist.ca/jeff/factoring/nfs_beginners_guide.html)

  • tsya

  • tsya-strikes-back

Чтобы написать свой солвер:

  • Создайте для него файл в папке solvers/. Файлы называем по прилетающим от сервера тасков типам
  • В файле надо импортировать библиотечку weekchallenge и определить класс class Solver(TaskSolver), смотрите соседние файлы для примера.
  • В этом классе надо объявить поле type_name, точно равное типу, прилетаемому от сервера в JSON'е с заданием
  • В этом классе надо определить функцию def solve(self, task). Функция должна возвращать строку. Параметр task — переменная типа Task. Самое интересное в ней — поле task.value. Обычно только оно нужно для решения.
  • В этом классе можно определить функцию def tests(self), возвращающую список двухэлементных кортежей — входные данные для тестов и правильные ответы. Эти тесты запускаются по python main.py --test
  • Вспомогательные файлы, которые нужны солверу, складывайте в папку files/

About

Репозиторий команды «Фантастическая четвёрка» для решений соревнования Week Challenge 2017

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published