It is better to relax constraints and make assumptions that allow for a solution now rather than finding the optimal solution in 1 hour.
https://challenges.reply.com/tamtamy/home.action
- Telegram
- ide (if vscode, take a couple minutes to install all needed linters/formatters/etc, set up python interpreter, etc)
- browser
- Google Hangouts
- anything else?
-
$ conda env create -f environment.yml -
$ conda activate reply -
(optional) Make the new conda environment available as a Jupiter kernel:
$ python -m ipykernel install --user --name reply --display-name "reply"
If additional packages are needed throughout the challenge, add them to environment.yml and run
$ conda env update -f environment.yml- Fast read of the problem statement (~30 min) to identify:
- General setting (no more than 5 min)
- I/O format (check samples!) (~15 min)
- scoring (check samples!) (~10 min)
- Discussion on setting and I/O (~20 min)
- Discussion of other issues such as asking the organizers about unclear statements (~20 min)
- First coding iteration (~1.5 h):
- One person writes I/O parsers/writers (~30 minutes)
- Two people find the quickest solution to implement (~30 minutes)
- Discussion, task assignment, coding (1 hour)
- Second coding iteration (~1 h)
- Ideally: refinement. More likely: still at point 4.2
- Docstrings are not needed, but commenting (ideally before writing code) is much appreciated
- Don't wait long before asking eachother questions if something is unclear, not well defined, etc
- There's always gonna be a much better solution we would like to implement, but let's focus on actually sending a solution first
- Brute force solutions are indeed solutions
- Random feasible solutions are indeed solutions
- Heuristics can be a useful tool to improve on 5. and 6.
- Genetic algorithms, graph search, linear programming are typically what first comes to mind, but they're not easy to formalize and implement in 4 hours