This repo contains working solutions, in hopes of exchanging ideas to collaboratively come up with the most/size.speed optimized solutions (or simply to help those out there who are stuck). Even though the programs are created through a drag-and-drop interface within the game, copy/paste from/to the clipboard works as assembly source code seen in this repo.
The file naming convention used is:
Under the solutions
folder, inside a subfolder called <level>-<level name>-<size par>.<speed par>
, <size>.<speed>[.<type>]-<author>.asm
Where size
and speed
are the number of commands and steps of the solution, which is deemed by the game as size and speed optimized if they are equal to or less than the par numbers in its folder's name.
The optional type
field is a descriptor for the type of solution (e.g. the algorithm used, whether it's an exploit etc.)
author
is the GitHub username of the author of the solution.
For example, solutions/07-Zero-Exterminator-4.23/4.23-atesgoral.asm
means the solution is both size and speed optimized and is by user atesgoral.
Please issue a pull request while keeping in mind:
- The file naming convention is met
- If you're a new contributor, edit the contributors.yml file to add yourself
- Make sure your new solution passes tests (see below)
You need Node.js 4.1+ to be installed.
npm install
to get all dependencies
npm test
to run tests.
The tests involve the static/runtime analysis and benchmarking of each solution by utilizing:
- hrm-parser by @nrkn for static analysis of programs
- hrm-cpu by @nrkn for running programs and runtime analytics
- hrm-level-data by @atesgoral for level metadata for providing level constraints
- hrm-level-inbox-generator by @atesgoral for randomly generating level-appropriate inboxes for benchmarking
- hrm-level-outbox-generator by @atesgoral for determining the expected outboxes for given level + inbox for benchmarking