Skip to content

Instantly share code, notes, and snippets.

@lgastako
Created July 25, 2019 20:22
Show Gist options
  • Save lgastako/58d0b4d3cc7858746ef80ffb7731f6bb to your computer and use it in GitHub Desktop.
Save lgastako/58d0b4d3cc7858746ef80ffb7731f6bb to your computer and use it in GitHub Desktop.
3 2 1 4 7
1 2 3 5 7
3 2 1 5 7
3 2 1 4 5 7
1 2 3 5 4 7
3 2 1 5 4 7
4 7 5 3 2 1
3 2 1 4 7 5
1 2 3 5 7 4
3 2 1 5 7 4
5 7 4 1 2 3
4 7 5 1 2 3
1 2 3 6 5 7
2 6 5 4 7
1 2 6 5 4 7
3 6 5 4 7
2 3 6 5 4 7
3 2 6 5 4 7
1 2 3 6 5 4 7
6 5 3 2 1 4 7
5 6 3 2 1 4 7
4 7 5 6 3 2 1
3 2 1 4 7 5 6
5 7 4 1 2 3 6
4 7 5 1 2 3 6
6 5 7 4 1 2 3
1 2 3 6 5 7 4
3 2 1 4 8
1 2 3 5 8
3 2 1 5 8
3 2 1 4 5 8
1 2 3 5 4 8
3 2 1 5 4 8
4 8 5 3 2 1
3 2 1 4 8 5
1 2 3 5 8 4
3 2 1 5 8 4
5 8 4 1 2 3
4 8 5 1 2 3
1 2 3 6 8
4 8 6 3 2 1
3 2 1 4 8 6
1 2 3 6 8 4
6 8 4 1 2 3
1 2 3 5 6 8
3 2 1 5 6 8
1 2 3 6 5 8
6 8 5 3 2 1
5 8 6 3 2 1
1 2 3 5 8 6
3 2 1 5 8 6
1 2 3 6 8 5
6 8 5 1 2 3
1 4 5 6 8
2 4 5 6 8
2 6 5 4 8
1 2 4 5 6 8
2 1 4 5 6 8
1 2 6 5 4 8
3 6 5 4 8
3 2 4 5 6 8
2 3 6 5 4 8
3 2 6 5 4 8
3 2 1 4 5 6 8
5 4 1 2 3 6 8
4 5 1 2 3 6 8
1 2 3 6 5 4 8
6 5 3 2 1 4 8
5 6 3 2 1 4 8
4 8 5 6 3 2 1
4 5 8 6 3 2 1
5 4 8 6 3 2 1
4 8 6 5 3 2 1
6 8 4 5 3 2 1
3 2 1 4 8 5 6
3 2 1 4 5 8 6
1 2 3 5 4 8 6
3 2 1 5 4 8 6
5 8 4 1 2 3 6
4 8 5 1 2 3 6
1 2 3 6 8 4 5
3 2 1 4 8 6 5
6 8 4 1 2 3 5
4 8 6 3 2 1 5
6 8 5 4 1 2 3
6 5 8 4 1 2 3
5 6 8 4 1 2 3
6 8 4 5 1 2 3
4 8 6 5 1 2 3
6 8 5 3 2 1 4
5 8 6 3 2 1 4
1 2 3 6 8 5 4
1 2 3 6 5 8 4
1 2 3 5 6 8 4
3 2 1 5 6 8 4
3 2 1 4 7 8
3 2 1 4 8 7
8 7 4 1 2 3
7 8 4 1 2 3
1 2 3 5 7 8
3 2 1 5 7 8
8 7 5 3 2 1
7 8 5 3 2 1
1 2 3 5 8 7
3 2 1 5 8 7
8 7 5 1 2 3
7 8 5 1 2 3
3 2 1 4 5 7 8
1 2 3 5 4 7 8
3 2 1 5 4 7 8
3 2 1 4 7 5 8
1 2 3 5 7 4 8
3 2 1 5 7 4 8
4 8 7 5 3 2 1
4 7 8 5 3 2 1
8 7 4 5 3 2 1
7 8 4 5 3 2 1
3 2 1 4 8 5 7
3 2 1 4 5 8 7
1 2 3 5 8 4 7
1 2 3 5 4 8 7
3 2 1 5 8 4 7
3 2 1 5 4 8 7
3 2 1 4 8 7 5
3 2 1 4 7 8 5
8 7 4 1 2 3 5
7 8 4 1 2 3 5
8 7 5 4 1 2 3
7 8 5 4 1 2 3
5 8 7 4 1 2 3
5 7 8 4 1 2 3
8 7 4 5 1 2 3
7 8 4 5 1 2 3
4 8 7 5 1 2 3
4 7 8 5 1 2 3
8 7 5 3 2 1 4
7 8 5 3 2 1 4
1 2 3 5 8 7 4
1 2 3 5 7 8 4
3 2 1 5 8 7 4
3 2 1 5 7 8 4
7 8 6 3 2 1
1 2 3 6 8 7
4 7 8 6 3 2 1
1 2 3 6 8 4 7
3 2 1 4 7 8 6
8 7 4 1 2 3 6
7 8 4 1 2 3 6
6 8 7 4 1 2 3
7 8 6 3 2 1 4
1 2 3 6 8 7 4
1 2 3 6 5 7 8
7 8 6 5 3 2 1
6 8 7 5 3 2 1
5 7 8 6 3 2 1
8 7 5 6 3 2 1
7 8 5 6 3 2 1
1 2 3 5 6 8 7
3 2 1 5 6 8 7
1 2 3 6 8 5 7
1 2 3 6 5 8 7
1 2 3 5 7 8 6
3 2 1 5 7 8 6
8 7 5 1 2 3 6
7 8 5 1 2 3 6
7 8 6 5 1 2 3
6 8 7 5 1 2 3
7 8 6 3 2 1 5
1 2 3 6 8 7 5
7 8 6 5 4 1
1 4 5 6 8 7
2 6 5 4 7 8
7 8 6 5 4 2
8 7 4 5 6 2
7 8 4 5 6 2
2 4 5 6 8 7
2 6 5 4 8 7
1 2 6 5 4 7 8
7 8 6 5 4 2 1
8 7 4 5 6 2 1
7 8 4 5 6 2 1
1 2 4 5 6 8 7
2 1 4 5 6 8 7
1 2 6 5 4 8 7
7 8 6 5 4 1 2
3 6 5 4 7 8
8 7 4 5 6 3
7 8 4 5 6 3
3 6 5 4 8 7
2 3 6 5 4 7 8
3 2 6 5 4 7 8
8 7 4 5 6 3 2
7 8 4 5 6 3 2
3 2 4 5 6 8 7
2 3 6 5 4 8 7
3 2 6 5 4 8 7
7 8 6 5 4 2 3
8 7 4 5 6 2 3
7 8 4 5 6 2 3
1 2 3 6 5 4 7 8
6 5 3 2 1 4 7 8
5 6 3 2 1 4 7 8
3 2 1 4 7 5 6 8
5 7 4 1 2 3 6 8
4 7 5 1 2 3 6 8
1 2 3 6 5 7 4 8
4 7 8 6 5 3 2 1
6 8 4 7 5 3 2 1
6 8 7 4 5 3 2 1
4 8 7 5 6 3 2 1
4 7 8 5 6 3 2 1
4 7 5 8 6 3 2 1
8 7 4 5 6 3 2 1
7 8 4 5 6 3 2 1
4 5 7 8 6 3 2 1
5 4 7 8 6 3 2 1
5 7 4 8 6 3 2 1
3 2 1 4 5 6 8 7
5 4 1 2 3 6 8 7
4 5 1 2 3 6 8 7
1 2 3 6 8 4 5 7
3 2 1 4 8 6 5 7
6 8 4 1 2 3 5 7
4 8 6 3 2 1 5 7
6 8 5 3 2 1 4 7
6 5 3 2 1 4 8 7
5 8 6 3 2 1 4 7
5 6 3 2 1 4 8 7
1 2 3 6 8 5 4 7
1 2 3 6 5 8 4 7
1 2 3 6 5 4 8 7
1 2 3 5 6 8 4 7
3 2 1 5 6 8 4 7
3 2 1 4 8 7 5 6
3 2 1 4 7 8 5 6
3 2 1 4 7 5 8 6
3 2 1 4 5 7 8 6
8 7 4 1 2 3 5 6
7 8 4 1 2 3 5 6
8 7 5 4 1 2 3 6
7 8 5 4 1 2 3 6
5 8 7 4 1 2 3 6
5 7 8 4 1 2 3 6
8 7 4 5 1 2 3 6
7 8 4 5 1 2 3 6
4 8 7 5 1 2 3 6
4 7 8 5 1 2 3 6
1 2 3 5 7 4 8 6
1 2 3 5 4 7 8 6
3 2 1 5 7 4 8 6
3 2 1 5 4 7 8 6
7 8 6 5 4 1 2 3
6 8 7 5 4 1 2 3
6 8 5 7 4 1 2 3
6 5 8 7 4 1 2 3
6 5 7 8 4 1 2 3
5 6 8 7 4 1 2 3
6 8 7 4 5 1 2 3
6 8 4 7 5 1 2 3
4 7 8 6 5 1 2 3
7 8 6 3 2 1 4 5
1 2 3 6 8 7 4 5
1 2 3 6 8 4 7 5
3 2 1 4 7 8 6 5
6 8 7 4 1 2 3 5
4 7 8 6 3 2 1 5
8 7 4 1 2 3 6 5
7 8 4 1 2 3 6 5
7 8 6 3 2 1 5 4
1 2 3 6 8 7 5 4
1 2 3 6 8 5 7 4
1 2 3 6 5 8 7 4
1 2 3 6 5 7 8 4
1 2 3 5 6 8 7 4
3 2 1 5 6 8 7 4
7 8 6 5 3 2 1 4
6 8 7 5 3 2 1 4
8 7 5 6 3 2 1 4
7 8 5 6 3 2 1 4
5 7 8 6 3 2 1 4
1 2 3 5 9
3 2 1 5 9
3 2 1 4 5 9
1 2 3 6 9
1 2 3 5 6 9
3 2 1 5 6 9
1 2 3 6 5 9
6 9 5 3 2 1
5 9 6 3 2 1
1 2 3 5 9 6
3 2 1 5 9 6
1 2 3 6 9 5
6 9 5 1 2 3
1 4 5 6 9
2 4 5 6 9
1 2 4 5 6 9
2 1 4 5 6 9
3 2 4 5 6 9
3 2 1 4 5 6 9
5 4 1 2 3 6 9
4 5 1 2 3 6 9
4 5 9 6 3 2 1
3 2 1 4 5 9 6
6 9 5 4 1 2 3
6 9 5 3 2 1 4
5 9 6 3 2 1 4
1 2 3 6 9 5 4
3 2 1 4 7 5 9
1 2 3 6 9 5 7
3 2 1 4 7 5 6 9
5 7 4 1 2 3 6 9
4 7 5 1 2 3 6 9
4 7 5 9 6 3 2 1
6 9 5 3 2 1 4 7
5 9 6 3 2 1 4 7
1 2 3 6 9 5 4 7
3 2 1 4 7 5 9 6
6 9 5 7 4 1 2 3
1 2 3 6 9 5 7 4
3 2 1 4 8 9
9 8 4 1 2 3
1 2 3 5 8 9
3 2 1 5 8 9
9 8 5 3 2 1
8 9 5 3 2 1
1 2 3 5 9 8
3 2 1 5 9 8
9 8 5 1 2 3
8 9 5 1 2 3
3 2 1 4 5 8 9
1 2 3 5 4 8 9
3 2 1 5 4 8 9
3 2 1 4 8 5 9
4 8 9 5 3 2 1
9 8 4 5 3 2 1
3 2 1 4 5 9 8
3 2 1 4 8 9 5
9 8 4 1 2 3 5
9 8 5 4 1 2 3
8 9 5 4 1 2 3
5 9 8 4 1 2 3
9 8 4 5 1 2 3
4 8 9 5 1 2 3
9 8 5 3 2 1 4
8 9 5 3 2 1 4
1 2 3 5 9 8 4
3 2 1 5 9 8 4
1 2 3 6 8 9
9 8 6 3 2 1
8 9 6 3 2 1
1 2 3 6 9 8
3 2 1 4 8 6 9
4 8 9 6 3 2 1
3 2 1 4 8 9 6
9 8 4 1 2 3 6
6 9 8 4 1 2 3
9 8 6 3 2 1 4
8 9 6 3 2 1 4
1 2 3 6 9 8 4
1 2 3 5 6 8 9
3 2 1 5 6 8 9
1 2 3 6 5 8 9
1 2 3 5 8 6 9
3 2 1 5 8 6 9
1 2 3 6 8 5 9
9 8 6 5 3 2 1
8 9 6 5 3 2 1
6 9 8 5 3 2 1
6 8 9 5 3 2 1
5 9 8 6 3 2 1
5 8 9 6 3 2 1
9 8 5 6 3 2 1
8 9 5 6 3 2 1
1 2 3 5 9 6 8
1 2 3 5 6 9 8
3 2 1 5 9 6 8
3 2 1 5 6 9 8
1 2 3 6 9 5 8
1 2 3 6 5 9 8
1 2 3 5 9 8 6
1 2 3 5 8 9 6
3 2 1 5 9 8 6
3 2 1 5 8 9 6
9 8 5 1 2 3 6
8 9 5 1 2 3 6
9 8 6 5 1 2 3
8 9 6 5 1 2 3
6 9 8 5 1 2 3
6 8 9 5 1 2 3
9 8 6 3 2 1 5
8 9 6 3 2 1 5
1 2 3 6 9 8 5
1 2 3 6 8 9 5
1 4 5 6 8 9
9 8 6 5 4 1
8 9 6 5 4 1
1 4 5 6 9 8
2 4 5 6 8 9
2 6 5 4 8 9
9 8 6 5 4 2
8 9 6 5 4 2
9 8 4 5 6 2
2 4 5 6 9 8
1 2 4 5 6 8 9
2 1 4 5 6 8 9
1 2 6 5 4 8 9
9 8 6 5 4 2 1
8 9 6 5 4 2 1
9 8 4 5 6 2 1
1 2 4 5 6 9 8
2 1 4 5 6 9 8
9 8 6 5 4 1 2
8 9 6 5 4 1 2
3 6 5 4 8 9
9 8 4 5 6 3
3 2 4 5 6 8 9
2 3 6 5 4 8 9
3 2 6 5 4 8 9
9 8 4 5 6 3 2
3 2 4 5 6 9 8
9 8 6 5 4 2 3
8 9 6 5 4 2 3
9 8 4 5 6 2 3
3 2 1 4 5 6 8 9
5 4 1 2 3 6 8 9
4 5 1 2 3 6 8 9
1 2 3 6 5 4 8 9
6 5 3 2 1 4 8 9
5 6 3 2 1 4 8 9
3 2 1 4 8 5 6 9
3 2 1 4 5 8 6 9
1 2 3 5 4 8 6 9
3 2 1 5 4 8 6 9
5 8 4 1 2 3 6 9
4 8 5 1 2 3 6 9
1 2 3 6 8 4 5 9
3 2 1 4 8 6 5 9
6 8 4 1 2 3 5 9
4 8 6 3 2 1 5 9
4 8 9 6 5 3 2 1
4 8 6 9 5 3 2 1
6 9 8 4 5 3 2 1
4 8 9 5 6 3 2 1
4 8 5 9 6 3 2 1
9 8 4 5 6 3 2 1
4 5 9 8 6 3 2 1
4 5 8 9 6 3 2 1
5 4 8 9 6 3 2 1
3 2 1 4 5 9 6 8
3 2 1 4 5 6 9 8
5 4 1 2 3 6 9 8
4 5 1 2 3 6 9 8
6 9 5 3 2 1 4 8
5 9 6 3 2 1 4 8
1 2 3 6 9 5 4 8
3 2 1 4 8 9 5 6
3 2 1 4 8 5 9 6
3 2 1 4 5 9 8 6
3 2 1 4 5 8 9 6
9 8 4 1 2 3 5 6
9 8 5 4 1 2 3 6
8 9 5 4 1 2 3 6
5 9 8 4 1 2 3 6
9 8 4 5 1 2 3 6
4 8 9 5 1 2 3 6
1 2 3 5 4 8 9 6
3 2 1 5 4 8 9 6
9 8 6 5 4 1 2 3
8 9 6 5 4 1 2 3
6 9 8 5 4 1 2 3
6 8 9 5 4 1 2 3
6 9 5 8 4 1 2 3
6 5 9 8 4 1 2 3
5 9 6 8 4 1 2 3
5 6 9 8 4 1 2 3
6 9 8 4 5 1 2 3
4 8 9 6 5 1 2 3
4 8 6 9 5 1 2 3
9 8 6 3 2 1 4 5
8 9 6 3 2 1 4 5
1 2 3 6 9 8 4 5
3 2 1 4 8 9 6 5
3 2 1 4 8 6 9 5
6 9 8 4 1 2 3 5
4 8 9 6 3 2 1 5
9 8 4 1 2 3 6 5
9 8 6 3 2 1 5 4
8 9 6 3 2 1 5 4
1 2 3 6 9 8 5 4
1 2 3 6 8 9 5 4
1 2 3 6 9 5 8 4
1 2 3 6 5 9 8 4
1 2 3 5 9 6 8 4
1 2 3 5 6 9 8 4
3 2 1 5 9 6 8 4
3 2 1 5 6 9 8 4
9 8 6 5 3 2 1 4
8 9 6 5 3 2 1 4
6 9 8 5 3 2 1 4
6 8 9 5 3 2 1 4
9 8 5 6 3 2 1 4
8 9 5 6 3 2 1 4
5 9 8 6 3 2 1 4
5 8 9 6 3 2 1 4
1 4 7 8 9
9 8 7 4 1
2 4 7 8 9
9 8 7 4 2
1 2 4 7 8 9
2 1 4 7 8 9
9 8 7 4 2 1
9 8 7 4 1 2
3 2 4 7 8 9
9 8 7 4 2 3
3 2 1 4 7 8 9
9 8 7 4 1 2 3
1 5 7 8 9
9 8 7 5 1
7 8 9 5 1
1 5 9 8 7
2 5 7 8 9
9 8 7 5 2
7 8 9 5 2
2 5 9 8 7
1 2 5 7 8 9
2 1 5 7 8 9
9 8 7 5 2 1
7 8 9 5 2 1
9 8 7 5 1 2
7 8 9 5 1 2
1 2 5 9 8 7
2 1 5 9 8 7
3 5 7 8 9
9 8 7 5 3
7 8 9 5 3
3 5 9 8 7
2 3 5 7 8 9
3 2 5 7 8 9
9 8 7 5 3 2
7 8 9 5 3 2
9 8 7 5 2 3
7 8 9 5 2 3
2 3 5 9 8 7
3 2 5 9 8 7
1 2 3 5 7 8 9
3 2 1 5 7 8 9
9 8 7 5 3 2 1
7 8 9 5 3 2 1
1 2 3 5 9 8 7
3 2 1 5 9 8 7
9 8 7 5 1 2 3
7 8 9 5 1 2 3
1 4 5 7 8 9
1 5 4 7 8 9
9 8 7 5 4 1
7 8 9 5 4 1
5 9 8 7 4 1
9 8 7 4 5 1
4 7 8 9 5 1
9 8 7 5 1 4
7 8 9 5 1 4
1 5 9 8 7 4
1 4 5 9 8 7
1 4 7 8 9 5
9 8 7 4 1 5
2 4 5 7 8 9
2 5 4 7 8 9
9 8 7 5 4 2
7 8 9 5 4 2
5 9 8 7 4 2
9 8 7 4 5 2
4 7 8 9 5 2
9 8 7 5 2 4
7 8 9 5 2 4
2 5 9 8 7 4
2 4 5 9 8 7
2 4 7 8 9 5
9 8 7 4 2 5
1 2 4 5 7 8 9
2 1 4 5 7 8 9
2 4 1 5 7 8 9
1 4 2 5 7 8 9
1 5 2 4 7 8 9
1 2 5 4 7 8 9
2 5 1 4 7 8 9
2 1 5 4 7 8 9
9 8 7 5 4 2 1
7 8 9 5 4 2 1
5 9 8 7 4 2 1
9 8 7 4 5 2 1
4 7 8 9 5 2 1
9 8 7 5 2 4 1
7 8 9 5 2 4 1
2 5 9 8 7 4 1
2 4 7 8 9 5 1
9 8 7 4 2 5 1
9 8 7 5 1 4 2
9 8 7 5 4 1 2
7 8 9 5 1 4 2
7 8 9 5 4 1 2
1 5 9 8 7 4 2
5 9 8 7 4 1 2
1 4 7 8 9 5 2
4 7 8 9 5 1 2
9 8 7 4 1 5 2
9 8 7 4 5 1 2
1 2 4 5 9 8 7
2 1 4 5 9 8 7
2 4 1 5 9 8 7
1 4 2 5 9 8 7
9 8 7 5 1 2 4
9 8 7 5 2 1 4
7 8 9 5 1 2 4
7 8 9 5 2 1 4
1 2 5 9 8 7 4
2 1 5 9 8 7 4
9 8 7 4 1 2 5
9 8 7 4 2 1 5
1 2 4 7 8 9 5
2 1 4 7 8 9 5
3 5 4 7 8 9
9 8 7 4 5 3
4 7 8 9 5 3
3 5 9 8 7 4
3 5 1 4 7 8 9
3 5 9 8 7 4 1
1 4 7 8 9 5 3
9 8 7 4 1 5 3
3 2 4 5 7 8 9
2 3 5 4 7 8 9
3 5 2 4 7 8 9
3 2 5 4 7 8 9
9 8 7 4 5 3 2
4 7 8 9 5 3 2
3 5 9 8 7 4 2
9 8 7 5 4 2 3
7 8 9 5 4 2 3
5 9 8 7 4 2 3
2 4 7 8 9 5 3
4 7 8 9 5 2 3
9 8 7 4 2 5 3
9 8 7 4 5 2 3
3 2 4 5 9 8 7
9 8 7 5 3 2 4
7 8 9 5 3 2 4
2 3 5 9 8 7 4
3 2 5 9 8 7 4
9 8 7 4 2 3 5
3 2 4 7 8 9 5
3 2 1 4 5 7 8 9
3 2 4 1 5 7 8 9
1 4 2 3 5 7 8 9
1 2 3 5 4 7 8 9
2 3 5 1 4 7 8 9
1 5 3 2 4 7 8 9
3 5 1 2 4 7 8 9
3 5 2 1 4 7 8 9
3 2 5 1 4 7 8 9
3 2 1 5 4 7 8 9
3 2 1 4 7 5 8 9
1 2 3 5 7 4 8 9
3 2 1 5 7 4 8 9
3 2 1 4 8 7 5 9
3 2 1 4 7 8 5 9
8 7 4 1 2 3 5 9
7 8 4 1 2 3 5 9
9 8 4 7 5 3 2 1
9 8 7 4 5 3 2 1
4 7 8 9 5 3 2 1
3 5 9 8 7 4 2 1
9 8 7 5 3 2 4 1
7 8 9 5 3 2 4 1
2 3 5 9 8 7 4 1
3 2 5 9 8 7 4 1
9 8 7 4 2 3 5 1
3 2 4 7 8 9 5 1
3 2 1 4 7 5 9 8
1 4 7 8 9 5 3 2
9 8 7 4 1 5 3 2
3 5 9 8 7 4 1 2
3 2 1 4 8 9 5 7
3 2 1 4 5 9 8 7
3 2 4 1 5 9 8 7
9 8 4 1 2 3 5 7
1 4 2 3 5 9 8 7
9 8 5 3 2 1 4 7
8 9 5 3 2 1 4 7
1 2 3 5 9 8 4 7
3 2 1 5 9 8 4 7
9 8 7 5 1 4 2 3
9 8 7 5 4 1 2 3
7 8 9 5 1 4 2 3
7 8 9 5 4 1 2 3
9 8 5 7 4 1 2 3
8 9 5 7 4 1 2 3
1 5 9 8 7 4 2 3
5 9 8 7 4 1 2 3
9 8 7 4 1 2 5 3
9 8 7 4 2 1 5 3
9 8 7 4 1 5 2 3
9 8 7 4 5 1 2 3
1 2 4 7 8 9 5 3
2 1 4 7 8 9 5 3
9 8 4 7 5 1 2 3
1 4 7 8 9 5 2 3
4 7 8 9 5 1 2 3
3 2 1 4 7 8 9 5
9 8 7 4 1 2 3 5
1 2 3 5 9 8 7 4
3 2 1 5 9 8 7 4
9 8 7 5 3 2 1 4
7 8 9 5 3 2 1 4
7 8 9 6 2
2 6 9 8 7
7 8 9 6 2 1
1 2 6 9 8 7
7 8 9 6 3
3 6 9 8 7
7 8 9 6 3 2
7 8 9 6 2 3
2 3 6 9 8 7
3 2 6 9 8 7
7 8 9 6 3 2 1
1 2 3 6 9 8 7
6 9 8 7 4 1
1 4 7 8 9 6
6 9 8 7 4 2
4 7 8 9 6 2
7 8 9 6 2 4
2 6 9 8 7 4
2 4 7 8 9 6
9 8 7 4 2 6
6 9 8 7 4 2 1
4 7 8 9 6 2 1
7 8 9 6 2 4 1
2 6 9 8 7 4 1
6 9 8 7 4 1 2
1 4 7 8 9 6 2
1 4 2 6 9 8 7
7 8 9 6 2 1 4
1 2 6 9 8 7 4
9 8 7 4 1 2 6
1 2 4 7 8 9 6
2 1 4 7 8 9 6
4 7 8 9 6 3
3 6 9 8 7 4
3 6 9 8 7 4 1
1 4 7 8 9 6 3
3 6 2 4 7 8 9
4 7 8 9 6 3 2
3 6 9 8 7 4 2
6 9 8 7 4 2 3
2 4 7 8 9 6 3
4 7 8 9 6 2 3
9 8 7 4 2 6 3
7 8 9 6 3 2 4
2 3 6 9 8 7 4
3 2 6 9 8 7 4
9 8 7 4 2 3 6
3 2 4 7 8 9 6
3 6 2 1 4 7 8 9
3 2 1 4 7 8 6 9
8 7 4 1 2 3 6 9
7 8 4 1 2 3 6 9
4 7 8 9 6 3 2 1
3 6 9 8 7 4 2 1
7 8 9 6 3 2 4 1
2 3 6 9 8 7 4 1
3 2 6 9 8 7 4 1
1 4 7 8 9 6 3 2
3 6 9 8 7 4 1 2
1 4 2 3 6 9 8 7
9 8 6 3 2 1 4 7
8 9 6 3 2 1 4 7
1 2 3 6 9 8 4 7
6 9 8 7 4 1 2 3
9 8 7 4 1 2 6 3
1 2 4 7 8 9 6 3
2 1 4 7 8 9 6 3
1 4 7 8 9 6 2 3
3 2 1 4 7 8 9 6
9 8 7 4 1 2 3 6
1 2 3 6 9 8 7 4
7 8 9 6 3 2 1 4
7 8 9 6 5 1
6 9 8 7 5 1
1 5 6 9 8 7
1 5 7 8 9 6
2 6 5 7 8 9
7 8 9 6 5 2
6 9 8 7 5 2
9 8 7 5 6 2
5 7 8 9 6 2
7 8 9 5 6 2
7 8 9 6 2 5
2 6 9 8 7 5
2 5 6 9 8 7
2 6 5 9 8 7
2 5 7 8 9 6
9 8 7 5 2 6
7 8 9 5 2 6
1 2 6 5 7 8 9
7 8 9 6 5 2 1
6 9 8 7 5 2 1
9 8 7 5 6 2 1
5 7 8 9 6 2 1
7 8 9 5 6 2 1
7 8 9 6 2 5 1
2 6 9 8 7 5 1
7 8 9 6 5 1 2
6 9 8 7 5 1 2
1 5 7 8 9 6 2
1 2 5 6 9 8 7
2 1 5 6 9 8 7
1 5 2 6 9 8 7
1 2 6 5 9 8 7
7 8 9 6 2 1 5
1 2 6 9 8 7 5
9 8 7 5 1 2 6
7 8 9 5 1 2 6
1 2 5 7 8 9 6
2 1 5 7 8 9 6
3 6 5 7 8 9
7 8 9 6 5 3
6 9 8 7 5 3
9 8 7 5 6 3
5 7 8 9 6 3
7 8 9 5 6 3
7 8 9 6 3 5
3 6 9 8 7 5
3 5 6 9 8 7
3 6 5 9 8 7
3 5 7 8 9 6
9 8 7 5 3 6
7 8 9 5 3 6
7 8 9 6 3 5 1
3 6 9 8 7 5 1
1 5 7 8 9 6 3
1 5 3 6 9 8 7
2 6 3 5 7 8 9
2 3 6 5 7 8 9
3 6 2 5 7 8 9
3 2 6 5 7 8 9
7 8 9 6 5 3 2
6 9 8 7 5 3 2
9 8 7 5 6 3 2
5 7 8 9 6 3 2
7 8 9 5 6 3 2
7 8 9 6 3 5 2
3 6 9 8 7 5 2
3 5 7 8 9 6 2
9 8 7 5 3 6 2
7 8 9 5 3 6 2
7 8 9 6 2 5 3
7 8 9 6 5 2 3
2 6 9 8 7 5 3
6 9 8 7 5 2 3
2 5 7 8 9 6 3
5 7 8 9 6 2 3
9 8 7 5 2 6 3
9 8 7 5 6 2 3
7 8 9 5 2 6 3
7 8 9 5 6 2 3
2 3 5 6 9 8 7
3 2 5 6 9 8 7
3 5 2 6 9 8 7
2 5 3 6 9 8 7
2 3 6 5 9 8 7
3 2 6 5 9 8 7
3 6 2 5 9 8 7
2 6 3 5 9 8 7
7 8 9 6 2 3 5
7 8 9 6 3 2 5
2 3 6 9 8 7 5
3 2 6 9 8 7 5
9 8 7 5 2 3 6
9 8 7 5 3 2 6
7 8 9 5 2 3 6
7 8 9 5 3 2 6
2 3 5 7 8 9 6
3 2 5 7 8 9 6
1 2 6 3 5 7 8 9
1 2 3 6 5 7 8 9
3 6 2 1 5 7 8 9
1 2 3 5 7 8 6 9
3 2 1 5 7 8 6 9
8 7 5 1 2 3 6 9
7 8 5 1 2 3 6 9
7 8 6 3 2 1 5 9
1 2 3 6 8 7 5 9
7 8 9 6 5 3 2 1
7 8 6 9 5 3 2 1
6 9 8 7 5 3 2 1
9 8 7 5 6 3 2 1
8 7 5 9 6 3 2 1
5 7 8 9 6 3 2 1
7 8 9 5 6 3 2 1
7 8 5 9 6 3 2 1
7 8 9 6 3 5 2 1
3 6 9 8 7 5 2 1
3 5 7 8 9 6 2 1
9 8 7 5 3 6 2 1
7 8 9 5 3 6 2 1
7 8 9 6 2 3 5 1
7 8 9 6 3 2 5 1
2 3 6 9 8 7 5 1
3 2 6 9 8 7 5 1
1 2 3 6 9 5 7 8
1 5 7 8 9 6 3 2
7 8 9 6 3 5 1 2
3 6 9 8 7 5 1 2
1 2 3 5 9 6 8 7
1 2 3 5 6 9 8 7
3 2 1 5 9 6 8 7
3 2 1 5 6 9 8 7
3 5 1 2 6 9 8 7
1 2 5 3 6 9 8 7
2 1 5 3 6 9 8 7
1 5 2 3 6 9 8 7
1 5 3 2 6 9 8 7
1 2 6 3 5 9 8 7
9 8 6 3 2 1 5 7
8 9 6 3 2 1 5 7
1 2 3 6 9 8 5 7
1 2 3 6 8 9 5 7
1 2 3 6 9 5 8 7
1 2 3 6 5 9 8 7
3 6 2 1 5 9 8 7
7 8 9 6 2 1 5 3
7 8 9 6 5 1 2 3
7 8 6 9 5 1 2 3
1 2 6 9 8 7 5 3
6 9 8 7 5 1 2 3
9 8 7 5 1 2 6 3
7 8 9 5 1 2 6 3
1 2 5 7 8 9 6 3
2 1 5 7 8 9 6 3
1 5 7 8 9 6 2 3
1 2 3 5 7 8 9 6
3 2 1 5 7 8 9 6
9 8 7 5 1 2 3 6
7 8 9 5 1 2 3 6
1 2 3 6 9 8 7 5
7 8 9 6 3 2 1 5
6 5 1 4 7 8 9
7 8 9 6 5 4 1
6 9 8 7 5 4 1
5 6 9 8 7 4 1
6 5 9 8 7 4 1
4 7 8 9 6 5 1
6 9 8 7 4 5 1
7 8 9 6 5 1 4
6 9 8 7 5 1 4
1 5 6 9 8 7 4
1 4 5 6 9 8 7
1 4 7 8 9 6 5
6 9 8 7 4 1 5
1 4 7 8 9 5 6
9 8 7 4 1 5 6
1 4 5 7 8 9 6
1 5 4 7 8 9 6
2 6 5 4 7 8 9
6 5 2 4 7 8 9
5 6 2 4 7 8 9
7 8 9 6 5 4 2
6 9 8 7 5 4 2
5 6 9 8 7 4 2
6 5 9 8 7 4 2
4 7 8 9 6 5 2
6 9 8 7 4 5 2
4 5 7 8 9 6 2
5 4 7 8 9 6 2
9 8 7 4 5 6 2
4 7 8 9 5 6 2
7 8 9 6 2 5 4
7 8 9 6 5 2 4
2 6 9 8 7 5 4
6 9 8 7 5 2 4
2 5 6 9 8 7 4
2 6 5 9 8 7 4
5 7 8 9 6 2 4
9 8 7 5 6 2 4
7 8 9 5 6 2 4
2 4 5 6 9 8 7
4 5 2 6 9 8 7
5 4 2 6 9 8 7
2 4 7 8 9 6 5
4 7 8 9 6 2 5
9 8 7 4 2 6 5
7 8 9 6 2 4 5
2 6 9 8 7 4 5
6 9 8 7 4 2 5
2 4 7 8 9 5 6
4 7 8 9 5 2 6
9 8 7 4 2 5 6
9 8 7 4 5 2 6
9 8 7 5 4 2 6
7 8 9 5 4 2 6
2 4 5 7 8 9 6
2 5 4 7 8 9 6
5 9 8 7 4 2 6
1 4 2 6 5 7 8 9
1 5 6 2 4 7 8 9
6 5 1 2 4 7 8 9
6 5 2 1 4 7 8 9
5 6 2 1 4 7 8 9
1 2 6 5 4 7 8 9
2 6 5 1 4 7 8 9
7 8 9 6 5 4 2 1
6 9 8 7 5 4 2 1
5 6 9 8 7 4 2 1
6 5 9 8 7 4 2 1
4 7 8 9 6 5 2 1
6 9 8 7 4 5 2 1
4 5 7 8 9 6 2 1
5 4 7 8 9 6 2 1
9 8 7 4 5 6 2 1
4 7 8 9 5 6 2 1
7 8 9 6 2 5 4 1
7 8 9 6 5 2 4 1
2 6 9 8 7 5 4 1
6 9 8 7 5 2 4 1
2 5 6 9 8 7 4 1
2 6 5 9 8 7 4 1
5 7 8 9 6 2 4 1
9 8 7 5 6 2 4 1
7 8 9 5 6 2 4 1
2 4 7 8 9 6 5 1
4 7 8 9 6 2 5 1
9 8 7 4 2 6 5 1
7 8 9 6 2 4 5 1
2 6 9 8 7 4 5 1
6 9 8 7 4 2 5 1
7 8 9 6 5 1 4 2
7 8 9 6 5 4 1 2
6 9 8 7 5 1 4 2
6 9 8 7 5 4 1 2
1 5 6 9 8 7 4 2
5 6 9 8 7 4 1 2
6 5 9 8 7 4 1 2
1 4 7 8 9 6 5 2
4 7 8 9 6 5 1 2
6 9 8 7 4 1 5 2
6 9 8 7 4 5 1 2
1 4 7 8 9 5 6 2
9 8 7 4 1 5 6 2
1 4 5 7 8 9 6 2
1 5 4 7 8 9 6 2
1 2 4 5 6 9 8 7
2 1 4 5 6 9 8 7
2 4 1 5 6 9 8 7
1 4 2 5 6 9 8 7
1 4 5 2 6 9 8 7
4 5 1 2 6 9 8 7
1 5 4 2 6 9 8 7
5 4 1 2 6 9 8 7
1 4 2 6 5 9 8 7
7 8 9 6 2 1 5 4
7 8 9 6 2 5 1 4
7 8 9 6 5 1 2 4
7 8 9 6 5 2 1 4
1 2 6 9 8 7 5 4
2 6 9 8 7 5 1 4
6 9 8 7 5 1 2 4
6 9 8 7 5 2 1 4
1 2 6 5 9 8 7 4
9 8 7 5 6 2 1 4
7 8 9 5 6 2 1 4
1 5 7 8 9 6 2 4
5 7 8 9 6 2 1 4
1 2 5 6 9 8 7 4
2 1 5 6 9 8 7 4
1 5 2 6 9 8 7 4
9 8 7 4 1 2 5 6
9 8 7 4 2 1 5 6
9 8 7 4 1 5 2 6
9 8 7 4 5 1 2 6
1 2 4 7 8 9 5 6
2 1 4 7 8 9 5 6
1 4 7 8 9 5 2 6
4 7 8 9 5 1 2 6
1 2 4 5 7 8 9 6
2 1 4 5 7 8 9 6
2 4 1 5 7 8 9 6
1 4 2 5 7 8 9 6
9 8 7 5 1 4 2 6
9 8 7 5 4 1 2 6
7 8 9 5 1 4 2 6
7 8 9 5 4 1 2 6
1 5 9 8 7 4 2 6
5 9 8 7 4 1 2 6
1 2 5 4 7 8 9 6
2 1 5 4 7 8 9 6
2 5 1 4 7 8 9 6
1 5 2 4 7 8 9 6
9 8 7 4 1 2 6 5
1 2 4 7 8 9 6 5
2 1 4 7 8 9 6 5
1 4 7 8 9 6 2 5
4 7 8 9 6 2 1 5
1 4 2 6 9 8 7 5
7 8 9 6 2 1 4 5
7 8 9 6 2 4 1 5
1 2 6 9 8 7 4 5
2 6 9 8 7 4 1 5
6 9 8 7 4 1 2 5
6 9 8 7 4 2 1 5
3 6 5 4 7 8 9
4 7 8 9 6 5 3
6 9 8 7 4 5 3
4 5 7 8 9 6 3
5 4 7 8 9 6 3
9 8 7 4 5 6 3
4 7 8 9 5 6 3
7 8 9 6 3 5 4
3 6 9 8 7 5 4
3 5 6 9 8 7 4
3 6 5 9 8 7 4
4 5 3 6 9 8 7
4 7 8 9 6 3 5
3 6 9 8 7 4 5
4 7 8 9 5 3 6
9 8 7 4 5 3 6
3 5 4 7 8 9 6
3 6 5 1 4 7 8 9
7 8 9 6 3 5 4 1
3 6 9 8 7 5 4 1
3 5 6 9 8 7 4 1
3 6 5 9 8 7 4 1
4 7 8 9 6 3 5 1
3 6 9 8 7 4 5 1
1 4 7 8 9 6 5 3
6 9 8 7 4 1 5 3
1 4 7 8 9 5 6 3
9 8 7 4 1 5 6 3
1 4 5 7 8 9 6 3
1 5 4 7 8 9 6 3
1 4 5 3 6 9 8 7
7 8 9 6 3 5 1 4
3 6 9 8 7 5 1 4
1 5 3 6 9 8 7 4
9 8 7 4 1 5 3 6
1 4 7 8 9 5 3 6
3 5 1 4 7 8 9 6
1 4 7 8 9 6 3 5
3 6 9 8 7 4 1 5
3 6 2 4 5 7 8 9
6 5 3 2 4 7 8 9
5 6 3 2 4 7 8 9
2 6 3 5 4 7 8 9
2 3 6 5 4 7 8 9
3 6 2 5 4 7 8 9
3 2 6 5 4 7 8 9
3 6 5 2 4 7 8 9
3 5 6 2 4 7 8 9
4 7 8 9 6 5 3 2
6 9 8 7 4 5 3 2
4 5 7 8 9 6 3 2
5 4 7 8 9 6 3 2
9 8 7 4 5 6 3 2
4 7 8 9 5 6 3 2
7 8 9 6 3 5 4 2
3 6 9 8 7 5 4 2
3 5 6 9 8 7 4 2
3 6 5 9 8 7 4 2
4 7 8 9 6 3 5 2
3 6 9 8 7 4 5 2
4 7 8 9 5 3 6 2
9 8 7 4 5 3 6 2
3 5 4 7 8 9 6 2
7 8 9 6 5 4 2 3
6 9 8 7 5 4 2 3
5 6 9 8 7 4 2 3
6 5 9 8 7 4 2 3
2 4 7 8 9 6 5 3
4 7 8 9 6 2 5 3
4 7 8 9 6 5 2 3
9 8 7 4 2 6 5 3
7 8 9 6 2 4 5 3
2 6 9 8 7 4 5 3
6 9 8 7 4 2 5 3
6 9 8 7 4 5 2 3
2 4 7 8 9 5 6 3
4 7 8 9 5 2 6 3
4 7 8 9 5 6 2 3
9 8 7 4 2 5 6 3
9 8 7 4 5 2 6 3
9 8 7 4 5 6 2 3
9 8 7 5 4 2 6 3
7 8 9 5 4 2 6 3
2 4 5 7 8 9 6 3
4 5 7 8 9 6 2 3
2 5 4 7 8 9 6 3
5 4 7 8 9 6 2 3
5 9 8 7 4 2 6 3
3 2 4 5 6 9 8 7
2 4 5 3 6 9 8 7
4 5 2 3 6 9 8 7
4 5 3 2 6 9 8 7
3 5 4 2 6 9 8 7
5 4 2 3 6 9 8 7
3 6 2 4 5 9 8 7
7 8 9 6 2 3 5 4
7 8 9 6 3 2 5 4
7 8 9 6 3 5 2 4
7 8 9 6 5 3 2 4
2 3 6 9 8 7 5 4
3 2 6 9 8 7 5 4
3 6 9 8 7 5 2 4
6 9 8 7 5 3 2 4
2 3 6 5 9 8 7 4
3 2 6 5 9 8 7 4
3 6 2 5 9 8 7 4
2 6 3 5 9 8 7 4
9 8 7 5 3 6 2 4
7 8 9 5 3 6 2 4
9 8 7 5 6 3 2 4
7 8 9 5 6 3 2 4
3 5 7 8 9 6 2 4
5 7 8 9 6 3 2 4
2 3 5 6 9 8 7 4
3 2 5 6 9 8 7 4
3 5 2 6 9 8 7 4
2 5 3 6 9 8 7 4
9 8 7 4 2 3 5 6
9 8 7 4 2 5 3 6
9 8 7 4 5 2 3 6
9 8 7 4 5 3 2 6
3 2 4 7 8 9 5 6
2 4 7 8 9 5 3 6
4 7 8 9 5 2 3 6
4 7 8 9 5 3 2 6
3 2 4 5 7 8 9 6
9 8 7 5 4 2 3 6
7 8 9 5 4 2 3 6
3 5 9 8 7 4 2 6
5 9 8 7 4 2 3 6
2 3 5 4 7 8 9 6
3 2 5 4 7 8 9 6
3 5 2 4 7 8 9 6
9 8 7 4 2 3 6 5
9 8 7 4 2 6 3 5
3 2 4 7 8 9 6 5
2 4 7 8 9 6 3 5
4 7 8 9 6 2 3 5
4 7 8 9 6 3 2 5
7 8 9 6 3 2 4 5
2 3 6 9 8 7 4 5
3 2 6 9 8 7 4 5
3 6 9 8 7 4 2 5
6 9 8 7 4 2 3 5
3 6 2 4 7 8 9 5
module SwipeCodes where
import Data.List
-- [x] Between 5 to 8 "digits"
-- [x] At least 1 horizontal line was filled
-- [x] It spanned all 3 horizontal lines
-- [x] It spanned all 3 vertical
-- [x] It started downward (may have come back up)
-- [x] You can't use the same node twice and
-- [x] you can't go around a node.
type Codes = [Code]
type Code = [Int]
saveCodes :: FilePath -> Codes -> IO ()
saveCodes path = writeFile path . unlines . map render
render :: Code -> String
render = unwords . map show
deltaCodes :: Codes
deltaCodes = filter (not . (`elem` origCodes)) newCodes
newCodes :: Codes
newCodes = subsequences [1..9]
|> concatMap permutations
|> filter length5to8
|> filter hasHorizontalLine
-- |> filter spans3Horizontal -- redundant with hasHorizontalLine
|> filter spans3Vertical
|> filter startsNotUpward
|> filter allConnected
origCodes :: Codes
origCodes = subsequences [1..9]
|> concatMap permutations
|> filter length5to8
|> filter hasHorizontalLine
-- |> filter spans3Horizontal -- redundant with hasHorizontalLine
|> filter spans3Vertical
|> filter startsDownward
|> filter allConnected
length5to8 :: Code -> Bool
length5to8 = (&&)
<$> ((>= 5) . length)
<*> ((<= 8) . length)
hasHorizontalLine :: Code -> Bool
hasHorizontalLine xs = any (`isInfixOf` xs) horizontalLines
where
horizontalLines = horizontalsForward ++ horizontalsBackward
horizontalsForward = [ [1, 2, 3]
, [4, 5, 6]
, [7, 8, 9]
]
horizontalsBackward = map reverse horizontalsForward
spans3Vertical :: Code -> Bool
spans3Vertical xs = True
&& any (`elem` xs) [1, 2, 3]
&& any (`elem` xs) [4, 5, 6]
&& any (`elem` xs) [7, 8, 9]
spans3Horizontal :: Code -> Bool
spans3Horizontal xs = True
&& any (`elem` xs) [1, 4, 7]
&& any (`elem` xs) [2, 5, 8]
&& any (`elem` xs) [3, 6, 9]
startsDownward :: Code -> Bool
startsDownward (x:y:_) = (x,y) `elem`
[ (1, 4), (1, 5), (2, 4), (2, 5), (2, 6), (3, 5), (3, 6)
, (4, 7), (4, 8), (5, 7), (5, 8), (5, 9), (6, 8), (6, 9)
]
startsNotUpward :: Code -> Bool
startsNotUpward (x:y:_) = not $ (x,y) `elem`
[ (4, 1), (4, 2)
, (5, 1), (5, 2), (5, 3)
, (6, 2), (6, 3)
, (7, 4), (7, 5)
, (8, 4), (8, 5), (8, 6)
, (9, 5), (9, 6)
]
allConnected :: Code -> Bool
allConnected xs = and $ zipWith connected xs (tail xs)
where
connected x y = (x, y) `elem` neighbors || (y, x) `elem` neighbors
neighbors :: [(Int, Int)]
neighbors =
[ (1, 2), (1, 4), (1, 5)
, (2, 3), (2, 4), (2, 5), (2, 6)
, (3, 5), (3, 6)
, (4, 5), (4, 7), (4, 8)
, (5, 6), (5, 7), (5, 8), (5, 9)
, (6, 8), (6, 9)
, (7, 8)
, (8, 9)
]
(|>) = flip ($)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment