-
-
Save cyberis/2adff3e8fd68c0a1d193 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/solve | |
*.exe | |
*.ilk | |
*.pdb | |
*.s | |
*.obj |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[submodule "ae"] | |
path = ae | |
url = git://github.com/CyberShadow/ae.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[[{"type":"fixture","x":0,"y":2,"o":{"type":"circle"},"color":0},{"type":"block","x":0,"y":0,"color":0,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":0,"y":2,"o":{"type":"circle"},"color":0},{"type":"block","x":0,"y":0,"color":1,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":0,"y":3,"color":0,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":1},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":2},{"type":"block","x":0,"y":0,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":2,"color":1,"o":{"type":"arrow","direction":"up"}},{"type":"block","x":3,"y":1,"color":2,"o":{"type":"arrow","direction":"left"}}],[{"type":"fixture","x":0,"y":3,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":5,"o":{"type":"circle"},"color":1},{"type":"block","x":2,"y":0,"color":1,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":4,"y":2,"color":0,"o":{"type":"arrow","direction":"left"}}],[{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":2},{"type":"fixture","x":3,"y":3,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":0,"color":0,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":2,"y":1,"color":2,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":1},{"type":"fixture","x":3,"y":3,"o":{"type":"circle"},"color":2},{"type":"block","x":0,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":0,"color":0,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":2,"y":1,"color":2,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":3,"o":{"type":"circle"},"color":0},{"type":"block","x":2,"y":2,"color":2,"o":{"type":"arrow","direction":"up"}},{"type":"block","x":4,"y":1,"color":1,"o":{"type":"arrow","direction":"left"}},{"type":"block","x":3,"y":0,"color":0,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":0,"color":1,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":3},{"type":"fixture","x":3,"y":0,"o":{"type":"circle"},"color":2},{"type":"block","x":0,"y":0,"color":3,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":0,"y":2,"color":2,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":3,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":1,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":3},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":1,"color":3,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":0,"y":2,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":0},{"type":"fixture","x":3,"y":2,"o":{"type":"circle"},"color":1},{"type":"block","x":2,"y":0,"color":0,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":4,"y":2,"color":1,"o":{"type":"arrow","direction":"left"}},{"type":"block","x":2,"y":4,"color":2,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":1},{"type":"fixture","x":3,"y":2,"o":{"type":"circle"},"color":2},{"type":"block","x":0,"y":0,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":0,"color":1,"o":{"type":"arrow","direction":"left"}},{"type":"block","x":2,"y":4,"color":2,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":1,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":3,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":3},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":2},{"type":"block","x":0,"y":2,"color":3,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":3,"color":2,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":1,"y":1,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":4,"o":{"type":"circle"},"color":3},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":1},{"type":"block","x":3,"y":3,"color":3,"o":{"type":"arrow","direction":"left"}},{"type":"block","x":1,"y":1,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":5,"color":1,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":2},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":3},{"type":"block","x":1,"y":0,"color":2,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":0,"y":1,"color":3,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":1,"color":0,"o":{"type":"arrow","direction":"left"}},{"type":"block","x":1,"y":2,"color":1,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":0,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":2,"color":1,"o":{"type":"arrow","direction":"up"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":2,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":1,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":3,"y":1,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":0,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":2},{"type":"fixture","x":3,"y":1,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":0,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":3,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":1,"color":2,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":2},{"type":"fixture","x":3,"y":1,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":0,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":3,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":1,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":2,"y":-1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":3,"o":{"type":"circle"},"color":2},{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":3,"y":3,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":5,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":5,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":3,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":4,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":4,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":3,"color":1,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":0,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":4},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":6},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":7},{"type":"block","x":0,"y":0,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":2,"color":4,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":2,"color":7,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":0,"color":6,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":2,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":3,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":4,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":10},{"type":"fixture","x":2,"y":3,"o":{"type":"circle"},"color":12},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":9},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":11},{"type":"block","x":0,"y":4,"color":9,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":4,"color":10,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":0,"color":11,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":0,"color":12,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":1,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":4,"y":3,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":0},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":1,"color":2,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":4,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":2,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":3,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":3,"o":{"type":"circle"},"color":1},{"type":"fixture","x":3,"y":3,"o":{"type":"circle"},"color":2},{"type":"block","x":1,"y":0,"color":1,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":0,"y":2,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":1,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":1,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":2},{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":3,"y":3,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":5,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":5,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":3,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":4,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":4,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":3,"color":1,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":2},{"type":"fixture","x":0,"y":1,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":3,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":3,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":3,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"block","x":0,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":3,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":3,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":1,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":3,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":3},{"type":"fixture","x":3,"y":2,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":3,"o":{"type":"circle"},"color":0},{"type":"block","x":0,"y":2,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":3,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":3,"y":1,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":0,"color":3,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":4,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":3,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":3,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":3,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":3,"o":{"type":"circle"},"color":1},{"type":"fixture","x":3,"y":3,"o":{"type":"circle"},"color":2},{"type":"block","x":1,"y":0,"color":2,"o":{"type":"arrow","direction":"down"}},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":1,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":4,"y":3,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":1,"color":2,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":4,"y":2,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":3,"y":2,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":3,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":3},{"type":"block","x":2,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":2,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":2,"y":4,"color":3,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":3,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":0,"y":3,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":2,"y":3,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":2,"o":{"type":"circle"},"color":0},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":1},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":2},{"type":"block","x":2,"y":3,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":3,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":0,"color":2,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":1,"y":1,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":2,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":2,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":0,"y":2,"o":{"type":"circle"},"color":1},{"type":"fixture","x":2,"y":2,"o":{"type":"circle"},"color":0},{"type":"fixture","x":4,"y":2,"o":{"type":"circle"},"color":2},{"type":"block","x":2,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":1,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":3,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":2,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":1,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":4,"y":3,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":0,"y":1,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":2,"color":0,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":4,"y":1,"color":2,"o":{"type":"arrow","direction":"down"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"circle"},"color":1},{"type":"fixture","x":1,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":2},{"type":"fixture","x":1,"y":1,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":1,"y":3,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":3,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":4,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"block","x":1,"y":1,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":3,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":3,"y":3,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":0,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":1,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":0,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":2,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":1,"y":2,"o":{"type":"circle"},"color":2},{"type":"fixture","x":2,"y":1,"o":{"type":"circle"},"color":0},{"type":"fixture","x":3,"y":2,"o":{"type":"circle"},"color":1},{"type":"block","x":0,"y":0,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":3,"y":0,"color":1,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":1,"color":0,"o":{"type":"arrow","direction":"right"}}],[{"type":"fixture","x":1,"y":0,"o":{"type":"arrow","direction":"down"},"color":-1},{"type":"fixture","x":0,"y":3,"o":{"type":"arrow","direction":"right"},"color":-1},{"type":"fixture","x":3,"y":4,"o":{"type":"arrow","direction":"up"},"color":-1},{"type":"fixture","x":4,"y":1,"o":{"type":"arrow","direction":"left"},"color":-1},{"type":"fixture","x":2,"y":0,"o":{"type":"circle"},"color":2},{"type":"fixture","x":3,"y":0,"o":{"type":"circle"},"color":0},{"type":"fixture","x":4,"y":0,"o":{"type":"circle"},"color":3},{"type":"block","x":2,"y":4,"color":2,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":0,"y":4,"color":3,"o":{"type":"arrow","direction":"right"}},{"type":"block","x":1,"y":4,"color":0,"o":{"type":"arrow","direction":"right"}}]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Found solution for level 0 in 2 steps: | |
* Click red block to move it down to 0,1 | |
* Click red block to move it down to 0,2 | |
Found solution for level 1 in 2 steps: | |
* Click red block to move it up to 0,2 | |
* Click blue block to move it down to 0,1 | |
Found solution for level 2 in 6 steps: | |
* Click blue block to move it up to 1,1 | |
* Click red block to move it right to 1,0 | |
* Click red block to move it right to 2,0 | |
* Click blue block to move it up to 1,0 | |
* Click indigo block to move it left to 2,1 | |
* Click indigo block to move it left to 1,1 | |
Found solution for level 3 in 9 steps: | |
* Click red block to move it left to 3,2 | |
* Click red block to move it left to 2,2 | |
* Click blue block to move it down to 2,1 | |
* Click blue block to move it down to 2,2 | |
* Click red block to move it left to 1,3 | |
* Click red block to move it left to 0,3 | |
* Click blue block to move it down to 2,3 | |
* Click blue block to move it down to 2,4 | |
* Click blue block to move it down to 2,5 | |
Found solution for level 4 in 5 steps: | |
* Click blue block to move it right to 1,1 | |
* Click red block to move it down to 1,1 | |
* Click blue block to move it right to 2,2 | |
* Click indigo block to move it down to 2,2 | |
* Click blue block to move it right to 3,3 | |
Found solution for level 5 in 5 steps: | |
* Click indigo block to move it down to 2,2 | |
* Click blue block to move it right to 1,1 | |
* Click red block to move it down to 1,1 | |
* Click blue block to move it right to 2,2 | |
* Click indigo block to move it down to 3,3 | |
Found solution for level 6 in 8 steps: | |
* Click indigo block to move it up to 2,1 | |
* Click red block to move it down to 3,1 | |
* Click blue block to move it left to 3,1 | |
* Click red block to move it down to 2,2 | |
* Click blue block to move it left to 2,1 | |
* Click blue block to move it left to 1,1 | |
* Click indigo block to move it up to 0,0 | |
* Click red block to move it down to 2,3 | |
Found solution for level 7 in 6 steps: | |
* Click blue block to move it down to 0,1 | |
* Click blue block to move it down to 0,2 | |
* Click blue block to move it right to 1,2 | |
* Click blue block to move it right to 2,2 | |
* Click blue block to move it up to 2,1 | |
* Click blue block to move it up to 2,0 | |
Found solution for level 8 in 9 steps: | |
* Click indigo block to move it right to 1,2 | |
* Click orange block to move it down to 0,1 | |
* Click orange block to move it down to 0,2 | |
* Click orange block to move it right to 1,2 | |
* Click orange block to move it right to 2,2 | |
* Click orange block to move it up to 2,1 | |
* Click orange block to move it up to 2,0 | |
* Click indigo block to move it up to 3,1 | |
* Click indigo block to move it up to 3,0 | |
Found solution for level 9 in 5 steps: | |
* Click orange block to move it right to 1,1 | |
* Click orange block to move it right to 2,1 | |
* Click blue block to move it left to 2,1 | |
* Click orange block to move it up to 1,0 | |
* Click blue block to move it up to 2,0 | |
Found solution for level 10 in 8 steps: | |
* Click indigo block to move it up to 2,3 | |
* Click red block to move it down to 2,1 | |
* Click red block to move it down to 2,2 | |
* Click red block to move it right to 3,2 | |
* Click indigo block to move it up to 2,2 | |
* Click blue block to move it left to 3,2 | |
* Click blue block to move it left to 2,2 | |
* Click blue block to move it right to 3,2 | |
Found solution for level 11 in 14 steps: | |
* Click indigo block to move it up to 2,3 | |
* Click indigo block to move it up to 2,2 | |
* Click indigo block to move it up to 2,1 | |
* Click indigo block to move it up to 2,0 | |
* Click red block to move it right to 1,0 | |
* Click red block to move it right to 2,0 | |
* Click indigo block to move it down to 3,1 | |
* Click blue block to move it left to 3,0 | |
* Click blue block to move it left to 2,0 | |
* Click indigo block to move it down to 3,2 | |
* Click blue block to move it down to 2,1 | |
* Click blue block to move it down to 2,2 | |
* Click red block to move it down to 1,1 | |
* Click red block to move it down to 1,2 | |
Found solution for level 12 in 9 steps: | |
* Click orange block to move it right to 1,2 | |
* Click orange block to move it right to 2,2 | |
* Click indigo block to move it up to 2,2 | |
* Click orange block to move it right to 3,1 | |
* Click indigo block to move it up to 2,1 | |
* Click orange block to move it left to 2,1 | |
* Click indigo block to move it up to 1,0 | |
* Click orange block to move it left to 1,1 | |
* Click indigo block to move it down to 1,1 | |
Found solution for level 13 in 10 steps: | |
* Click blue block to move it up to 2,4 | |
* Click blue block to move it up to 2,3 | |
* Click orange block to move it left to 2,3 | |
* Click blue block to move it up to 1,2 | |
* Click orange block to move it left to 1,3 | |
* Click indigo block to move it down to 1,2 | |
* Click orange block to move it left to 0,4 | |
* Click blue block to move it up to 1,2 | |
* Click blue block to move it up to 1,1 | |
* Click blue block to move it down to 1,2 | |
Found solution for level 14 in 8 steps: | |
* Click red block to move it left to 1,1 | |
* Click indigo block to move it down to 1,1 | |
* Click orange block to move it right to 1,1 | |
* Click blue block to move it up to 1,2 | |
* Click orange block to move it right to 2,0 | |
* Click blue block to move it up to 1,1 | |
* Click red block to move it left to 0,0 | |
* Click indigo block to move it down to 2,2 | |
Found solution for level 15 in 13 steps: | |
* Click red block to move it down to 0,1 | |
* Click red block to move it right to 1,1 | |
* Click red block to move it right to 2,1 | |
* Click blue block to move it up to 2,1 | |
* Click red block to move it right to 3,0 | |
* Click blue block to move it up to 2,0 | |
* Click red block to move it left to 2,0 | |
* Click red block to move it left to 1,0 | |
* Click blue block to move it down to 0,1 | |
* Click red block to move it left to 0,0 | |
* Click red block to move it down to 0,1 | |
* Click blue block to move it right to 1,2 | |
* Click red block to move it right to 1,1 | |
Found solution for level 16 in 14 steps: | |
* Click red block to move it right to 1,0 | |
* Click red block to move it right to 2,0 | |
* Click red block to move it down to 2,1 | |
* Click red block to move it left to 1,1 | |
* Click blue block to move it left to 1,2 | |
* Click blue block to move it up to 1,1 | |
* Click red block to move it left to 0,0 | |
* Click blue block to move it up to 1,0 | |
* Click red block to move it right to 1,0 | |
* Click red block to move it right to 2,0 | |
* Click red block to move it down to 2,1 | |
* Click red block to move it left to 1,1 | |
* Click red block to move it left to 0,1 | |
* Click blue block to move it down to 3,1 | |
Found solution for level 17 in 19 steps: | |
* Click blue block to move it left to 2,0 | |
* Click blue block to move it left to 1,0 | |
* Click red block to move it down to 0,1 | |
* Click indigo block to move it right to 1,2 | |
* Click indigo block to move it right to 2,2 | |
* Click red block to move it right to 1,1 | |
* Click red block to move it right to 2,1 | |
* Click indigo block to move it up to 2,1 | |
* Click red block to move it right to 3,0 | |
* Click indigo block to move it up to 2,0 | |
* Click red block to move it left to 2,0 | |
* Click blue block to move it down to 0,1 | |
* Click red block to move it left to 1,0 | |
* Click blue block to move it right to 1,1 | |
* Click indigo block to move it down to 0,1 | |
* Click red block to move it left to 0,0 | |
* Click indigo block to move it right to 1,1 | |
* Click red block to move it down to 0,1 | |
* Click red block to move it right to 1,1 | |
Found solution for level 18 in 18 steps: | |
* Click blue block to move it left to 2,0 | |
* Click blue block to move it left to 1,0 | |
* Click indigo block to move it down to 0,1 | |
* Click blue block to move it left to 0,0 | |
* Click red block to move it right to 1,2 | |
* Click blue block to move it down to 0,1 | |
* Click indigo block to move it right to 1,2 | |
* Click indigo block to move it right to 2,2 | |
* Click red block to move it up to 3,1 | |
* Click red block to move it up to 3,0 | |
* Click red block to move it left to 2,0 | |
* Click red block to move it left to 1,0 | |
* Click red block to move it left to 0,0 | |
* Click blue block to move it right to 1,1 | |
* Click red block to move it down to 0,1 | |
* Click red block to move it right to 1,1 | |
* Click blue block to move it right to 3,1 | |
* Click indigo block to move it up to 2,1 | |
Found solution for level 19 in 27 steps: | |
* Click red block to move it down to 0,3 | |
* Click red block to move it down to 0,4 | |
* Click red block to move it down to 0,5 | |
* Click red block to move it right to 1,5 | |
* Click red block to move it right to 2,5 | |
* Click red block to move it right to 3,5 | |
* Click red block to move it up to 3,4 | |
* Click red block to move it up to 3,3 | |
* Click red block to move it left to 2,3 | |
* Click blue block to move it down to 1,4 | |
* Click red block to move it left to 1,3 | |
* Click blue block to move it right to 2,4 | |
* Click blue block to move it up to 2,3 | |
* Click indigo block to move it up to 3,3 | |
* Click red block to move it down to 1,4 | |
* Click indigo block to move it left to 2,3 | |
* Click red block to move it right to 2,4 | |
* Click blue block to move it down to 1,4 | |
* Click indigo block to move it left to 1,3 | |
* Click red block to move it up to 2,3 | |
* Click blue block to move it right to 2,4 | |
* Click blue block to move it up to 2,3 | |
* Click indigo block to move it down to 1,4 | |
* Click indigo block to move it right to 2,4 | |
* Click indigo block to move it up to 2,3 | |
* Click blue block to move it up to 2,1 | |
* Click red block to move it up to 2,-1 | |
Found solution for level 20 in 23 steps: | |
* Click purple block to move it left to 1,0 | |
* Click gray block to move it up to 2,1 | |
* Click gray block to move it up to 2,0 | |
* Click indigo block to move it down to 0,1 | |
* Click gray block to move it left to 1,0 | |
* Click purple block to move it down to 0,1 | |
* Click gray block to move it left to 0,0 | |
* Click indigo block to move it right to 1,2 | |
* Click gray block to move it down to 0,1 | |
* Click gray block to move it down to 0,2 | |
* Click teal block to move it up to 0,3 | |
* Click gray block to move it right to 1,1 | |
* Click teal block to move it up to 0,2 | |
* Click teal block to move it right to 1,2 | |
* Click indigo block to move it up to 2,1 | |
* Click teal block to move it right to 2,2 | |
* Click teal block to move it up to 2,1 | |
* Click indigo block to move it left to 1,0 | |
* Click teal block to move it up to 2,0 | |
* Click teal block to move it left to 1,0 | |
* Click gray block to move it right to 2,1 | |
* Click indigo block to move it down to 0,1 | |
* Click purple block to move it right to 1,2 | |
Found solution for level 21 in 42 steps: | |
* Click green block to move it up to 2,3 | |
* Click red block to move it right to 1,4 | |
* Click red block to move it right to 2,4 | |
* Click red block to move it up to 2,3 | |
* Click red block to move it up to 2,2 | |
* Click orange block to move it left to 1,0 | |
* Click red block to move it up to 2,1 | |
* Click brown block to move it down to 0,1 | |
* Click green block to move it left to 1,0 | |
* Click red block to move it up to 2,0 | |
* Click brown block to move it down to 0,2 | |
* Click brown block to move it up to 0,1 | |
* Click brown block to move it up to 0,0 | |
* Click brown block to move it down to 0,1 | |
* Click red block to move it left to 1,0 | |
* Click brown block to move it down to 0,2 | |
* Click brown block to move it up to 0,1 | |
* Click brown block to move it up to 0,0 | |
* Click brown block to move it down to 0,1 | |
* Click red block to move it left to 0,0 | |
* Click orange block to move it down to 0,-1 | |
* Click orange block to move it down to 0,0 | |
* Click orange block to move it down to 0,1 | |
* Click brown block to move it right to 1,4 | |
* Click orange block to move it down to 0,2 | |
* Click red block to move it right to 1,4 | |
* Click brown block to move it up to 2,3 | |
* Click green block to move it down to 0,4 | |
* Click green block to move it right to 1,4 | |
* Click red block to move it up to 2,3 | |
* Click green block to move it right to 2,4 | |
* Click green block to move it up to 2,3 | |
* Click green block to move it up to 2,2 | |
* Click brown block to move it left to 1,0 | |
* Click brown block to move it left to 0,0 | |
* Click brown block to move it down to 0,1 | |
* Click brown block to move it down to 0,2 | |
* Click orange block to move it down to 0,4 | |
* Click orange block to move it right to 1,4 | |
* Click orange block to move it right to 2,4 | |
* Click orange block to move it up to 2,3 | |
* Click brown block to move it up to 0,1 | |
Found solution for level 22 in 15 steps: | |
* Click indigo block to move it down to 4,2 | |
* Click indigo block to move it down to 4,3 | |
* Click indigo block to move it left to 3,3 | |
* Click indigo block to move it left to 2,3 | |
* Click indigo block to move it left to 1,3 | |
* Click blue block to move it down to 1,1 | |
* Click blue block to move it down to 1,2 | |
* Click blue block to move it down to 1,3 | |
* Click blue block to move it down to 1,4 | |
* Click indigo block to move it up to 1,4 | |
* Click indigo block to move it up to 1,3 | |
* Click red block to move it right to 1,2 | |
* Click indigo block to move it up to 1,2 | |
* Click red block to move it right to 2,1 | |
* Click blue block to move it up to 2,1 | |
Found solution for level 23 in 17 steps: | |
* Click red block to move it left to 3,1 | |
* Click red block to move it left to 2,1 | |
* Click red block to move it left to 1,1 | |
* Click blue block to move it down to 1,1 | |
* Click blue block to move it down to 1,2 | |
* Click indigo block to move it right to 1,2 | |
* Click blue block to move it down to 2,3 | |
* Click blue block to move it down to 2,4 | |
* Click blue block to move it up to 2,3 | |
* Click blue block to move it up to 2,2 | |
* Click blue block to move it up to 2,1 | |
* Click blue block to move it up to 2,0 | |
* Click indigo block to move it right to 2,2 | |
* Click blue block to move it down to 2,1 | |
* Click blue block to move it down to 2,2 | |
* Click indigo block to move it right to 3,3 | |
* Click blue block to move it down to 2,3 | |
Found solution for level 24 in 17 steps: | |
* Click blue block to move it down to 1,4 | |
* Click blue block to move it right to 2,4 | |
* Click red block to move it down to 0,3 | |
* Click red block to move it down to 0,4 | |
* Click red block to move it down to 0,5 | |
* Click red block to move it right to 1,5 | |
* Click red block to move it right to 2,5 | |
* Click red block to move it right to 3,5 | |
* Click red block to move it up to 3,4 | |
* Click red block to move it up to 3,3 | |
* Click red block to move it left to 2,3 | |
* Click blue block to move it up to 2,3 | |
* Click blue block to move it up to 2,2 | |
* Click red block to move it left to 1,1 | |
* Click indigo block to move it left to 2,2 | |
* Click blue block to move it up to 1,1 | |
* Click red block to move it left to 0,0 | |
Found solution for level 25 in 23 steps: | |
* Click red block to move it up to 2,2 | |
* Click indigo block to move it right to 1,3 | |
* Click blue block to move it down to 0,2 | |
* Click blue block to move it down to 0,3 | |
* Click blue block to move it right to 1,3 | |
* Click blue block to move it right to 2,3 | |
* Click indigo block to move it up to 3,2 | |
* Click indigo block to move it up to 3,1 | |
* Click indigo block to move it left to 2,1 | |
* Click indigo block to move it left to 1,1 | |
* Click indigo block to move it left to 0,1 | |
* Click indigo block to move it down to 0,2 | |
* Click indigo block to move it down to 0,3 | |
* Click indigo block to move it right to 1,3 | |
* Click indigo block to move it right to 2,3 | |
* Click indigo block to move it up to 2,2 | |
* Click blue block to move it up to 3,2 | |
* Click blue block to move it up to 3,1 | |
* Click blue block to move it left to 2,1 | |
* Click red block to move it up to 1,0 | |
* Click indigo block to move it up to 2,1 | |
* Click blue block to move it left to 1,0 | |
* Click indigo block to move it up to 2,0 | |
Found solution for level 26 in 20 steps: | |
* Click red block to move it up to 2,2 | |
* Click orange block to move it down to 1,1 | |
* Click orange block to move it down to 1,2 | |
* Click blue block to move it right to 1,2 | |
* Click orange block to move it down to 2,3 | |
* Click blue block to move it right to 2,2 | |
* Click orange block to move it up to 2,2 | |
* Click indigo block to move it left to 2,1 | |
* Click red block to move it up to 3,1 | |
* Click red block to move it left to 2,1 | |
* Click orange block to move it up to 2,1 | |
* Click red block to move it left to 1,0 | |
* Click orange block to move it up to 2,0 | |
* Click red block to move it down to 1,1 | |
* Click indigo block to move it left to 0,2 | |
* Click red block to move it down to 1,2 | |
* Click red block to move it down to 1,3 | |
* Click indigo block to move it right to 1,2 | |
* Click indigo block to move it right to 2,2 | |
* Click indigo block to move it right to 3,2 | |
Found solution for level 27 in 22 steps: | |
* Click blue block to move it left to 3,1 | |
* Click blue block to move it left to 2,1 | |
* Click blue block to move it left to 1,1 | |
* Click red block to move it right to 1,2 | |
* Click indigo block to move it down to 1,1 | |
* Click blue block to move it left to 0,2 | |
* Click indigo block to move it down to 1,2 | |
* Click blue block to move it right to 1,2 | |
* Click blue block to move it right to 2,2 | |
* Click indigo block to move it down to 3,3 | |
* Click indigo block to move it down to 3,4 | |
* Click indigo block to move it up to 3,3 | |
* Click blue block to move it right to 3,2 | |
* Click indigo block to move it up to 3,2 | |
* Click blue block to move it right to 4,1 | |
* Click indigo block to move it up to 3,1 | |
* Click indigo block to move it up to 3,0 | |
* Click blue block to move it left to 3,1 | |
* Click indigo block to move it down to 3,1 | |
* Click indigo block to move it down to 3,2 | |
* Click blue block to move it left to 2,3 | |
* Click indigo block to move it down to 3,3 | |
Found solution for level 28 in 17 steps: | |
* Click indigo block to move it down to 4,2 | |
* Click indigo block to move it down to 4,3 | |
* Click blue block to move it down to 1,1 | |
* Click blue block to move it down to 1,2 | |
* Click red block to move it right to 1,2 | |
* Click red block to move it right to 2,2 | |
* Click red block to move it right to 3,2 | |
* Click blue block to move it down to 4,3 | |
* Click blue block to move it left to 3,3 | |
* Click blue block to move it left to 2,3 | |
* Click blue block to move it left to 1,3 | |
* Click indigo block to move it left to 3,4 | |
* Click indigo block to move it left to 2,4 | |
* Click indigo block to move it left to 1,4 | |
* Click indigo block to move it up to 1,3 | |
* Click indigo block to move it up to 1,2 | |
* Click blue block to move it left to 0,1 | |
Found solution for level 29 in 15 steps: | |
* Click indigo block to move it left to 3,2 | |
* Click indigo block to move it left to 2,2 | |
* Click indigo block to move it left to 1,2 | |
* Click orange block to move it up to 2,3 | |
* Click blue block to move it down to 2,1 | |
* Click blue block to move it down to 2,2 | |
* Click red block to move it right to 1,2 | |
* Click orange block to move it up to 2,2 | |
* Click orange block to move it up to 2,1 | |
* Click indigo block to move it down to 2,1 | |
* Click indigo block to move it down to 2,2 | |
* Click red block to move it right to 2,2 | |
* Click orange block to move it up to 2,2 | |
* Click blue block to move it left to 3,2 | |
* Click indigo block to move it down to 2,3 | |
Found solution for level 30 in 28 steps: | |
* Click indigo block to move it down to 0,1 | |
* Click indigo block to move it down to 0,2 | |
* Click red block to move it right to 1,3 | |
* Click indigo block to move it down to 0,3 | |
* Click indigo block to move it right to 1,3 | |
* Click blue block to move it up to 3,2 | |
* Click indigo block to move it right to 2,3 | |
* Click red block to move it up to 3,2 | |
* Click red block to move it up to 3,1 | |
* Click blue block to move it left to 2,0 | |
* Click red block to move it up to 3,0 | |
* Click red block to move it left to 2,0 | |
* Click red block to move it left to 1,0 | |
* Click blue block to move it down to 0,1 | |
* Click blue block to move it down to 0,2 | |
* Click blue block to move it down to 0,3 | |
* Click blue block to move it right to 1,3 | |
* Click blue block to move it right to 2,3 | |
* Click blue block to move it up to 2,2 | |
* Click blue block to move it up to 2,1 | |
* Click blue block to move it up to 2,0 | |
* Click indigo block to move it up to 3,2 | |
* Click indigo block to move it up to 3,1 | |
* Click indigo block to move it up to 3,0 | |
* Click indigo block to move it left to 2,0 | |
* Click red block to move it down to 0,1 | |
* Click indigo block to move it left to 1,0 | |
* Click blue block to move it down to 0,1 | |
Found solution for level 31 in 21 steps: | |
* Click indigo block to move it right to 2,1 | |
* Click blue block to move it down to 2,1 | |
* Click red block to move it left to 2,2 | |
* Click blue block to move it down to 2,2 | |
* Click blue block to move it down to 2,3 | |
* Click red block to move it up to 2,3 | |
* Click indigo block to move it right to 2,2 | |
* Click blue block to move it left to 2,2 | |
* Click red block to move it up to 2,2 | |
* Click blue block to move it left to 1,1 | |
* Click red block to move it up to 2,1 | |
* Click red block to move it up to 2,0 | |
* Click indigo block to move it right to 2,2 | |
* Click indigo block to move it right to 3,2 | |
* Click blue block to move it right to 2,1 | |
* Click red block to move it down to 2,1 | |
* Click blue block to move it right to 3,2 | |
* Click blue block to move it left to 2,2 | |
* Click blue block to move it left to 1,2 | |
* Click blue block to move it left to 0,2 | |
* Click red block to move it down to 2,2 | |
Found solution for level 32 in 31 steps: | |
* Click indigo block to move it down to 4,2 | |
* Click indigo block to move it down to 4,3 | |
* Click indigo block to move it left to 3,3 | |
* Click indigo block to move it left to 2,3 | |
* Click blue block to move it down to 1,1 | |
* Click red block to move it right to 1,2 | |
* Click blue block to move it down to 1,2 | |
* Click indigo block to move it left to 1,3 | |
* Click blue block to move it down to 1,3 | |
* Click red block to move it right to 1,3 | |
* Click red block to move it right to 2,3 | |
* Click red block to move it right to 3,3 | |
* Click blue block to move it left to 3,3 | |
* Click indigo block to move it up to 1,3 | |
* Click indigo block to move it up to 1,2 | |
* Click blue block to move it left to 2,3 | |
* Click indigo block to move it up to 1,1 | |
* Click indigo block to move it up to 1,0 | |
* Click indigo block to move it down to 1,1 | |
* Click indigo block to move it down to 1,2 | |
* Click indigo block to move it down to 1,3 | |
* Click indigo block to move it down to 1,4 | |
* Click red block to move it up to 1,4 | |
* Click blue block to move it left to 1,3 | |
* Click red block to move it up to 1,3 | |
* Click blue block to move it left to 0,2 | |
* Click red block to move it up to 1,2 | |
* Click indigo block to move it up to 0,2 | |
* Click indigo block to move it right to 1,2 | |
* Click red block to move it up to 2,1 | |
* Click red block to move it up to 2,0 | |
Found solution for level 33 in 23 steps: | |
* Click indigo block to move it right to 2,3 | |
* Click blue block to move it down to 1,2 | |
* Click blue block to move it down to 1,3 | |
* Click blue block to move it right to 2,3 | |
* Click red block to move it up to 4,2 | |
* Click blue block to move it right to 3,3 | |
* Click indigo block to move it up to 4,2 | |
* Click red block to move it left to 3,1 | |
* Click red block to move it left to 2,1 | |
* Click red block to move it left to 1,1 | |
* Click red block to move it down to 1,2 | |
* Click red block to move it down to 1,3 | |
* Click red block to move it right to 2,3 | |
* Click red block to move it right to 3,3 | |
* Click blue block to move it up to 4,2 | |
* Click blue block to move it up to 4,1 | |
* Click blue block to move it left to 3,1 | |
* Click red block to move it up to 3,2 | |
* Click red block to move it up to 3,1 | |
* Click blue block to move it left to 2,0 | |
* Click red block to move it up to 3,0 | |
* Click indigo block to move it left to 3,0 | |
* Click indigo block to move it left to 2,0 | |
Found solution for level 34 in 33 steps: | |
* Click blue block to move it left to 2,0 | |
* Click blue block to move it left to 1,0 | |
* Click indigo block to move it down to 0,1 | |
* Click blue block to move it left to 0,0 | |
* Click red block to move it right to 1,2 | |
* Click blue block to move it down to 0,1 | |
* Click indigo block to move it right to 1,2 | |
* Click indigo block to move it right to 2,2 | |
* Click indigo block to move it up to 2,1 | |
* Click indigo block to move it up to 2,0 | |
* Click red block to move it up to 3,1 | |
* Click red block to move it up to 3,0 | |
* Click red block to move it left to 2,0 | |
* Click red block to move it left to 1,0 | |
* Click indigo block to move it down to 0,1 | |
* Click red block to move it left to 0,0 | |
* Click blue block to move it right to 1,2 | |
* Click red block to move it down to 0,1 | |
* Click red block to move it right to 1,1 | |
* Click red block to move it right to 2,1 | |
* Click indigo block to move it right to 1,2 | |
* Click indigo block to move it right to 2,2 | |
* Click indigo block to move it up to 2,1 | |
* Click red block to move it right to 3,0 | |
* Click indigo block to move it up to 2,0 | |
* Click red block to move it left to 2,0 | |
* Click red block to move it left to 1,0 | |
* Click indigo block to move it down to 0,1 | |
* Click red block to move it left to 0,0 | |
* Click red block to move it down to 0,1 | |
* Click red block to move it right to 1,1 | |
* Click red block to move it right to 2,1 | |
* Click indigo block to move it right to 1,2 | |
Found solution for level 35 in 39 steps: | |
* Click orange block to move it right to 1,4 | |
* Click orange block to move it right to 2,4 | |
* Click indigo block to move it up to 4,3 | |
* Click orange block to move it right to 3,4 | |
* Click red block to move it up to 4,3 | |
* Click red block to move it up to 4,2 | |
* Click red block to move it up to 4,1 | |
* Click red block to move it left to 3,1 | |
* Click orange block to move it up to 3,3 | |
* Click orange block to move it up to 3,2 | |
* Click orange block to move it up to 3,1 | |
* Click red block to move it left to 2,0 | |
* Click orange block to move it up to 3,0 | |
* Click indigo block to move it left to 3,0 | |
* Click indigo block to move it left to 2,0 | |
* Click red block to move it down to 0,1 | |
* Click indigo block to move it left to 1,0 | |
* Click orange block to move it down to 0,1 | |
* Click orange block to move it down to 0,2 | |
* Click orange block to move it down to 0,3 | |
* Click orange block to move it right to 1,3 | |
* Click indigo block to move it down to 1,1 | |
* Click indigo block to move it down to 1,2 | |
* Click indigo block to move it down to 1,3 | |
* Click orange block to move it right to 2,4 | |
* Click indigo block to move it down to 1,4 | |
* Click red block to move it right to 1,4 | |
* Click red block to move it right to 2,4 | |
* Click orange block to move it up to 4,3 | |
* Click red block to move it right to 3,4 | |
* Click indigo block to move it up to 4,3 | |
* Click indigo block to move it up to 4,2 | |
* Click indigo block to move it up to 4,1 | |
* Click indigo block to move it left to 3,1 | |
* Click red block to move it up to 3,3 | |
* Click red block to move it up to 3,2 | |
* Click red block to move it up to 3,1 | |
* Click indigo block to move it left to 2,0 | |
* Click red block to move it up to 3,0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import std.algorithm; | |
import std.array; | |
import std.conv; | |
import std.exception; | |
import std.file; | |
import std.range; | |
import std.stdio; | |
import std.string; | |
// https://github.com/CyberShadow/ae | |
import ae.utils.array; | |
import ae.utils.json; | |
struct JsonDetail | |
{ | |
string type; | |
string direction; | |
} | |
struct JsonElement | |
{ | |
string type; | |
int x, y; | |
JsonDetail o; | |
int color = -1; | |
} | |
enum MAX_COLORS = 4; | |
enum MAX_ARROWS = 8; | |
enum MAX_ARR_X = 6; | |
enum MAX_ARR_Y = 6; | |
struct Coord { byte x=-1, y=-1; } | |
struct Arrow { Coord xy; ubyte d; } | |
struct Level | |
{ | |
Coord[MAX_COLORS] circles; | |
Arrow[MAX_COLORS] blocks; | |
ubyte[MAX_COLORS] colorMap; | |
bool[MAX_COLORS] haveCircle; | |
//Arrow[MAX_ARROWS] arrows; | |
byte[MAX_ARR_X][MAX_ARR_Y] arrowMap = (-1).repeat(MAX_ARR_X).array.repeat(MAX_ARR_Y).array; | |
byte[MAX_ARR_X][MAX_ARR_Y] circleMap = (-1).repeat(MAX_ARR_X).array.repeat(MAX_ARR_Y).array; | |
ubyte nColors; | |
ubyte nArrows; | |
byte minX, minY, maxX, maxY; | |
} | |
struct State | |
{ | |
Arrow[MAX_COLORS] blocks; | |
Arrow[MAX_COLORS] oldBlocks; | |
int steps; | |
ubyte block; | |
int opCmp(ref const State s) const | |
{ | |
auto c = memcmp(blocks.bytes, s.blocks.bytes); | |
if (c) return c; | |
return steps-s.steps; | |
} | |
bool opEquals(ref const State s) const | |
{ | |
return blocks.bytes == s.blocks.bytes; | |
} | |
} | |
immutable string[] directionNames = ["right", "up", "left", "down"]; | |
immutable string[] colorNames = ["red", "blue", "indigo", "orange", "teal", "green", "purple", "gray", "yellow", "red", "green", "brown", "orange"]; | |
immutable Coord[4] directions = [Coord(1, 0), Coord(0, -1), Coord(-1, 0), Coord(0, 1)]; | |
void main() | |
{ | |
auto jsonLevels = jsonParse!(JsonElement[][])(readText("levels.json")); | |
//writeln("MAX_COLORS=", jsonLevels.map!(level => level.map!(element => element.color).array.sort.uniq.walkLength).reduce!max); | |
//writeln("MAX_ARROWS=", jsonLevels.map!(level => level.filter!(element => element.type == "fixture" && element.o.type == "arrow").walkLength).reduce!max); | |
Level convertLevel(JsonElement[] level) | |
{ | |
Level result; | |
assert(result.arrowMap[5][5] == -1); | |
ubyte[int] colorDict; | |
ubyte registerColor(int color) | |
{ | |
enforce(color >= 0, "Color expected"); | |
auto p = color in colorDict; | |
if (p) | |
return *p; | |
auto i = colorDict.length.to!ubyte; | |
result.colorMap[i] = color.to!ubyte; | |
return colorDict[color] = i; | |
} | |
foreach (element; level) | |
{ | |
switch (element.type) | |
{ | |
case "fixture": | |
switch (element.o.type) | |
{ | |
case "circle": | |
{ | |
auto c = registerColor(element.color); | |
result.circles[c] = Coord(element.x.to!byte, element.y.to!byte); | |
result.haveCircle[c] = true; | |
//result.circleMap[element.y][element.x] = c; | |
break; | |
} | |
case "arrow": | |
{ | |
assert(element.x >= 0 && element.x < MAX_ARR_X, element.x.text); | |
assert(element.y >= 0 && element.y < MAX_ARR_Y, element.y.text); | |
auto d = directionNames.countUntil(element.o.direction).to!byte; | |
enforce(d >= 0, "Bad direction: " ~ element.o.direction); | |
//result.arrows[result.nArrows++] = Arrow(Coord(element.x.to!byte, element.y.to!byte), d); | |
result.arrowMap[element.y][element.x] = d; | |
break; | |
} | |
default: | |
enforce(false, "Unknown detail type " ~ element.o.type); | |
} | |
break; | |
case "block": | |
enforce(element.o.type == "arrow", "Arrow detail for bloc expected"); | |
result.blocks[registerColor(element.color)] = Arrow(Coord(element.x.to!byte, element.y.to!byte), directionNames.countUntil(element.o.direction).to!ubyte); | |
break; | |
default: | |
enforce(false, "Unknown element type " ~ element.type); | |
} | |
} | |
result.nColors = colorDict.length.to!ubyte; | |
result.minX = (level.map!(element => element.x).reduce!min-result.nColors).to!byte; | |
result.minY = (level.map!(element => element.y).reduce!min-result.nColors).to!byte; | |
result.maxX = (level.map!(element => element.x).reduce!max+result.nColors).to!byte; | |
result.maxY = (level.map!(element => element.y).reduce!max+result.nColors).to!byte; | |
// Align blocks that start on their arrows | |
foreach (ref b; result.blocks[0..result.nColors]) | |
{ | |
auto d = result.arrowMap[b.xy.y][b.xy.x]; | |
if (d >= 0) | |
b.d = d; | |
} | |
return result; | |
} | |
auto levels = jsonLevels.map!convertLevel.array(); | |
auto currentStates = appender!(State[]); currentStates.reserve(5_000_000); | |
auto prevStates = appender!(State[]); currentStates.reserve(40_000_000); | |
auto nextStates = appender!(State[]); currentStates.reserve(5_000_000); | |
foreach (i, ref level; levels) | |
{ | |
stderr.writefln("Level %d", i); | |
void trace(ref State state) | |
{ | |
string[] instructions; | |
while (state.steps >= 0) | |
{ | |
instructions ~= "Click %s block to move it %s to %d,%d".format( | |
//state.block, | |
colorNames[level.colorMap[state.block]], | |
directionNames[state.oldBlocks[state.block].d], | |
state.blocks[state.block].xy.x, | |
state.blocks[state.block].xy.y, | |
); | |
state.blocks = state.oldBlocks; | |
auto i = prevStates.data.countUntil(state); | |
if (i >= 0) | |
state = prevStates.data[i]; | |
else | |
{ | |
instructions ~= "... I forgot the rest ..."; | |
//assert(false); | |
break; | |
} | |
} | |
foreach_reverse (i, line; instructions) | |
writeln(" * ", line); | |
} | |
prevStates.clear(); | |
currentStates.clear(); | |
nextStates.clear(); | |
nextStates.put(State(level.blocks, level.blocks, -1)); | |
int step = 0; | |
searchLoop: | |
while (true) | |
{ | |
prevStates.put(currentStates.data); | |
prevStates.data.sort!("a<b", SwapStrategy.stable)(); | |
auto prevStatesArr = prevStates.data; | |
prevStates.clear(); | |
prevStates.put(prevStatesArr.uniq); | |
enforce(nextStates.data.length, "Exhausted search for level %d".format(i)); | |
currentStates.clear(); | |
currentStates.put(nextStates.data.sort!("a<b", SwapStrategy.stable).uniq.setDifference!((a, b) => a.blocks.bytes < b.blocks.bytes)(prevStates.data)); | |
nextStates.clear(); | |
auto states = currentStates.data; | |
stderr.writefln("Step %d - %d new, %d visited", step, states.length, prevStates.data.length); | |
foreach (ref state; states) | |
{ | |
//writeln(state.blocks[0..level.nColors]); | |
//bool solved = level.nColors.iota.map!(c => state.blocks[c].xy == level.circles[c]).all(); | |
bool solved = level.nColors.iota.map!(c => !level.haveCircle[c] || state.blocks[c].xy == level.circles[c]).reduce!((a, b) => a&&b)(); | |
// bool solved = true; | |
// foreach (ref b; state.blocks[0..level.nColors]) | |
// if (level.b.) | |
// bool solved = level.nColors.iota.map!(c => state.blocks[c].xy == level.circles[c]).reduce!((a, b) => a&&b)(); | |
if (solved) | |
{ | |
writefln("Found solution for level %d in %d steps:", i, step); | |
trace(state); | |
break searchLoop; | |
} | |
foreach (ubyte c; 0..level.nColors) | |
{ | |
auto nextState = state; | |
auto b = &nextState.blocks[c]; | |
auto d = directions[b.d]; | |
{ | |
static Arrow[] blocks; | |
blocks = nextState.blocks[0..level.nColors]; | |
static Coord sd; | |
sd = d; | |
static Level* slevel; | |
slevel = &level; | |
static bool push(Arrow* pb) | |
{ | |
auto nxy = Coord(cast(byte)(pb.xy.x + sd.x), cast(byte)(pb.xy.y + sd.y)); | |
if (nxy.x < slevel.minX || nxy.x > slevel.maxX | |
|| nxy.y < slevel.minY || nxy.y > slevel.maxY) | |
return false; | |
foreach (ref nb; blocks) | |
if (nb.xy == nxy) | |
{ | |
if (!push(&nb)) | |
return false; | |
break; | |
} | |
pb.xy = nxy; | |
if (nxy.x>=0 && nxy.x<MAX_ARR_X | |
&& nxy.y>=0 && nxy.y<MAX_ARR_Y) | |
{ | |
auto d = slevel.arrowMap[nxy.y][nxy.x]; | |
if (d >= 0) | |
pb.d = d; | |
} | |
return true; | |
} | |
if (!push(b)) | |
continue; | |
} | |
//writeln(" -> ", nextState.blocks[0..level.nColors]); | |
nextState.block = c; | |
nextState.steps = step; | |
nextState.oldBlocks = state.blocks; | |
nextStates.put(nextState); | |
} | |
} | |
step++; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment