Всё написано на третьем питоне. Перед запуском надо установить питоновские зависимости
pip install -Ur requirements.txt
(под линуксом pip3
вместо pip
)
- Для запуска мега-решателя тасков в вечном цикле просто запустите
python main.py
. a. По умолчанию он интерактивный, будет спрашивать о каждом непонятном действии b. Можно запустить с параметром--silent
, тогда он будет шарашить как безумный, пока сможет, спрашивать ничего не будет b. Можно запустить с параметром--multithread
, тогда он будет шарашить как безумный в 8 потоков. Не советую запускать без--silent
- Для запуска тестов на корректность запустите
python main.py --test
, - Можно запустить тесты конкретного решателя:
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/