diff --git a/__main__.py b/__main__.py index c55e969..9f1b878 100644 --- a/__main__.py +++ b/__main__.py @@ -20,10 +20,10 @@ from scorer import ( import heapq from typing import List, Any, Generator, Dict -SOLUTIONS_TO_EVAL = 1000 +SOLUTIONS_TO_EVAL = 100 SOLUTIONS_TO_SHOW = 3 -PRUNE = 11 +PRUNE = 9 SOLVE = 7 diff --git a/moves.yaml b/moves.yaml index 8962b2b..e276706 100644 --- a/moves.yaml +++ b/moves.yaml @@ -65,7 +65,7 @@ finger_tricks: grip_post: index: B grip_pre_blacklist: {} - score: 5 + score: 1001 - name: "U flick" move: "U" grip_pre: @@ -74,7 +74,7 @@ finger_tricks: # TODO: rethink this parameter index: LB grip_pre_blacklist: {} - score: 4 + score: 1001 - name: "U' push" move: "U'" grip_pre: @@ -82,7 +82,7 @@ finger_tricks: grip_post: index: F grip_pre_blacklist: {} - score: 5 + score: 1000 - name: "U' flick" move: "U'" grip_pre: @@ -90,7 +90,7 @@ finger_tricks: grip_post: index: LF grip_pre_blacklist: {} - score: 3 + score: 1000 - name: "U2' feido" move: "U2" grip_pre: @@ -98,7 +98,7 @@ finger_tricks: grip_post: index: F grip_pre_blacklist: {} - score: 5 + score: 1002 - name: "U2 double flick" move: "U2" grip_pre: @@ -106,7 +106,7 @@ finger_tricks: grip_post: index: LF grip_pre_blacklist: {} - score: 6 + score: 1002 - name: "U2' double flick" move: "U2" grip_pre: @@ -114,7 +114,7 @@ finger_tricks: grip_post: index: BL grip_pre_blacklist: {} - score: 9 + score: 1002 - name: "U2 beido" move: "U2" grip_pre: @@ -122,7 +122,7 @@ finger_tricks: grip_post: index: B grip_pre_blacklist: {} - score: 5 + score: 1002 - name: "M' ring flick" move: "M'" grip_pre: @@ -130,7 +130,7 @@ finger_tricks: grip_post: ring: DF grip_pre_blacklist: {} - score: 3 + score: 1000 - name: "M' pinky flick" move: "M'" # I can't do M' after finishing beido @@ -142,7 +142,7 @@ finger_tricks: index: - BL - UF - score: 6 + score: 1000 - name: "M push" move: "M" grip_pre: @@ -150,7 +150,7 @@ finger_tricks: grip_post: pinky: DB grip_pre_blacklist: {} - score: 5 + score: 1001 - name: "M index push" move: "M" grip_pre: @@ -158,7 +158,7 @@ finger_tricks: grip_post: index: UF grip_pre_blacklist: {} - score: 6 + score: 1001 - name: "M2 double flick" move: "M2" grip_pre: @@ -168,4 +168,4 @@ finger_tricks: pinky: F floating ring: DB grip_pre_blacklist: {} - score: 7 + score: 1002 diff --git a/roux_7_movers.txt b/roux_7_movers.txt new file mode 100644 index 0000000..607f7ad --- /dev/null +++ b/roux_7_movers.txt @@ -0,0 +1,149 @@ +U' M U' M' U' M' U' M' U' M2 +M' U' M' U M U2 M U' +U M' U2 M U M' U M U' +M' U' M' U' M U2 M U' +U' M' U2 M U' M' U' M U' +M' U' M' U' M' U2 M U M2 +M' U' M' U2 M' U2 M U M2 +M' U' M U2 M' U2 M' U' M2 +M' U' M' U' M U2 M' U' M2 +M' U' M' U' M' U2 M' U +M' U' M' U2 M U2 M' U M2 +U M U M' U M' U M U' +M' U' M' U2 M' U2 M' U' +U' M U' M' U' M' U' M U +M' U' M' U M' U2 M' U +M' U' M' U M U2 M' U' M2 +M' U' M U' M' U2 M' U' M2 +M' U' M U' M U2 M' U +M' U' M U M' U2 M U +U' M U' M' U' M' U M' U' M2 +M' U' M U' M U2 M U' M2 +M' U' M U' M' U2 M U +U' M' U2 M U' M' U M' U' M2 +M' U' M U M U2 M' U +M' U' M U M' U2 M' U' M2 +M' U M' U2 M' U2 M U' M2 +U M' U M' U' M' U' M' U' +U2 M U' M U M' U2 M' U +U2 M U' M' U2 M' U2 M U' +U2 M U M' U2 M' U2 M U' +U M' U2 M' U M' U M U' M2 +U2 M U' M U' M' U2 M' U +U' M' U2 M' U' M' U' M U' M2 +U2 M U' M U' M U2 M' U' M2 +U2 M U' M U' M' U2 M U M2 +U' M' U2 M' U' M' U M' +U2 M U' M' U2 M U2 M' U' +U' M' U M U M U M' U +U2 M U M' U2 M' U2 M' U' M2 +U M' U' M U' M U' M' U' +U M' U M' U' M' U' M U' M2 +U2 M U M' U M U2 M' U' +U2 M U' M' U' M U2 M U M2 +U2 M U' M' U' M' U2 M U' +U2 M U' M' U M U2 M' U' +U' M' U' M' U M' U M U' M2 +U2 M U' M' U' M U2 M' U' +U M' U' M U' M U M' +U2 M U' M' U M U2 M U' M2 +U2 M U' M' U M' U2 M U +U2 M U' M U M' U2 M U' M2 +M' U2 M U2 M' U' M' M2 +M' U2 M' U2 M' U' M' U2 +U M' U2 M' U2 M' U' M U M2 +U M' U2 M' U2 M' U M U' M2 +M U' M U' M' U' M U' M2 +M' U' M U' M' U M U +M U' M U' M' U M U' M2 +M' U' M U' M' U' M' U' M2 +M' U M U M' U M' U' M2 +M' U M U M' U' M' U2 M2 +M U' M U' M' U M' U' +U M U' M' U2 M' U M U +M' U' M U' M' U' M U +U M U' M U2 M' U M' U +M U M U M' U' M' U2 +M' U' M U' M' U M' U' M2 +M U M U M' U M' U +M U' M U' M' U' M' U +U M U' M' U2 M' U M' U2 M2 +U M U' M' U2 M' U' M' U' M2 +M' U M U M' U M U +U' M U M' U2 M' U M U' +U2 M' U' M' U' M U' M' U M2 +U' M' U' M' U2 M U' M' U M2 +U M' U M' U2 M U M' U M2 +U2 M U' M' U' M U M' U' +U2 M' U' M' U' M U M' U M2 +U2 M U M' U M U' M' +U2 M' U' M' U' M U M U +U' M' U' M U2 M U M' U' +U' M' U' M' U2 M U M U' +U2 M' U M' U M U' M' M2 +U2 M U' M' U' M U M U M2 +U2 M U' M' U' M U' M' U' +U2 M' U M' U M U M U' +U' M' U' M' U2 M U M' U2 M2 +U2 M' U' M' U' M U' M U' +U2 M' U M' U M U' M U +U2 M U M' U M U' M U M2 +U M' U M U2 M U M' U +U2 M U M' U M U M' U' +U' M2 U' M U' M2 U M' U2 +U' M2 U' M U2 M2 U M' U2 +M' U' M' U' M' U M' +U2 M' U2 M' U' M U M U +M' U M U' M U' M' U' +U M' U2 M' U M U M' M2 +U2 M U M' U' M' U' M U +U' M' U M' U M' U' M' U +U' M' U2 M U' M U' M' U' +M' U' M' U' M' U' M' U' +U M' U2 M' U M U' M U' +U2 M' U2 M' U' M U M' M2 +U' M' U' M U M U M' U' +U M U' M' U M' U M U +U2 M' U2 M' U' M U' M' U M2 +M' U2 M U M U M' U +U M' U2 M' U M U' M' M2 +M' U' M' U' M' U' M U' M2 +U M U M U M U M' U' M2 +U2 M U' M U' M U' M' U' M2 +U' M' U M' U M' U M U' M2 +U' M' U M' U2 M' U M' U +U M U M' U2 M U' M' U +M' U' M' U2 M' U M' U +U' M' U M U2 M' U M' U2 M2 +M' U' M' U2 M' U' M' U +U2 M U' M' U2 M U M' U +U2 M U' M' U2 M U M U M2 +M' U' M U2 M' U M' U' M2 +U M U M U2 M U M' U' M2 +U' M' U M' U2 M' U M U M2 +U M U M' U2 M U M U' M2 +M' U' M' U2 M' U M U M2 +U2 M U' M U2 M U M' U M2 +U' M U2 M' U2 M' U' M' U' M2 +U' M' U2 M' U2 M U M U' +U M' U2 M' U2 M U' M' U M2 +U2 M' U M U' M' U' M U' +M' U' M U M' U' M U +M' U M U' M' U M U +U2 M U' M' U M U M U M2 +U2 M U M' U' M U' M U M2 +M' U' M U M' U M' U' M2 +M' U M U' M' U' M' U' M2 +M' U' M U M' U M U +U2 M' U' M U M' U' M' U2 M2 +M U M' U' M U M U M2 +M U' M' U M U' M' +U2 M U M' U' M U' M' +U M' U' M' U M U' M' M2 +U2 M' U M' U' M U' M' U2 M2 +U M' U' M' U M U M +U2 M U' M U M' U M' U +U2 M U M U' M' U' M' U +U' M U M U' M' U' M U M2 +M' U M' U' M U' M U' +U2 diff --git a/roux_trainer.py b/roux_trainer.py new file mode 100644 index 0000000..2955b84 --- /dev/null +++ b/roux_trainer.py @@ -0,0 +1,24 @@ +import json + + +def main(): + with open("./output.json") as f: + data = json.loads(f.read()) + covered_cases = set() + for case, scrambles in data.items(): + if not scrambles: + continue + scramble = scrambles[0] + if scramble["raw_alg"] in covered_cases: + continue + if scramble["stm"] != 7: + continue + if case.startswith("Solved"): + continue + print(scramble["alg"]) + covered_cases.add(scramble["raw_alg"]) + print("U2") + + +if __name__ == "__main__": + main() diff --git a/solver.py b/solver.py index 7f8937f..ab0aba2 100644 --- a/solver.py +++ b/solver.py @@ -56,11 +56,16 @@ def create_eolrb_prune_table(prune_depth: int): generator = lse_brute_force_generator(prune_depth) + pruned = 0 + # TODO: for every solved state (pre auf), we can apply the generator's moves and save to prune table? for alg in generator: cube.reset() cube.alg(" ".join(alg)) prune_table[cube.eolrb_hash()].append(reverse_algorithm(alg)) + pruned += 1 + if pruned % 1000 == 0: + print(pruned) return prune_table diff --git a/weighted_moves.yaml b/weighted_moves.yaml new file mode 100644 index 0000000..8962b2b --- /dev/null +++ b/weighted_moves.yaml @@ -0,0 +1,171 @@ +fingers: + - name: index + default_score: 1 + home_grips: + - BL + - LB + # TODO: change to grip_set + grips: + side: + - B + - BL + - LB + - LF + - FL + - F + top: + - UF + regrips: + - start: UF + end: BL + score: 3 + # TODO: this doesn't need to be here + finger: index + - start: UF + end: LB + score: 3 + # TODO: this doesn't need to be here + finger: index + - name: ring + default_score: 1 + home_grips: + - B + - DB + grips: + slice: + - B + - DB + - DF + - F + regrips: [] + - name: pinky + default_score: 1 + home_grips: + - DB + - DF + grips: + slice: + - B + - DB + - DF + - F + - F floating + regrips: + - start: F floating + end: F + score: 2 + # F floating is hard + # TODO: this doesn't need to be here + finger: pinky +finger_tricks: + - name: "U push" + move: "U" + grip_pre: + index: LB + grip_post: + index: B + grip_pre_blacklist: {} + score: 5 + - name: "U flick" + move: "U" + grip_pre: + index: F + grip_post: + # TODO: rethink this parameter + index: LB + grip_pre_blacklist: {} + score: 4 + - name: "U' push" + move: "U'" + grip_pre: + index: LF + grip_post: + index: F + grip_pre_blacklist: {} + score: 5 + - name: "U' flick" + move: "U'" + grip_pre: + index: BL + grip_post: + index: LF + grip_pre_blacklist: {} + score: 3 + - name: "U2' feido" + move: "U2" + grip_pre: + index: BL + grip_post: + index: F + grip_pre_blacklist: {} + score: 5 + - name: "U2 double flick" + move: "U2" + grip_pre: + index: BL + grip_post: + index: LF + grip_pre_blacklist: {} + score: 6 + - name: "U2' double flick" + move: "U2" + grip_pre: + index: F + grip_post: + index: BL + grip_pre_blacklist: {} + score: 9 + - name: "U2 beido" + move: "U2" + grip_pre: + index: F + grip_post: + index: B + grip_pre_blacklist: {} + score: 5 + - name: "M' ring flick" + move: "M'" + grip_pre: + ring: B + grip_post: + ring: DF + grip_pre_blacklist: {} + score: 3 + - name: "M' pinky flick" + move: "M'" + # I can't do M' after finishing beido + grip_pre: + pinky: B + grip_post: + pinky: F floating + grip_pre_blacklist: + index: + - BL + - UF + score: 6 + - name: "M push" + move: "M" + grip_pre: + pinky: F + grip_post: + pinky: DB + grip_pre_blacklist: {} + score: 5 + - name: "M index push" + move: "M" + grip_pre: + index: B + grip_post: + index: UF + grip_pre_blacklist: {} + score: 6 + - name: "M2 double flick" + move: "M2" + grip_pre: + pinky: B + ring: B + grip_post: + pinky: F floating + ring: DB + grip_pre_blacklist: {} + score: 7