Human Resource Machine is a fun, little, dark-humoured puzzle game that either can teach you assembly from the ground up or allow you to put your existing assembly knowledge into practice in coming up with speed/size optimized solutions to increasingly hard problems.
Human Resource Machine is a puzzle game. In each level, your boss gives you a job. Automate it by programming your little office worker! If you succeed, you'll be promoted up to the next level for another year of work in the vast office building. Congratulations!
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.
Head over to the repo to browse all solutions.
To import one of these solutions into the game:
Level |
Name | Size/Par | Speed/Par | Smallest That Meets Speed Challenge | Fastest That Meets Size Challenge |
---|---|---|---|---|---|
1 | Mail Room | 6/6 by @atesgoral | 6/6 by @atesgoral | 6/6 by @atesgoral (in 6/6) | 6/6 by @atesgoral (in 6/6) |
2 | Busy Mail Room | 3/3 by @atesgoral | 20/25 by @viamodulo | 5/3 by @jdashton (in 25/25) | 30/25 by @atesgoral (in 3/3) |
3 | Copy Floor | 6/6 by @atesgoral | 6/6 by @atesgoral | 6/6 by @atesgoral (in 6/6) | 6/6 by @atesgoral (in 6/6) |
4 | Scrambler Handler | 7/7 by @atesgoral | 18/21 by @viamodulo | 7/7 by @atesgoral (in 21/21) | 21/21 by @atesgoral (in 7/7) |
5 | Coffee Time | ||||
6 | Rainy Summer | 6/6 by @atesgoral | 20/24 by @viamodulo | 6/6 by @atesgoral (in 24/24) | 24/24 by @atesgoral (in 6/6) |
7 | Zero Exterminator | 4/4 by @atesgoral | 19/23 by @viamodulo | 4/4 by @atesgoral (in 23/23) | 23/23 by @atesgoral (in 4/4) |
8 | Tripler Room | 6/6 by @atesgoral | 20/24 by @viamodulo | 6/6 by @atesgoral (in 24/24) | 24/24 by @atesgoral (in 6/6) |
9 | Zero Preservation Initiative | 5/5 by @nanashi-juanto | 20/25 by @viamodulo | 5/5 by @nanashi-juanto (in 25/25) | 25/25 by @nanashi-juanto (in 5/5) |
10 | Octoplier Suite | 9/9 by @atesgoral | 32/36 by @viamodulo | 9/9 by @atesgoral (in 36/36) | 36/36 by @atesgoral (in 9/9) |
11 | Sub Hallway | 10/10 by @atesgoral | 36/40 by @viamodulo | 10/10 by @atesgoral (in 40/40) | 40/40 by @atesgoral (in 10/10) |
12 | Tetracontiplier | 14/14 by @nanashi-juanto | 52/56 by @viamodulo | 14/14 by @nanashi-juanto (in 56/56) | 56/56 by @nanashi-juanto (in 14/14) |
13 | Equalization Room | 9/9 by @unframework | 24/27 by @icez | 9/9 by @unframework (in 27/27) | 27/27 by @unframework (in 9/9) |
14 | Maximization Room | 10/10 by @cowboy | 28/34 by @icez | 10/10 by @cowboy (in 31/34) | 31/34 by @cowboy (in 10/10) |
15 | Employee Morale Insertion | ||||
16 | Absolute Positivity | 7/8 by @18111398 | 29/36 by @viamodulo | 8/8 by @codejnki (in 34/36) | 34/36 by @codejnki (in 8/8) |
17 | Exclusive Lounge | 11/12 by @nelson-antunes | 24/28 by @viamodulo | 11/12 by @nelson-antunes (in 26/28) | 26/28 by @nelson-antunes (in 11/12) |
18 | Sabbatical Beach Paradise | ||||
19 | Countdown | 10/10 by @18111398 | 64/82 by @icez | 11/10 by @AaronKnowles (in 80/82) | 83/82 by @18111398 (in 10/10) |
20 | Multiplication Workshop | 14/15 by @nhowell | 65/109 by @viamodulo | 19/15 by @mrflip (in 108/109) | 135/109 by @skwasjer (in 15/15) |
21 | Zero Terminated Sum | 9/10 by @steambap | 59/72 by @viamodulo | 10/10 by @skwasjer (in 68/72) | 68/72 by @skwasjer (in 10/10) |
22 | Fibonacci Visitor | 15/19 by @sniperrifle2004 | 47/156 by @viamodulo | 15/19 by @sniperrifle2004 (in 126/156) | 112/156 by @mrflip (in 18/19) |
23 | The Littlest Number | 12/13 by @peterfreese | 63/75 by @icez | 12/13 by @peterfreese (in 71/75) | 70/75 by @mrflip (in 13/13) |
24 | Mod Module | 11/12 by @jwueller | 44/57 by @icez | 11/12 by @jwueller (in 50/57) | 50/57 by @jwueller (in 11/12) |
25 | Cumulative Countdown | 10/12 by @skwasjer | 68/82 by @viamodulo | 11/12 by @skwasjer (in 79/82) | 79/82 by @skwasjer (in 11/12) |
26 | Small Divide | 15/15 by @ekx | 46/76 by @icez | 15/15 by @ekx (in 71/76) | 71/76 by @ekx (in 15/15) |
27 | Midnight Petroleum | ||||
28 | Three Sort | 28/34 by @eiTTio | 68/78 by @viamodulo | 47/34 by @jdashton (in 75/78) | 85/78 by @steambap (in 33/34) |
29 | Storage Floor | 5/5 by @atesgoral | 20/25 by @viamodulo | 5/5 by @atesgoral (in 25/25) | 25/25 by @atesgoral (in 5/5) |
30 | String Storage Floor | 7/7 by @atesgoral | 159/203 by @mrflip | 7/7 by @atesgoral (in 203/203) | 203/203 by @atesgoral (in 7/7) |
31 | String Reverse | 10/11 by @FireGoblin | 58/122 by @viamodulo | 10/11 by @FireGoblin (in 121/122) | 115/122 by @kyanet (in 11/11) |
32 | Inventory Report | 16/16 by @cowboy | 191/393 by @viamodulo | 16/16 by @cowboy (in 377/393) | 377/393 by @cowboy (in 16/16) |
33 | Where's Carol? | ||||
34 | Vowel Incinerator | 13/13 by @viamodulo | 101/323 by @viamodulo | 13/13 by @viamodulo (in 313/323) | 313/323 by @viamodulo (in 13/13) |
35 | Duplicate Removal | 13/17 by @skwasjer | 71/167 by @viamodulo | 16/17 by @fbastien (in 149/167) | 149/167 by @fbastien (in 16/17) |
36 | Alphabetizer | 24/39 by @halchihal | 55/109 by @icez | 24/39 by @halchihal (in 82/109) | 64/109 by @18111398 (in 27/39) |
37 | Scavenger Chain | 8/8 by @IAmWave | 56/63 by @viamodulo | 8/8 by @IAmWave (in 63/63) | 63/63 by @IAmWave (in 8/8) |
38 | Digit Exploder | 20/30 by @837951602 | 100/165 by @viamodulo | 41/30 by @viamodulo (in 160/165) | 199/165 by @eiTTio (in 27/30) |
39 | Re-Coordinator | 14/14 by @FireGoblin | 40/76 by @viamodulo | 14/14 by @FireGoblin (in 73/76) | 73/76 by @FireGoblin (in 14/14) |
40 | Prime Factory | 19/28 by @halchihal | 142/399 by @viamodulo | 28/28 by @18111398 (in 273/399) | 273/399 by @18111398 (in 28/28) |
41 | Sorting Floor | 20/34 by @mrflip | 446/714 by @viamodulo | 20/34 by @mrflip (in 648/714) | 536/714 by @viamodulo (in 30/34) |
42 | End Program. Congratulations. |
Level |
Name | Fastest (Input-specific allowed) | Fastest (Input-specific allowed, all tests pass) | ||
---|---|---|---|---|---|
1 | Mail Room | 6/6 by @atesgoral (in 6/6, 100% pass) | 6/6 by @atesgoral (in 6/6, not input-specific) | ||
2 | Busy Mail Room | 20/25 by @peterfreese (in 24/3, 100% pass) | 20/25 by @peterfreese (in 24/3) | ||
3 | Copy Floor | 6/6 by @atesgoral (in 6/6, 100% pass) | 6/6 by @atesgoral (in 6/6, not input-specific) | ||
4 | Scrambler Handler | 18/21 by @fd1e4020 (in 18/7) | 18/21 by @fd1e4020 (in 18/7) | ||
5 | Coffee Time | ||||
6 | Rainy Summer | 20/24 by @landfillbaby (in 20/6, 52% pass) | 20/24 by @viamodulo (in 22/6, not input-specific) | ||
7 | Zero Exterminator | 12/23 by @viamodulo (in 13/4, 1% pass) | 19/23 by @viamodulo (in 9/4, not input-specific) | ||
8 | Tripler Room | 17/24 by @meh2481 (in 17/6, 26% pass) | 20/24 by @viamodulo (in 22/6, not input-specific) | ||
9 | Zero Preservation Initiative | 14/25 by @caitsith2 (in 17/5, 1% pass) | 20/25 by @viamodulo (in 13/5, not input-specific) | ||
10 | Octoplier Suite | 26/36 by @meh2481 (in 26/9, 23% pass) | 32/36 by @viamodulo (in 34/9, not input-specific) | ||
11 | Sub Hallway | 34/40 by @jdashton (in 34/10, 3% pass) | 36/40 by @viamodulo (in 38/10, not input-specific) | ||
12 | Tetracontiplier | 41/56 by @meh2481 (in 41/14, 33% pass) | 52/56 by @viamodulo (in 54/14, not input-specific) | ||
13 | Equalization Room | 15/27 by @jdashton (in 23/9, 1% pass) | 24/27 by @icez (in 26/9, not input-specific) | ||
14 | Maximization Room | 24/34 by @18111398 (in 45/10, 26% pass) | 28/34 by @icez (in 34/10, not input-specific) | ||
15 | Employee Morale Insertion | ||||
16 | Absolute Positivity | 24/36 by @viamodulo (in 46/8, 7.000000000000001% pass) | 29/36 by @viamodulo (in 21/8, not input-specific) | ||
17 | Exclusive Lounge | 23/28 by @Mygod (in 36/12, 91% pass) | 24/28 by @viamodulo (in 28/12, not input-specific) | ||
18 | Sabbatical Beach Paradise | ||||
19 | Countdown | 57/82 by @Eirik0 (in 116/10, 2% pass) | 64/82 by @icez (in 69/10, not input-specific) | ||
20 | Multiplication Workshop | 49/109 by @Eirik0 (in 185/15, 5% pass) | 64/109 by @mschordan (in 92/15) | ||
21 | Zero Terminated Sum | 36/72 by @viamodulo (in 36/10, 2% pass) | 56/72 by @AaronKnowles (in 26/10) | ||
22 | Fibonacci Visitor | 42/156 by @viamodulo (in 76/19, 48% pass) | 47/156 by @viamodulo (in 99/19, not input-specific) | ||
23 | The Littlest Number | 29/75 by @Eirik0 (in 58/13, 1% pass) | 63/75 by @icez (in 43/13, not input-specific) | ||
24 | Mod Module | 29/57 by @Mygod (in 35/12, 3% pass) | 44/57 by @icez (in 32/12, not input-specific) | ||
25 | Cumulative Countdown | 37/82 by @18111398 (in 125/12, 3% pass) | 68/82 by @viamodulo (in 50/12, not input-specific) | ||
26 | Small Divide | 33/76 by @18111398 (in 41/15, 6% pass) | 46/76 by @icez (in 99/15, not input-specific) | ||
27 | Midnight Petroleum | ||||
28 | Three Sort | 52/78 by @Mygod (in 96/34) | 68/78 by @viamodulo (in 158/34, not input-specific) | ||
29 | Storage Floor | 20/25 by @AlanDeSmet (in 20/5, 44% pass) | 20/25 by @viamodulo (in 22/5, not input-specific) | ||
30 | String Storage Floor | 85/203 by @18111398 (in 97/7, 100% pass) | 85/203 by @18111398 (in 97/7) | ||
31 | String Reverse | 51/122 by @Eirik0 (in 65/11, 54% pass) | 58/122 by @viamodulo (in 112/11, not input-specific) | ||
32 | Inventory Report | 23/393 by @Eirik0 (in 194/16, 100% pass) | 23/393 by @Eirik0 (in 194/16) | ||
33 | Where's Carol? | ||||
34 | Vowel Incinerator | 95/323 by @Eirik0 (in 99/13, 95% pass) | 101/323 by @viamodulo (in 58/13, not input-specific) | ||
35 | Duplicate Removal | 71/167 by @viamodulo (in 75/17, 100% pass) | 71/167 by @viamodulo (in 75/17, not input-specific) | ||
36 | Alphabetizer | 32/109 by @Mygod (in 112/39, 23% pass) | 55/109 by @icez (in 63/39, not input-specific) | ||
37 | Scavenger Chain | 20/63 by @WolfWings (in 32/8, 100% pass) | 20/63 by @WolfWings (in 32/8) | ||
38 | Digit Exploder | 100/165 by @viamodulo (in 178/30, 100% pass) | 100/165 by @viamodulo (in 178/30, not input-specific) | ||
39 | Re-Coordinator | 40/76 by @viamodulo (in 89/14, 100% pass) | 40/76 by @viamodulo (in 89/14, not input-specific) | ||
40 | Prime Factory | 51/399 by @18111398 (in 137/28, 36% pass) | 142/399 by @viamodulo (in 115/28, not input-specific) | ||
41 | Sorting Floor | 258/714 by @azimux (in 220/34) | 446/714 by @viamodulo (in 196/34, not input-specific) | ||
42 | End Program. Congratulations. |
The following levels do not have any submitted solution that meets both size and speed challenges:
Please fork and issue a pull request. Add yourself to contributors.json if this is your first contribution.
You can fetch an index of all solutions from:
https://atesgoral.github.io/hrm-solutions/data/index.json
Or, if you want to fetch the index client-side, you can use JSONP with the callback function hard-coded as "callback":
https://atesgoral.github.io/hrm-solutions/data/index.js
This index only has metadata of solutions and not the actual sources. To fetch the metadata and source of a particular solution, use the level number and hash you obtain from the solution index. For example:
https://atesgoral.github.io/hrm-solutions/data/1/fc41e23f26bc4b2c9008818a2af1578a.json
Or similarly, for JSONP:
https://atesgoral.github.io/hrm-solutions/data/1/fc41e23f26bc4b2c9008818a2af1578a.js
The metadata for each solution has the following properties:
Number. The level number.
Number. Program size. This is the number of instructions (excluding comments and labels) the program has.
Number. The average steps the program takes in a successful run (i.e. the outbox is correct). This is average of 100 runs for some inbox examples from the game along with randomly generated inboxes.
Number. The ratio of successful runs. If this is 1, the program is a proper solution that can withstand any randomly generated inbox. If it's a fraction less than 1, it's a specific solution that exploits the fixed set of inputs offered by the game to beat a size/speed record. This ratio cannot be 0 because that essentially means that the solution is just broken and does not even make it into the solution index.
String. Optional. If this solution is tagged as a special type of solution, it might be accompanied by a type specifier. We're still in the process of standardizing these. Currently "specific", "exploit" and "obsolete" make appearances. Again, this is likely due to change.
String. Optional. If this solution is a contribution that is made by a known author, it's the author GitHub username.
String. Only appears in individual solution metadata. This is the source code of the program.
String. The MD5 hash of the source code. While it can be used as a checksum for paranoid situations, it's mainly used as a unique ID for the purposes of providing this data API.