Support imported generated training runtime surfaces
This commit is contained in:
parent
24736650ae
commit
afaffa903a
6 changed files with 6023 additions and 26 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,10 @@
|
|||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"4c","mode_id":"lse-4c-trainer","mode_name":"LSE 4c trainer","runtime_mode":"4c","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Center alignment","options":"lseMCSelector"},{"label":"EO pair","options":"lseBarSelector"},{"label":"Stage","options":"lseStageSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"4c / M2-to-4c cases are generated from LSE masks and center-alignment rules."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"ancillary-runtime-modes","mode_id":"analyzer-tracking-experimental","mode_name":"Analyzer / tracking / experimental shells","runtime_mode":"analyzer | tracking | experimental","generator_type":"runtime mode shell over random-state block trainer","selectors":[{"label":"Underlying block settings","options":"shares FB-style config surfaces"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"The runtime factory routes these modes through the FB state machine rather than a separate finite exercise corpus."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"cmll","mode_id":"cmll-randomized-trainer","mode_name":"CMLL / NMCLL randomized trainer","runtime_mode":"cmll","generator_type":"finite-case catalog plus random-state generator","selectors":[{"label":"Cases","options":"cmllCaseSelector / nmcllSelector"},{"label":"Triggers","options":"triggerSelector"},{"label":"AUF","options":"cmllAufSelector"},{"label":"Hyperorientation","options":"hyperOriSelector"},{"label":"Orientation","options":"orientationSelector"},{"label":"Batch mode","options":"cmllBatchModeSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Finite case tables are flattened separately; live cases are generated by combining trigger, AUF, selected case, post-AUF, and random LSE state."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"eopair","mode_id":"eolr-trainer","mode_name":"EOLR / EOLRb / EOdM trainer","runtime_mode":"eopair","generator_type":"random-state solver-backed trainer","selectors":[{"label":"EO pattern","options":"lseEOSelector"},{"label":"Center strategy","options":"lseEOLRMCSelector"},{"label":"Mode","options":"lseBarbieSelector"},{"label":"Scramble type","options":"lseEOLRScrambleSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Cases are drawn from random LSE states filtered by EO pattern and MC policy."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"fb","mode_id":"fb-analyzer-trainer","mode_name":"FB analyzer / trainer","runtime_mode":"fb","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Depth","options":"fbLevelSelector"},{"label":"Basis","options":"fbBasisSelector"},{"label":"Difficulty","options":"fbPieceSolvedSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Random-state first-block lane reused by analyzer-oriented surfaces."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"fbdr","mode_id":"fbdr-trainer","mode_name":"FB last slot plus DR trainer","runtime_mode":"fbdr","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Depth","options":"fbdrLevelSelector"},{"label":"Basis","options":"fbBasisSelector"},{"label":"Square position","options":"fbdrSelector"},{"label":"Scramble type","options":"fbdrScrambleSelector"},{"label":"Pieces to solve","options":"fbOnlySelector"},{"label":"Last pair pattern","options":"fbPairSolvedSelector"},{"label":"FB edge positions","options":"fbdrPosSelector1 / fbdrPosSelector2"},{"label":"DR positions","options":"fbdrPosSelector3"},{"label":"Difficulty","options":"fbPieceSolvedSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Cases are generated from masked random cube states, not from a finite static row corpus."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"fbss","mode_id":"fbss-trainer","mode_name":"FBLP plus SS trainer","runtime_mode":"fbss","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Depth","options":"fbssLevelSelector"},{"label":"FBLP position","options":"fbssLpSelector"},{"label":"SS position","options":"fbssSsSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Random-state compound blockbuilding lane."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"fs","mode_id":"fs-trainer","mode_name":"FS/FB/SS trainer","runtime_mode":"fs","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Depth","options":"fsLevelSelector"},{"label":"Square position","options":"fsSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Front/back first-square cases are generated from state masks and solver constraints."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"fsdr","mode_id":"fsdr-trainer","mode_name":"FS plus DR trainer","runtime_mode":"fsdr","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Depth","options":"fsLevelSelector"},{"label":"Square position","options":"fsSelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Random-state FS+DR training lane."}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-generative","family":"roux-generative","subset":"ss","mode_id":"ss-trainer","mode_name":"Second square trainer","runtime_mode":"ss","generator_type":"random-state solver-backed trainer","selectors":[{"label":"Depth","options":"ssLevelSelector"},{"label":"Square position","options":"ssSelector"},{"label":"DR orientation","options":"ssEOSelector"},{"label":"DR position","options":"ssPosSelector"},{"label":"Pieces to solve","options":"ssPairOnlySelector"},{"label":"Solution cap","options":"solutionNumSelector"},{"label":"Orientation","options":"orientationSelector"}],"origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\README.md","C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\Config.tsx"],"notes":"Random-state SS cases filtered by DR position and orientation masks."}
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"as_back_slash","case_name":"as_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F' r U r' U2' r' F2 r","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"as_columns","case_name":"as_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' F R F' U r' D' r U' r' D r","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"as_forward_slash","case_name":"as_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U R U' L U R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"as_left_bar","case_name":"as_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U2' R' F R' F' R U' R U' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"as_right_bar","case_name":"as_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R' U' R U' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"as_x_checkerboard","case_name":"as_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2' R' U2' R' F R F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"h_column","case_name":"h_column","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R2' F R F' U2 R' F R F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"h_columns","case_name":"h_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U R U' R' U R U2 R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"h_row","case_name":"h_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U' r2' D' r U' r' D r2 U r'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"h_rows","case_name":"h_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' R U R' U' F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"l_back_commutator","case_name":"l_back_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U2 R' D' R U2 R' D R2","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"l_diag","case_name":"l_diag","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R' U' R U R' F' R U R' U' R' F R2","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"l_front_commutator","case_name":"l_front_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R D R' U2 R D' R2'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"l_inverse","case_name":"l_inverse","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U R U' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"l_mirror","case_name":"l_mirror","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"l_pure","case_name":"l_pure","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R U R' U R U' R' U R U' R' U R U2' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"o_adjacent_swap","case_name":"o_adjacent_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' F' R U R' U' R' F R2 U' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"o_diagonal_swap","case_name":"o_diagonal_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F' R U R' U' R' F R F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"pi_back_slash","case_name":"pi_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U F R' F' R U2 R U' R' U R U2' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"pi_columns","case_name":"pi_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' r U' r2' D' r U r' D r2 U r'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"pi_forward_slash","case_name":"pi_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U R' U2' R' F R F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"pi_left_bar","case_name":"pi_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U' R' F R F' R U' R' U2 R","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"pi_right_bar","case_name":"pi_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"pi_x_checkerboard","case_name":"pi_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' F R U F U' R U R' U' F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"s_back_slash","case_name":"s_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' L' U R' U' L","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"s_columns","case_name":"s_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U' R' F R F' R U R' U R U2' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"s_forward_slash","case_name":"s_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U2 R U2' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"s_left_bar","case_name":"s_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U2 R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"s_right_bar","case_name":"s_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U R' U R' F R F' R U2' R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"s_x_checkerboard","case_name":"s_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U2 L U2' L F' L' F","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"solved","case_name":"solved","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"t_back_row","case_name":"t_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' D' r U r' D r U' r U r'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"t_columns","case_name":"t_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r2' D' r U r' D r2 U' r' U' r","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"t_front_row","case_name":"t_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U r U2' R2' F R F' R","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"t_left_bar","case_name":"t_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U' R' F R F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"t_right_bar","case_name":"t_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U L' U' L U L F' L' F","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"t_rows","case_name":"t_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U' R2' U2' R U R' U R","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"u_back_row","case_name":"u_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R U R' U' F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"u_back_slash","case_name":"u_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2' D' R U2 R' D R U2 R","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"u_forward_slash","case_name":"u_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R2 D R' U2 R D' R' U2 R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"u_front_row","case_name":"u_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R' U2 R2 U R' U R U2 R'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"u_rows","case_name":"u_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R2 D R' U R D' R2' U' F'","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"custom","case_id":"u_x_checkerboard","case_name":"u_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r U' r' U r' D' r U' r' D r","notes":"custom trainer variant"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"as_back_slash","case_name":"as_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F' r U r' U2' r' F2 r","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"as_columns","case_name":"as_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2 D R' U R D' R' U R' U' R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"as_forward_slash","case_name":"as_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U R U' L U R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"as_left_bar","case_name":"as_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U2' R' F R' F' R U' R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"as_right_bar","case_name":"as_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R' U' R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"as_x_checkerboard","case_name":"as_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2' R' U2' R' F R F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"h_column","case_name":"h_column","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R2' F R F' U2 R' F R F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"h_columns","case_name":"h_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U R U' R' U R U2 R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"h_row","case_name":"h_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U' r2' D' r U' r' D r2 U r'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"h_rows","case_name":"h_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' R U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"l_back_commutator","case_name":"l_back_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U2 R' D' R U2 R' D R2","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"l_diag","case_name":"l_diag","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R' U' R U R' F' R U R' U' R' F R2","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"l_front_commutator","case_name":"l_front_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R D R' U2 R D' R2'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"l_inverse","case_name":"l_inverse","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"l_mirror","case_name":"l_mirror","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"l_pure","case_name":"l_pure","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R U R' U R U' R' U R U' R' U R U2' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"o_adjacent_swap","case_name":"o_adjacent_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' F' R U R' U' R' F R2 U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"o_diagonal_swap","case_name":"o_diagonal_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F' R U R' U' R' F R F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"pi_back_slash","case_name":"pi_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U F R' F' R U2 R U' R' U R U2' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"pi_columns","case_name":"pi_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' r U' r2' D' r U r' D r2 U r'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"pi_forward_slash","case_name":"pi_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U R' U2' R' F R F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"pi_left_bar","case_name":"pi_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U' R' F R F' R U' R' U2 R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"pi_right_bar","case_name":"pi_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"pi_x_checkerboard","case_name":"pi_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' F R U F U' R U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"s_back_slash","case_name":"s_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' L' U R' U' L","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"s_columns","case_name":"s_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U' R' F R F' R U R' U R U2' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"s_forward_slash","case_name":"s_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U2 R U2' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"s_left_bar","case_name":"s_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U2 R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"s_right_bar","case_name":"s_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U R' U R' F R F' R U2' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"s_x_checkerboard","case_name":"s_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U2 L U2' L F' L' F","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"solved","case_name":"solved","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"t_back_row","case_name":"t_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' D' r U r' D r U' r U r'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"t_columns","case_name":"t_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r2' D' r U r' D r2 U' r' U' r","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"t_front_row","case_name":"t_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U r U2' R2' F R F' R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"t_left_bar","case_name":"t_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U' R' F R F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"t_right_bar","case_name":"t_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U L' U' L U L F' L' F","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"t_rows","case_name":"t_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U' R2' U2' R U R' U R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"u_back_row","case_name":"u_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"u_back_slash","case_name":"u_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2' D' R U2 R' D R U2 R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"u_forward_slash","case_name":"u_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R2 D R' U2 R D' R' U2 R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"u_front_row","case_name":"u_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R' U2 R2 U R' U R U2 R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"u_rows","case_name":"u_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R2 D R' U R D' R2' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"cmll","subset":"default","case_id":"u_x_checkerboard","case_name":"u_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r U' r' U r' D' r U' r' D r","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_1-l_diag","case_name":"nmcll-as_1-l_diag","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R' U' R U R' F' R U R' U' R' F R2","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_1-s_back_slash","case_name":"nmcll-as_1-s_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' L' U R' U' L U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_1-s_left_bar","case_name":"nmcll-as_1-s_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U2 R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_1-t_left_bar","case_name":"nmcll-as_1-t_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U' R' F R F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_2-l_pure","case_name":"nmcll-as_2-l_pure","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R U R' U R U' R' U R U' R' U R U2' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_2-s_right_bar","case_name":"nmcll-as_2-s_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U R' U R' F R F' R U2' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_2-s_x_checkerboard","case_name":"nmcll-as_2-s_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U2 L U2' L F' L' F U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_2-u_back_slash","case_name":"nmcll-as_2-u_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2' D' R U2 R' D R U2 R","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_3-s_columns","case_name":"nmcll-as_3-s_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U' R' F R F' R U R' U R U2' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_3-s_forward_slash","case_name":"nmcll-as_3-s_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U2 R U2' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_3-t_right_bar","case_name":"nmcll-as_3-t_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U L' U' L U L F' L' F","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-as_3-u_forward_slash","case_name":"nmcll-as_3-u_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R2 D R' U2 R D' R' U2 R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_1-h_rows","case_name":"nmcll-h_1-h_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' R U R' U' F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_1-solved","case_name":"nmcll-h_1-solved","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_1-t_front_row","case_name":"nmcll-h_1-t_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U r U2' R2' F R F' R","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_2-h_columns","case_name":"nmcll-h_2-h_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U R U' R' U R U2 R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_2-o_diagonal_swap","case_name":"nmcll-h_2-o_diagonal_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F' R U R' U' R' F R F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_2-u_x_checkerboard","case_name":"nmcll-h_2-u_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r U' r' U r' D' r U' r' D r","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_3-t_back_row","case_name":"nmcll-h_3-t_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' D' r U r' D r U' r U r' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-h_3-u_rows","case_name":"nmcll-h_3-u_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R2 D R' U R D' R2' U' F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_1-as_right_bar","case_name":"nmcll-l_1-as_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R' U' R U' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_1-l_inverse","case_name":"nmcll-l_1-l_inverse","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U R U' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_1-pi_forward_slash","case_name":"nmcll-l_1-pi_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U R' U2' R' F R F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_1-s_right_bar","case_name":"nmcll-l_1-s_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U R' U R' F R F' R U2' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_2-as_left_bar","case_name":"nmcll-l_2-as_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U2' R' F R' F' R U' R U' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_2-l_mirror","case_name":"nmcll-l_2-l_mirror","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_2-pi_back_slash","case_name":"nmcll-l_2-pi_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U F R' F' R U2 R U' R' U R U2' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_2-s_left_bar","case_name":"nmcll-l_2-s_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U2 R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_3-l_back_commutator","case_name":"nmcll-l_3-l_back_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U2 R' D' R U2 R' D R2","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_3-l_front_commutator","case_name":"nmcll-l_3-l_front_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R D R' U2 R D' R2'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_3-pi_back_slash","case_name":"nmcll-l_3-pi_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U F R' F' R U2 R U' R' U R U2' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-l_3-pi_forward_slash","case_name":"nmcll-l_3-pi_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U R' U2' R' F R F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-o_1-h_columns","case_name":"nmcll-o_1-h_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U R U' R' U R U2 R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-o_1-h_rows","case_name":"nmcll-o_1-h_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' R U R' U' F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-o_1-pi_columns","case_name":"nmcll-o_1-pi_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' r U' r2' D' r U r' D r2 U r'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-o_2-pi_x_checkerboard","case_name":"nmcll-o_2-pi_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' F R U F U' R U R' U' F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_1-o_adjacent_swap","case_name":"nmcll-pi_1-o_adjacent_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' F' R U R' U' R' F R2 U' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_1-pi_x_checkerboard","case_name":"nmcll-pi_1-pi_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' F R U F U' R U R' U' F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_1-t_columns","case_name":"nmcll-pi_1-t_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r2' D' r U r' D r2 U' r' U' r U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_1-u_front_row","case_name":"nmcll-pi_1-u_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R' U2 R2 U R' U R U2 R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_2-l_back_commutator","case_name":"nmcll-pi_2-l_back_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U2 R' D' R U2 R' D R2 U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_2-l_front_commutator","case_name":"nmcll-pi_2-l_front_commutator","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R D R' U2 R D' R2' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_2-t_rows","case_name":"nmcll-pi_2-t_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U' R2' U2' R U R' U R U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_2-u_back_row","case_name":"nmcll-pi_2-u_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R U R' U' F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_3-l_inverse","case_name":"nmcll-pi_3-l_inverse","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U R U' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_3-l_mirror","case_name":"nmcll-pi_3-l_mirror","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U' R' U' R U R' F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_3-o_adjacent_swap","case_name":"nmcll-pi_3-o_adjacent_swap","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' F' R U R' U' R' F R2 U' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-pi_3-pi_columns","case_name":"nmcll-pi_3-pi_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' r U' r2' D' r U r' D r2 U r' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_1-as_forward_slash","case_name":"nmcll-s_1-as_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U R U' L U R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_1-as_right_bar","case_name":"nmcll-s_1-as_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R' U' R U' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_1-l_diag","case_name":"nmcll-s_1-l_diag","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R' U' R U R' F' R U R' U' R' F R2 U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_1-t_right_bar","case_name":"nmcll-s_1-t_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U L' U' L U L F' L' F U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_2-as_left_bar","case_name":"nmcll-s_2-as_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2' R U2' R' F R' F' R U' R U' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_2-as_x_checkerboard","case_name":"nmcll-s_2-as_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2' R' U2' R' F R F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_2-l_pure","case_name":"nmcll-s_2-l_pure","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R U R' U R U' R' U R U' R' U R U2' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_2-u_forward_slash","case_name":"nmcll-s_2-u_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R2 D R' U2 R D' R' U2 R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_3-as_back_slash","case_name":"nmcll-s_3-as_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F' r U r' U2' r' F2 r U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_3-as_columns","case_name":"nmcll-s_3-as_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2 D R' U R D' R' U R' U' R U' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_3-t_left_bar","case_name":"nmcll-s_3-t_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U' R' F R F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-s_3-u_back_slash","case_name":"nmcll-s_3-u_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2' D' R U2 R' D R U2 R U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_1-h_row","case_name":"nmcll-t_1-h_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U' r2' D' r U' r' D r2 U r'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_1-pi_right_bar","case_name":"nmcll-t_1-pi_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_1-t_back_row","case_name":"nmcll-t_1-t_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' D' r U r' D r U' r U r'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_1-u_back_row","case_name":"nmcll-t_1-u_back_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R U R' U' F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_2-as_back_slash","case_name":"nmcll-t_2-as_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F' r U r' U2' r' F2 r","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_2-pi_left_bar","case_name":"nmcll-t_2-pi_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U' R' F R F' R U' R' U2 R U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_2-s_forward_slash","case_name":"nmcll-t_2-s_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R' F' R U2 R U2' R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_2-u_front_row","case_name":"nmcll-t_2-u_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R' U2 R2 U R' U R U2 R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_3-as_forward_slash","case_name":"nmcll-t_3-as_forward_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U R U' L U R'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_3-h_row","case_name":"nmcll-t_3-h_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U' r2' D' r U' r' D r2 U r' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_3-s_back_slash","case_name":"nmcll-t_3-s_back_slash","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' L' U R' U' L","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-t_3-t_front_row","case_name":"nmcll-t_3-t_front_row","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U r U2' R2' F R F' R U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_1-h_column","case_name":"nmcll-u_1-h_column","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R2' F R F' U2 R' F R F' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_1-pi_left_bar","case_name":"nmcll-u_1-pi_left_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R' U' R' F R F' R U' R' U2 R","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_1-t_rows","case_name":"nmcll-u_1-t_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U' R2' U2' R U R' U R","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_1-u_rows","case_name":"nmcll-u_1-u_rows","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' F R2 D R' U R D' R2' U' F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_2-as_columns","case_name":"nmcll-u_2-as_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R2 D R' U R D' R' U R' U' R U' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_2-pi_right_bar","case_name":"nmcll-u_2-pi_right_bar","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R U R' U' F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_2-s_columns","case_name":"nmcll-u_2-s_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U' R' F R F' R U R' U R U2' R' U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_2-t_columns","case_name":"nmcll-u_2-t_columns","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r2' D' r U r' D r2 U' r' U' r","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_3-as_x_checkerboard","case_name":"nmcll-u_3-as_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2' R' U2' R' F R F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_3-h_column","case_name":"nmcll-u_3-h_column","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2' R2' F R F' U2 R' F R F'","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_3-s_x_checkerboard","case_name":"nmcll-u_3-s_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"L' U2 L U2' L F' L' F","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"nmcll","subset":null,"case_id":"nmcll-u_3-u_x_checkerboard","case_name":"nmcll-u_3-u_x_checkerboard","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 r U' r' U r' D' r U' r' D r U","notes":"derived from nmcll-to-cmll mapping"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"13_S_1","case_name":"13_S_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F U R U2 R' U' R U R' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"13_S_2","case_name":"13_S_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U2 R U R' U R U' f R U R' U' f'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"13_S_3","case_name":"13_S_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U' R' F R F' R U R' U R U2 R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"13_S_4","case_name":"13_S_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U' r' U' r U r' F' U F","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"13_S_5","case_name":"13_S_5","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' r U' R' U' R U r' U' R U' R' U' R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"13_S_6","case_name":"13_S_6","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F U R U' R2 F' R U R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"14_AS_1","case_name":"14_AS_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U F R U' R' U R U R' F' R U2 R' U' R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"14_AS_2","case_name":"14_AS_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U' R' U R' F R F' R U2 R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"14_AS_3","case_name":"14_AS_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2 R' U' R F U R U' R' F' U' R' U R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"14_AS_4","case_name":"14_AS_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U R' U R U' M' F U R' U' R F' M","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"14_AS_5","case_name":"14_AS_5","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U R' U r' U' R2 U' R2 U2 r","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"14_AS_6","case_name":"14_AS_6","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U' R U2 R' U2 R U' R' F' U' F R U R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"34_T_1","case_name":"34_T_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R' U F R U' R' U2 R U R' F' R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"34_T_2","case_name":"34_T_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R' F R F' R U' R' U R U' R' U2 R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"34_T_3","case_name":"34_T_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R F' r U r' U R' U' r U' r'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"34_T_4","case_name":"34_T_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F' U' F U r U R' U' M","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"34_T_5","case_name":"34_T_5","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' R' F R U R' U' R U R' U' F' U R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"34_T_6","case_name":"34_T_6","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R2 U' R' F R U R U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"39_L_1","case_name":"39_L_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U2' R2 U' F U R U' R' F' R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"39_L_2","case_name":"39_L_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' F' R' U' R U' R' U2 R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"39_L_3","case_name":"39_L_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' r' U' F' U F r R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"39_L_4","case_name":"39_L_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U R U' r' F U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"39_L_5","case_name":"39_L_5","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U' R U R' F2 r U r' F","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"39_L_6","case_name":"39_L_6","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R U R' U' R' U2 F R F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"45_U_1","case_name":"45_U_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U' R' F R2 U' R' U' R U2 R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"45_U_2","case_name":"45_U_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"45_U_3","case_name":"45_U_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R F R' U R U' R U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"45_U_4","case_name":"45_U_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' F R U R' U' F' U R2 U2 R' U' R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"45_U_5","case_name":"45_U_5","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R U' R' U2 R r U R' U R U2 r'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"45_U_6","case_name":"45_U_6","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U2 R U2 F R U R' U' R' U R U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"51_Pi_1","case_name":"51_Pi_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U2 R U2 R U R' U' R' F R F' R' U R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"51_Pi_2","case_name":"51_Pi_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R' F R F' R U' R' U2 R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"51_Pi_3","case_name":"51_Pi_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R' U2 R' F R2 U R' U' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"51_Pi_4","case_name":"51_Pi_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R' U R U' R' F' U F R U R' U' R U' R'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"51_Pi_5","case_name":"51_Pi_5","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"f R U R' U' R U R' U' f'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"51_Pi_6","case_name":"51_Pi_6","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U2 R U2 F R U R' U' F' R' U R","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"56_H_1","case_name":"56_H_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"F R U R' U' R F' r U R' U' r'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"56_H_2","case_name":"56_H_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"f U R U' R' U R U' R' S' U R U' R' F'","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"56_H_3","case_name":"56_H_3","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U R' U R U r' U' r U r' F' U F","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"ollcp","subset":null,"case_id":"56_H_4","case_name":"56_H_4","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U' r U' R' U R U' R' U R r' U r","notes":null}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"BO","case_name":"BO","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"BR","case_name":"BR","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"BW","case_name":"BW","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"BY","case_name":"BY","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"GO","case_name":"GO","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"GR","case_name":"GR","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"GW","case_name":"GW","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"GY","case_name":"GY","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"OB","case_name":"OB","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"OG","case_name":"OG","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"OW","case_name":"OW","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"OY","case_name":"OY","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"RB","case_name":"RB","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"RG","case_name":"RG","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"RW","case_name":"RW","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"RY","case_name":"RY","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"WB","case_name":"WB","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"WG","case_name":"WG","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"WO","case_name":"WO","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"WR","case_name":"WR","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"YB","case_name":"YB","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"YG","case_name":"YG","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"YO","case_name":"YO","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"orientation","subset":"uf-color-scheme","case_id":"YR","case_name":"YR","exercise_type":"selector-option","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[],"notes":"Roux trainer color-scheme selector option"}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"R'U'R_1","case_name":"R'U'R_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U' R","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"R'U'R_2","case_name":"R'U'R_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U' r","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"R'U2R_1","case_name":"R'U2R_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U2 R","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"R'U2R_2","case_name":"R'U2R_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U2 r","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"R'UR_1","case_name":"R'UR_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R' U R","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"R'UR_2","case_name":"R'UR_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r' U r","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"RU'R'_1","case_name":"RU'R'_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U' R'","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"RU'R'_2","case_name":"RU'R'_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U' r'","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"RU2R'_1","case_name":"RU2R'_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U2 R'","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"RU2R'_2","case_name":"RU2R'_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U2 r'","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"RUR'_1","case_name":"RUR'_1","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"R U R'","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"trigger","subset":null,"case_id":"RUR'_2","case_name":"RUR'_2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"r U r'","notes":"primitive trigger building block"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"u-auf","subset":null,"case_id":"None","case_name":"None","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"(identity)","notes":"AUF option"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"u-auf","subset":null,"case_id":"U","case_name":"U","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U","notes":"AUF option"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"u-auf","subset":null,"case_id":"U'","case_name":"U'","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U'","notes":"AUF option"}],"notes":null}
|
||||
{"source":"roux-trainers","source_scope":"restrictive-static","family":"u-auf","subset":null,"case_id":"U2","case_name":"U2","exercise_type":"algorithm-case","origin_paths":["C:\\Workspaces\\HyperTwist\\mirrors\\restrictive\\onionhoney\\roux-trainers\\src\\lib\\Algs.tsx"],"algorithm_variants":[{"variant_index":1,"algorithm":"U2","notes":"AUF option"}],"notes":null}
|
||||
|
|
@ -1007,6 +1007,66 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
return true;
|
||||
}
|
||||
|
||||
bool LoadGenerativeSurfaceRecordsFromJsonLinesFile(
|
||||
const FString& JsonLinesPath,
|
||||
TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>& OutRecords,
|
||||
TArray<FString>& InOutNotes,
|
||||
const FString& Label
|
||||
)
|
||||
{
|
||||
OutRecords.Reset();
|
||||
if (!FPaths::FileExists(JsonLinesPath))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("%s missing: %s"), *Label, *JsonLinesPath));
|
||||
return false;
|
||||
}
|
||||
|
||||
TArray<FString> Lines;
|
||||
if (!FFileHelper::LoadFileToStringArray(Lines, *JsonLinesPath))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("%s could not be read: %s"), *Label, *JsonLinesPath));
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int32 LineIndex = 0; LineIndex < Lines.Num(); ++LineIndex)
|
||||
{
|
||||
FString Line = Lines[LineIndex];
|
||||
Line.TrimStartAndEndInline();
|
||||
if (Line.IsEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCatalogGenerativeSurfaceRecord Record;
|
||||
if (!FJsonObjectConverter::JsonObjectStringToUStruct(Line, &Record, 0, 0))
|
||||
{
|
||||
InOutNotes.Add(
|
||||
FString::Printf(TEXT("%s JSONL line %d could not be parsed into a generative surface record."), *Label, LineIndex + 1)
|
||||
);
|
||||
OutRecords.Reset();
|
||||
return false;
|
||||
}
|
||||
if (!Record.IsStructurallyValid())
|
||||
{
|
||||
InOutNotes.Add(
|
||||
FString::Printf(TEXT("%s JSONL line %d parsed but was structurally invalid."), *Label, LineIndex + 1)
|
||||
);
|
||||
OutRecords.Reset();
|
||||
return false;
|
||||
}
|
||||
|
||||
OutRecords.Add(MoveTemp(Record));
|
||||
}
|
||||
|
||||
if (OutRecords.Num() == 0)
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("%s contained no usable generative surface records."), *Label));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
FString ResolveRawStructureTemplate(const FHyperTwistTrainingCatalogRawExerciseRecord& RawRecord)
|
||||
{
|
||||
if (RawRecord.exercise_type.Equals(TEXT("algorithm-case"), ESearchCase::IgnoreCase))
|
||||
|
|
@ -1017,6 +1077,10 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
{
|
||||
return TEXT("scramble-drill-deck");
|
||||
}
|
||||
if (RawRecord.exercise_type.Equals(TEXT("selector-option"), ESearchCase::IgnoreCase))
|
||||
{
|
||||
return TEXT("selector-catalog");
|
||||
}
|
||||
|
||||
return FString();
|
||||
}
|
||||
|
|
@ -1054,6 +1118,42 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
return true;
|
||||
}
|
||||
|
||||
bool MatchesRuntimeBundleFilter(
|
||||
const FHyperTwistTrainingCatalogRuntimeContentBundle& RuntimeBundle,
|
||||
const FHyperTwistTrainingCatalogGenerativeSurfaceRecord& GenerativeRecord
|
||||
)
|
||||
{
|
||||
if (!RuntimeBundle.MatchFilter.source.Equals(GenerativeRecord.source, ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!RuntimeBundle.MatchFilter.source_scope.Equals(GenerativeRecord.source_scope, ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!RuntimeBundle.MatchFilter.structure_template.Equals(TEXT("generative-trainer-surface"), ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!RuntimeBundle.MatchFilter.family.IsEmpty()
|
||||
&& !RuntimeBundle.MatchFilter.family.Equals(GenerativeRecord.family, ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!RuntimeBundle.MatchFilter.subset.IsEmpty()
|
||||
&& !RuntimeBundle.MatchFilter.subset.Equals(GenerativeRecord.subset, ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!RuntimeBundle.MatchFilter.mode_id.IsEmpty()
|
||||
&& !RuntimeBundle.MatchFilter.mode_id.Equals(GenerativeRecord.mode_id, ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
FString SlugifyValue(const FString& Value)
|
||||
{
|
||||
FString Slug;
|
||||
|
|
@ -1163,16 +1263,17 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
|
||||
FString ResolveImportedPuzzleId(const FHyperTwistTrainingCatalogDeckImportSpec& DeckImportSpec)
|
||||
{
|
||||
const FString LowerContentPackId = DeckImportSpec.ContentPackId.ToLower();
|
||||
const FString LowerTrackId = DeckImportSpec.TrackId.ToLower();
|
||||
const FString LowerDeckId = DeckImportSpec.DeckId.ToLower();
|
||||
const FString Combined = FString::Printf(TEXT("%s %s %s"), *LowerContentPackId, *LowerTrackId, *LowerDeckId);
|
||||
|
||||
const FString Combined = FString::Printf(
|
||||
TEXT("%s %s %s"),
|
||||
*DeckImportSpec.ContentPackId.ToLower(),
|
||||
*DeckImportSpec.TrackId.ToLower(),
|
||||
*DeckImportSpec.DeckId.ToLower()
|
||||
);
|
||||
if (Combined.Contains(TEXT("2x2")))
|
||||
{
|
||||
return TEXT("cube/2x2x2");
|
||||
}
|
||||
if (Combined.Contains(TEXT("square-1")))
|
||||
if (Combined.Contains(TEXT("square-1")) || Combined.Contains(TEXT("square1")))
|
||||
{
|
||||
return TEXT("square-1");
|
||||
}
|
||||
|
|
@ -1297,11 +1398,122 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
return false;
|
||||
}
|
||||
|
||||
void PopulateDeckCoreFields(
|
||||
const FHyperTwistTrainingCatalogDeckImportSpec& DeckImportSpec,
|
||||
const TArray<EHyperTwistTrainingDeliveryMode>& DeliveryModes,
|
||||
const EHyperTwistTrainingSelectionPolicy SelectionPolicy,
|
||||
const FHyperTwistTrainingTimingPolicy& TimingPolicy,
|
||||
const FHyperTwistTrainingSourceAttribution& DeckSourceAttribution,
|
||||
TArray<FHyperTwistTrainingCase>&& Cases,
|
||||
FHyperTwistTrainingDeck& OutDeck
|
||||
)
|
||||
{
|
||||
OutDeck.DeckId = DeckImportSpec.DeckId;
|
||||
OutDeck.Title = DeckImportSpec.Title;
|
||||
OutDeck.DeliveryModes = DeliveryModes;
|
||||
OutDeck.SelectionPolicy = SelectionPolicy;
|
||||
OutDeck.bUsesRealScrambles = DeckImportSpec.bUsesRealScrambles;
|
||||
OutDeck.bSupportsAlgorithmReveal = DeckImportSpec.bSupportsAlgorithmReveal;
|
||||
OutDeck.bSupportsVirtualCube = DeckImportSpec.bSupportsVirtualCube;
|
||||
OutDeck.bSupportsSmartCube = DeckImportSpec.bSupportsSmartCube;
|
||||
OutDeck.TimingPolicy = TimingPolicy;
|
||||
OutDeck.Cases = MoveTemp(Cases);
|
||||
OutDeck.DifficultyBand = DeckImportSpec.DifficultyBand;
|
||||
OutDeck.Tags = DeckImportSpec.Tags;
|
||||
OutDeck.Tags.AddUnique(TEXT("imported-materialized"));
|
||||
OutDeck.Tags.AddUnique(TEXT("catalog-materialized"));
|
||||
OutDeck.SubsetId = DeckImportSpec.SubsetId;
|
||||
OutDeck.SourceAttribution = DeckSourceAttribution;
|
||||
}
|
||||
|
||||
void PopulateGeneratedModeRuntimeSurface(
|
||||
const FHyperTwistTrainingCatalogDeckImportSpec& DeckImportSpec,
|
||||
const FHyperTwistTrainingCatalogRuntimeContentBundle& RuntimeBundle,
|
||||
const FHyperTwistTrainingCatalogGenerativeSurfaceRecord& GenerativeRecord,
|
||||
FHyperTwistTrainingImportedRuntimeSurface& OutRuntimeSurface
|
||||
)
|
||||
{
|
||||
OutRuntimeSurface = FHyperTwistTrainingImportedRuntimeSurface();
|
||||
OutRuntimeSurface.SurfaceKind = TEXT("generated-mode");
|
||||
OutRuntimeSurface.SurfaceId = RuntimeBundle.CaseBundleId;
|
||||
OutRuntimeSurface.SurfaceLabel = GenerativeRecord.mode_name;
|
||||
OutRuntimeSurface.RuntimeModeId = GenerativeRecord.runtime_mode;
|
||||
OutRuntimeSurface.GeneratorType = GenerativeRecord.generator_type;
|
||||
OutRuntimeSurface.OriginPaths = GenerativeRecord.origin_paths;
|
||||
OutRuntimeSurface.Notes = GenerativeRecord.notes;
|
||||
|
||||
for (int32 SelectorIndex = 0; SelectorIndex < GenerativeRecord.selectors.Num(); ++SelectorIndex)
|
||||
{
|
||||
const FHyperTwistTrainingCatalogGenerativeSelectorRecord& SelectorRecord = GenerativeRecord.selectors[SelectorIndex];
|
||||
if (!SelectorRecord.IsStructurallyValid())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingImportedRuntimeSelector Selector;
|
||||
Selector.SelectorId = FString::Printf(
|
||||
TEXT("%s/selector-%d-%s"),
|
||||
*DeckImportSpec.DeckId,
|
||||
SelectorIndex + 1,
|
||||
*SlugifyValue(SelectorRecord.label)
|
||||
);
|
||||
Selector.Label = SelectorRecord.label;
|
||||
Selector.SelectorBinding = SelectorRecord.options;
|
||||
OutRuntimeSurface.Selectors.Add(MoveTemp(Selector));
|
||||
}
|
||||
}
|
||||
|
||||
void PopulateSelectorCatalogRuntimeSurface(
|
||||
const FHyperTwistTrainingCatalogDeckImportSpec& DeckImportSpec,
|
||||
const FHyperTwistTrainingCatalogRuntimeContentBundle& RuntimeBundle,
|
||||
const TArray<FHyperTwistTrainingCatalogRawExerciseRecord>& MatchingRecords,
|
||||
FHyperTwistTrainingImportedRuntimeSurface& OutRuntimeSurface
|
||||
)
|
||||
{
|
||||
OutRuntimeSurface = FHyperTwistTrainingImportedRuntimeSurface();
|
||||
OutRuntimeSurface.SurfaceKind = TEXT("selector-catalog");
|
||||
OutRuntimeSurface.SurfaceId = RuntimeBundle.CaseBundleId;
|
||||
OutRuntimeSurface.SurfaceLabel = DeckImportSpec.Title;
|
||||
OutRuntimeSurface.Notes = FString::Printf(
|
||||
TEXT("Imported selector catalog materialized from bundled case bundle %s."),
|
||||
*RuntimeBundle.CaseBundleId
|
||||
);
|
||||
|
||||
FHyperTwistTrainingImportedRuntimeSelector Selector;
|
||||
Selector.SelectorId = FString::Printf(TEXT("%s/selector-catalog"), *DeckImportSpec.DeckId);
|
||||
Selector.Label = DeckImportSpec.Title;
|
||||
|
||||
for (const FHyperTwistTrainingCatalogRawExerciseRecord& RawRecord : MatchingRecords)
|
||||
{
|
||||
if (!RawRecord.IsStructurallyValid())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingImportedRuntimeSelectorOption Option;
|
||||
Option.OptionId = RawRecord.case_id;
|
||||
Option.Label = NormalizeCaseLabel(RawRecord.case_name, RawRecord.case_id, Selector.Options.Num() + 1);
|
||||
Option.OptionValue = RawRecord.case_id;
|
||||
Selector.Options.Add(MoveTemp(Option));
|
||||
|
||||
for (const FString& OriginPath : RawRecord.origin_paths)
|
||||
{
|
||||
OutRuntimeSurface.OriginPaths.AddUnique(OriginPath);
|
||||
}
|
||||
}
|
||||
|
||||
if (Selector.IsStructurallyValid())
|
||||
{
|
||||
OutRuntimeSurface.Selectors.Add(MoveTemp(Selector));
|
||||
}
|
||||
}
|
||||
|
||||
bool IsSupportedFiniteImportedExerciseBundle(const FHyperTwistTrainingCatalogRuntimeContentBundle& RuntimeBundle)
|
||||
{
|
||||
const bool bIsSupportedFinitePolicy =
|
||||
RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-algorithm-cases"), ESearchCase::IgnoreCase)
|
||||
|| RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-scramble-drill-cases"), ESearchCase::IgnoreCase);
|
||||
|| RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-scramble-drill-cases"), ESearchCase::IgnoreCase)
|
||||
|| RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-selector-catalog"), ESearchCase::IgnoreCase);
|
||||
if (!bIsSupportedFinitePolicy)
|
||||
{
|
||||
return false;
|
||||
|
|
@ -1371,6 +1583,15 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
return false;
|
||||
}
|
||||
}
|
||||
else if (RawRecord.exercise_type.Equals(TEXT("selector-option"), ESearchCase::IgnoreCase))
|
||||
{
|
||||
OutCase.CanonicalStateRef = FString::Printf(
|
||||
TEXT("%s/%s/%s"),
|
||||
*DeckImportSpec.TrackId.ToLower(),
|
||||
*SlugifyValue(RawRecord.family),
|
||||
*SlugifyValue(RawRecord.case_id)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
|
|
@ -1486,6 +1707,7 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
|
||||
const FString PuzzleId = ResolveImportedPuzzleId(DeckImportSpec);
|
||||
TArray<FHyperTwistTrainingCase> Cases;
|
||||
TArray<FHyperTwistTrainingCatalogRawExerciseRecord> MatchingRecords;
|
||||
for (const FHyperTwistTrainingCatalogRawExerciseRecord& RawRecord : *RawRecords)
|
||||
{
|
||||
if (!MatchesRuntimeBundleFilter(RuntimeBundle, RawRecord))
|
||||
|
|
@ -1513,6 +1735,7 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
continue;
|
||||
}
|
||||
|
||||
MatchingRecords.Add(RawRecord);
|
||||
Cases.Add(MoveTemp(TrainingCase));
|
||||
}
|
||||
|
||||
|
|
@ -1535,30 +1758,201 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
));
|
||||
}
|
||||
|
||||
OutDeck.DeckId = DeckImportSpec.DeckId;
|
||||
OutDeck.Title = DeckImportSpec.Title;
|
||||
OutDeck.DeliveryModes = DeliveryModes;
|
||||
OutDeck.SelectionPolicy = SelectionPolicy;
|
||||
OutDeck.bUsesRealScrambles = DeckImportSpec.bUsesRealScrambles;
|
||||
OutDeck.bSupportsAlgorithmReveal = DeckImportSpec.bSupportsAlgorithmReveal;
|
||||
OutDeck.bSupportsVirtualCube = DeckImportSpec.bSupportsVirtualCube;
|
||||
OutDeck.bSupportsSmartCube = DeckImportSpec.bSupportsSmartCube;
|
||||
OutDeck.TimingPolicy = TimingPolicy;
|
||||
OutDeck.Cases = MoveTemp(Cases);
|
||||
OutDeck.DifficultyBand = DeckImportSpec.DifficultyBand;
|
||||
OutDeck.Tags = DeckImportSpec.Tags;
|
||||
OutDeck.Tags.AddUnique(TEXT("imported-materialized"));
|
||||
OutDeck.Tags.AddUnique(TEXT("catalog-materialized"));
|
||||
PopulateDeckCoreFields(
|
||||
DeckImportSpec,
|
||||
DeliveryModes,
|
||||
SelectionPolicy,
|
||||
TimingPolicy,
|
||||
DeckSourceAttribution,
|
||||
MoveTemp(Cases),
|
||||
OutDeck
|
||||
);
|
||||
OutDeck.Tags.AddUnique(FString::Printf(TEXT("runtime-bundle:%s"), *SlugifyValue(RuntimeBundle.CaseBundleId)));
|
||||
OutDeck.SubsetId = DeckImportSpec.SubsetId;
|
||||
OutDeck.SourceAttribution = DeckSourceAttribution;
|
||||
OutDeck.SourceAttribution.SourceNotes = FString::Printf(
|
||||
TEXT("Imported runtime deck materialized from bundled case bundle %s."),
|
||||
*RuntimeBundle.CaseBundleId
|
||||
);
|
||||
if (RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-selector-catalog"), ESearchCase::IgnoreCase))
|
||||
{
|
||||
PopulateSelectorCatalogRuntimeSurface(DeckImportSpec, RuntimeBundle, MatchingRecords, OutDeck.ImportedRuntimeSurface);
|
||||
OutDeck.Tags.AddUnique(TEXT("runtime-surface:selector-catalog"));
|
||||
}
|
||||
return OutDeck.IsStructurallyValid();
|
||||
}
|
||||
|
||||
bool TryMaterializeGeneratedModeImportedDeck(
|
||||
const FString& CatalogDirectory,
|
||||
const FHyperTwistTrainingCatalogDeckImportSpec& DeckImportSpec,
|
||||
const FHyperTwistTrainingCatalogRuntimeContentBundle& RuntimeBundle,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>>& GenerativeSurfaceCache,
|
||||
FHyperTwistTrainingDeck& OutDeck,
|
||||
TArray<FString>& InOutNotes
|
||||
)
|
||||
{
|
||||
OutDeck = FHyperTwistTrainingDeck();
|
||||
if (!DeckImportSpec.IsStructurallyValid() || !RuntimeBundle.IsStructurallyValid())
|
||||
{
|
||||
InOutNotes.Add(TEXT("Imported generated-mode deck materialization failed because the deck spec or runtime bundle was invalid."));
|
||||
return false;
|
||||
}
|
||||
if (!RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-generated-mode"), ESearchCase::IgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TArray<EHyperTwistTrainingDeliveryMode> DeliveryModes;
|
||||
if (!UHyperTwistTrainingCatalogLibrary::TryConvertImportedDeliveryModes(DeckImportSpec.DeliveryModes, DeliveryModes))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("Imported generated-mode deck %s had delivery modes that could not be converted."), *DeckImportSpec.DeckId));
|
||||
return false;
|
||||
}
|
||||
|
||||
EHyperTwistTrainingPromptKind PromptKind = EHyperTwistTrainingPromptKind::State;
|
||||
if (!UHyperTwistTrainingCatalogLibrary::TryConvertImportedPromptKind(DeckImportSpec.PromptKind, PromptKind))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("Imported generated-mode deck %s had a prompt kind that could not be converted."), *DeckImportSpec.DeckId));
|
||||
return false;
|
||||
}
|
||||
|
||||
EHyperTwistTrainingSelectionPolicy SelectionPolicy = EHyperTwistTrainingSelectionPolicy::Weighted;
|
||||
if (!UHyperTwistTrainingCatalogLibrary::TryConvertImportedSelectionPolicy(DeckImportSpec.SelectionPolicy, SelectionPolicy))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("Imported generated-mode deck %s had a selection policy that could not be converted."), *DeckImportSpec.DeckId));
|
||||
return false;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingTimingPolicy TimingPolicy;
|
||||
if (!TryResolveTimingPolicyTemplate(DeckImportSpec.TimingPolicyTemplateId, TimingPolicy))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(
|
||||
TEXT("Imported generated-mode deck %s referenced unsupported timing policy template %s."),
|
||||
*DeckImportSpec.DeckId,
|
||||
*DeckImportSpec.TimingPolicyTemplateId
|
||||
));
|
||||
return false;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingSourceAttribution DeckSourceAttribution;
|
||||
if (!UHyperTwistTrainingCatalogLibrary::TryConvertImportedSourceAttribution(
|
||||
DeckImportSpec.SourceAttribution,
|
||||
DeckSourceAttribution))
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(TEXT("Imported generated-mode deck %s had source attribution that could not be converted."), *DeckImportSpec.DeckId));
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString SourcePath = ResolveBundledContentSourcePath(CatalogDirectory, RuntimeBundle.ContentSourceFile);
|
||||
TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>* GenerativeRecords = GenerativeSurfaceCache.Find(SourcePath);
|
||||
if (GenerativeRecords == nullptr)
|
||||
{
|
||||
TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord> LoadedRecords;
|
||||
if (!LoadGenerativeSurfaceRecordsFromJsonLinesFile(
|
||||
SourcePath,
|
||||
LoadedRecords,
|
||||
InOutNotes,
|
||||
FString::Printf(TEXT("Imported generative surface source for %s"), *DeckImportSpec.DeckId)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
GenerativeRecords = &GenerativeSurfaceCache.Add(SourcePath, MoveTemp(LoadedRecords));
|
||||
}
|
||||
|
||||
const FHyperTwistTrainingCatalogGenerativeSurfaceRecord* MatchingSurface = GenerativeRecords->FindByPredicate(
|
||||
[&RuntimeBundle](const FHyperTwistTrainingCatalogGenerativeSurfaceRecord& Candidate)
|
||||
{
|
||||
return MatchesRuntimeBundleFilter(RuntimeBundle, Candidate);
|
||||
}
|
||||
);
|
||||
if (MatchingSurface == nullptr)
|
||||
{
|
||||
InOutNotes.Add(FString::Printf(
|
||||
TEXT("Imported generated-mode deck %s matched no bundled generative surface records in %s."),
|
||||
*DeckImportSpec.DeckId,
|
||||
*SourcePath
|
||||
));
|
||||
return false;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCase LaunchCase;
|
||||
LaunchCase.CaseId = FString::Printf(TEXT("%s/runtime-surface"), *DeckImportSpec.DeckId);
|
||||
LaunchCase.PuzzleId = ResolveImportedPuzzleId(DeckImportSpec);
|
||||
LaunchCase.PromptKind = PromptKind;
|
||||
LaunchCase.PromptLabel = MatchingSurface->mode_name;
|
||||
LaunchCase.CanonicalStateRef = FString::Printf(
|
||||
TEXT("%s/generated/%s"),
|
||||
*DeckImportSpec.TrackId.ToLower(),
|
||||
*SlugifyValue(MatchingSurface->mode_id)
|
||||
);
|
||||
LaunchCase.SubsetId = !MatchingSurface->subset.IsEmpty() ? MatchingSurface->subset : DeckImportSpec.SubsetId;
|
||||
LaunchCase.Difficulty = ResolveDifficultyValue(DeckImportSpec.DifficultyBand);
|
||||
LaunchCase.Tags = DeckImportSpec.Tags;
|
||||
LaunchCase.Tags.AddUnique(TEXT("imported-materialized"));
|
||||
LaunchCase.Tags.AddUnique(TEXT("runtime-surface:generated-mode"));
|
||||
LaunchCase.Tags.AddUnique(FString::Printf(TEXT("runtime-bundle:%s"), *SlugifyValue(RuntimeBundle.CaseBundleId)));
|
||||
LaunchCase.Tags.AddUnique(FString::Printf(TEXT("mode:%s"), *SlugifyValue(MatchingSurface->mode_id)));
|
||||
LaunchCase.AllowedDeliveryModes = DeliveryModes;
|
||||
LaunchCase.TimeTargetMs = ResolveTimeTargetMs(DeckImportSpec, PromptKind);
|
||||
LaunchCase.SourceAttribution = DeckSourceAttribution;
|
||||
LaunchCase.SourceAttribution.SourceCaseId = MatchingSurface->mode_id;
|
||||
LaunchCase.SourceAttribution.SourceNotes = FString::Printf(
|
||||
TEXT("Imported generated-mode runtime surface materialized from bundle %s."),
|
||||
*RuntimeBundle.CaseBundleId
|
||||
);
|
||||
|
||||
TArray<FHyperTwistTrainingCase> Cases;
|
||||
Cases.Add(MoveTemp(LaunchCase));
|
||||
PopulateDeckCoreFields(
|
||||
DeckImportSpec,
|
||||
DeliveryModes,
|
||||
SelectionPolicy,
|
||||
TimingPolicy,
|
||||
DeckSourceAttribution,
|
||||
MoveTemp(Cases),
|
||||
OutDeck
|
||||
);
|
||||
OutDeck.Tags.AddUnique(TEXT("runtime-surface:generated-mode"));
|
||||
OutDeck.Tags.AddUnique(FString::Printf(TEXT("runtime-bundle:%s"), *SlugifyValue(RuntimeBundle.CaseBundleId)));
|
||||
PopulateGeneratedModeRuntimeSurface(DeckImportSpec, RuntimeBundle, *MatchingSurface, OutDeck.ImportedRuntimeSurface);
|
||||
OutDeck.SourceAttribution.SourceNotes = FString::Printf(
|
||||
TEXT("Imported generated-mode deck materialized from bundled runtime surface %s."),
|
||||
*RuntimeBundle.CaseBundleId
|
||||
);
|
||||
return OutDeck.IsStructurallyValid() && OutDeck.ImportedRuntimeSurface.IsStructurallyValid();
|
||||
}
|
||||
|
||||
bool TryMaterializeImportedDeck(
|
||||
const FString& CatalogDirectory,
|
||||
const FHyperTwistTrainingCatalogDeckImportSpec& DeckImportSpec,
|
||||
const FHyperTwistTrainingCatalogRuntimeContentBundle& RuntimeBundle,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogRawExerciseRecord>>& RawExerciseRecordCache,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>>& GenerativeSurfaceCache,
|
||||
FHyperTwistTrainingDeck& OutDeck,
|
||||
TArray<FString>& InOutNotes
|
||||
)
|
||||
{
|
||||
if (RuntimeBundle.RuntimeMaterializationPolicy.Equals(TEXT("instantiate-generated-mode"), ESearchCase::IgnoreCase))
|
||||
{
|
||||
return TryMaterializeGeneratedModeImportedDeck(
|
||||
CatalogDirectory,
|
||||
DeckImportSpec,
|
||||
RuntimeBundle,
|
||||
GenerativeSurfaceCache,
|
||||
OutDeck,
|
||||
InOutNotes
|
||||
);
|
||||
}
|
||||
|
||||
return TryMaterializeFiniteImportedDeck(
|
||||
CatalogDirectory,
|
||||
DeckImportSpec,
|
||||
RuntimeBundle,
|
||||
RawExerciseRecordCache,
|
||||
OutDeck,
|
||||
InOutNotes
|
||||
);
|
||||
}
|
||||
|
||||
bool TryFindDeckImportSpecByImportSpecId(
|
||||
const FHyperTwistTrainingCatalogMaterializedBundle& MaterializedBundle,
|
||||
const FString& DeckImportSpecId,
|
||||
|
|
@ -1589,6 +1983,7 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
const FHyperTwistTrainingCatalogMaterializedBundle& MaterializedBundle,
|
||||
const FHyperTwistTrainingCatalogImportedTrackManifest& TrackManifest,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogRawExerciseRecord>>& RawExerciseRecordCache,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>>& GenerativeSurfaceCache,
|
||||
FHyperTwistTrainingTrack& OutTrack
|
||||
)
|
||||
{
|
||||
|
|
@ -1626,11 +2021,12 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
|
||||
FHyperTwistTrainingDeck Deck;
|
||||
TArray<FString> MaterializationNotes;
|
||||
if (!TryMaterializeFiniteImportedDeck(
|
||||
if (!TryMaterializeImportedDeck(
|
||||
CatalogDirectory,
|
||||
DeckImportSpec,
|
||||
RuntimeBundle,
|
||||
RawExerciseRecordCache,
|
||||
GenerativeSurfaceCache,
|
||||
Deck,
|
||||
MaterializationNotes))
|
||||
{
|
||||
|
|
@ -1658,6 +2054,7 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
const FHyperTwistTrainingCatalogMaterializedBundle& MaterializedBundle,
|
||||
const FHyperTwistTrainingCatalogImportedContentPackManifest& ContentPackManifest,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogRawExerciseRecord>>& RawExerciseRecordCache,
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>>& GenerativeSurfaceCache,
|
||||
FHyperTwistContentPack& OutContentPack
|
||||
)
|
||||
{
|
||||
|
|
@ -1692,6 +2089,7 @@ namespace HyperTwistTrainingCatalogMaterializationInternal
|
|||
MaterializedBundle,
|
||||
TrackManifest,
|
||||
RawExerciseRecordCache,
|
||||
GenerativeSurfaceCache,
|
||||
Track))
|
||||
{
|
||||
Tracks.Add(MoveTemp(Track));
|
||||
|
|
@ -1733,6 +2131,7 @@ TArray<FHyperTwistContentPack> UHyperTwistTrainingCatalogLibrary::MakePhase3Trai
|
|||
}
|
||||
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogRawExerciseRecord>> RawExerciseRecordCache;
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>> GenerativeSurfaceCache;
|
||||
const FString CatalogDirectory = GetBundledCatalogMaterializationDirectory();
|
||||
for (const FHyperTwistTrainingCatalogImportedContentPackManifest& ContentPackManifest
|
||||
: MaterializedBundle.ContentPackManifests.content_packs)
|
||||
|
|
@ -1743,6 +2142,7 @@ TArray<FHyperTwistContentPack> UHyperTwistTrainingCatalogLibrary::MakePhase3Trai
|
|||
MaterializedBundle,
|
||||
ContentPackManifest,
|
||||
RawExerciseRecordCache,
|
||||
GenerativeSurfaceCache,
|
||||
ImportedContentPack))
|
||||
{
|
||||
continue;
|
||||
|
|
@ -1970,12 +2370,14 @@ bool UHyperTwistTrainingCatalogLibrary::TryMaterializeImportedDeckFromMaterializ
|
|||
return false;
|
||||
}
|
||||
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogRawExerciseRecord>> RawExerciseRecordCache;
|
||||
const bool bMaterialized = HyperTwistTrainingCatalogMaterializationInternal::TryMaterializeFiniteImportedDeck(
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogRawExerciseRecord>> RawExerciseRecordCache;
|
||||
TMap<FString, TArray<FHyperTwistTrainingCatalogGenerativeSurfaceRecord>> GenerativeSurfaceCache;
|
||||
const bool bMaterialized = HyperTwistTrainingCatalogMaterializationInternal::TryMaterializeImportedDeck(
|
||||
GetBundledCatalogMaterializationDirectory(),
|
||||
DeckImportSpec,
|
||||
RuntimeBundle,
|
||||
RawExerciseRecordCache,
|
||||
GenerativeSurfaceCache,
|
||||
OutDeck,
|
||||
OutLoadReport.Notes
|
||||
);
|
||||
|
|
|
|||
|
|
@ -338,6 +338,71 @@ struct FHyperTwistTrainingCatalogRawAlgorithmVariant
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCatalogGenerativeSelectorRecord
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString label;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString options;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !label.IsEmpty() && !options.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCatalogGenerativeSurfaceRecord
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString source;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString source_scope;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString family;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString subset;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString mode_id;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString mode_name;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString runtime_mode;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString generator_type;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingCatalogGenerativeSelectorRecord> selectors;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> origin_paths;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString notes;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !source.IsEmpty()
|
||||
&& !source_scope.IsEmpty()
|
||||
&& !family.IsEmpty()
|
||||
&& !mode_id.IsEmpty()
|
||||
&& !mode_name.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCatalogRawExerciseRecord
|
||||
{
|
||||
|
|
|
|||
|
|
@ -372,6 +372,84 @@ struct FHyperTwistTrainingCase
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingImportedRuntimeSelectorOption
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString OptionId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Label;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString OptionValue;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !OptionId.IsEmpty() && !Label.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingImportedRuntimeSelector
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SelectorId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Label;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SelectorBinding;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingImportedRuntimeSelectorOption> Options;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !SelectorId.IsEmpty() && !Label.IsEmpty() && (!SelectorBinding.IsEmpty() || Options.Num() > 0);
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingImportedRuntimeSurface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SurfaceKind;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SurfaceId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SurfaceLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RuntimeModeId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString GeneratorType;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingImportedRuntimeSelector> Selectors;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> OriginPaths;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Notes;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !SurfaceKind.IsEmpty() && !SurfaceId.IsEmpty() && !SurfaceLabel.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingDeck
|
||||
{
|
||||
|
|
@ -419,6 +497,9 @@ struct FHyperTwistTrainingDeck
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingSourceAttribution SourceAttribution;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingImportedRuntimeSurface ImportedRuntimeSurface;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !DeckId.IsEmpty() && !Title.IsEmpty() && Cases.Num() > 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue