{
  "_id": "6ad26c5a475807f7554a6235",
  "Package": "cayleyR",
  "Type": "Package",
  "Title": "Cayley Graph Analysis for Permutation Puzzles",
  "Version": "0.3.0",
  "Authors@R": "c(\nperson(\n\"Yuri\", \"Baramykov\",\nemail = \"lbsbmsu@mail.ru\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0009-0000-7627-4217\")\n),\nperson(\"Lucas\", \"Garron\", role = c(\"ctb\", \"cph\"),\ncomment = \"twips search machinery in src/kociemba_core.h, src/kociemba4.h\"),\nperson(\"cubing.js authors\", role = \"cph\",\ncomment = \"twips, https://github.com/cubing/twips\")\n)",
  "Description": "Analyzes Cayley graphs of permutation puzzles. Any puzzle\nwhose moves permute a fixed set of positions can be declared as\na permutation group, and the same tools then work on it: cycle\ndetection, state space exploration and path search. Two puzzles\nare built in: TopSpin and Rubik's cubes of any size. The 3x3x3\nis solved by four human methods and by a two-phase search after\nHerbert Kociemba; the 4x4x4 is solved by reduction. The\nIterative Cycle Intersection (ICI) method is described in Yuri\nBaramykov (2026) <doi:10.48550/arXiv.2607.13219>.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "URL": "https://github.com/Zabis13/cayleyR,\nhttps://arxiv.org/abs/2607.13219",
  "BugReports": "https://github.com/Zabis13/cayleyR/issues",
  "Repository": "https://zabis13.r-universe.dev",
  "Date/Publication": "2026-10-16 13:31:14 UTC",
  "RemoteUrl": "https://github.com/zabis13/cayleyr",
  "RemoteRef": "HEAD",
  "RemoteSha": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-10-16 17:47:46 UTC",
    "User": "root"
  },
  "Author": "Yuri Baramykov [aut, cre] (ORCID:\n<https://orcid.org/0009-0000-7627-4217>),\nLucas Garron [ctb, cph] (twips search machinery in src/kociemba_core.h,\nsrc/kociemba4.h),\ncubing.js authors [cph] (twips, https://github.com/cubing/twips)",
  "Maintainer": "Yuri Baramykov <lbsbmsu@mail.ru>",
  "_user": "zabis13",
  "_type": "src",
  "_file": "cayleyR_0.3.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/b853305d3d676a44aa3620d84f2c6d3505b7c7817085bed63e501f9f82e8ec14",
  "_filesize": 1493879,
  "_sha256": "b853305d3d676a44aa3620d84f2c6d3505b7c7817085bed63e501f9f82e8ec14",
  "_expires": "2027-01-24T18:26:32.000Z",
  "_created": "2026-10-16T17:47:46.000Z",
  "_published": "2026-10-16T18:26:34.562Z",
  "_buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 117113799050,
      "time": 189,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12063353692"
    },
    {
      "job": 117113799457,
      "time": 215,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12064320933"
    },
    {
      "job": 117113799221,
      "time": 176,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12063782709"
    },
    {
      "job": 117113799175,
      "time": 211,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12064270905"
    },
    {
      "job": 117113799130,
      "time": 197,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12066062522"
    },
    {
      "job": 117113799258,
      "time": 529,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12067616184"
    },
    {
      "job": 117113799123,
      "time": 173,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12066120498"
    },
    {
      "job": 117113799190,
      "time": 429,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12065021709"
    },
    {
      "job": 117111507393,
      "time": 308,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12063243487"
    },
    {
      "job": 117113799093,
      "time": 132,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12063997327"
    },
    {
      "job": 117113799209,
      "time": 390,
      "config": "windows-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12064241330"
    },
    {
      "job": 117113799148,
      "time": 300,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12063479077"
    },
    {
      "job": 117113799462,
      "time": 197,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12063404254"
    },
    {
      "job": 117113799369,
      "time": 330,
      "config": "windows-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12064231342"
    },
    {
      "job": 117113799343,
      "time": 264,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12063828321"
    }
  ],
  "_upstream": "https://github.com/zabis13/cayleyr",
  "_commit": {
    "id": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
    "author": "Ваше Имя <lbsbmsu@mail.ru>",
    "committer": "Ваше Имя <lbsbmsu@mail.ru>",
    "message": "Add R package structure and dependencies\n",
    "time": 1792157474
  },
  "_maintainer": {
    "name": "Yuri Baramykov",
    "email": "lbsbmsu@mail.ru",
    "login": "zabis13",
    "description": "Yuri Baramykov",
    "uuid": 77751222,
    "orcid": "0009-0000-7627-4217"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "Rcpp",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "ggmlR",
      "role": "Suggests"
    },
    {
      "package": "parallel",
      "role": "Suggests"
    },
    {
      "package": "data.table",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "zabis13",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-46",
      "n": 4
    },
    {
      "week": "2025-47",
      "n": 5
    },
    {
      "week": "2025-48",
      "n": 1
    },
    {
      "week": "2026-09",
      "n": 7
    },
    {
      "week": "2026-10",
      "n": 8
    },
    {
      "week": "2026-14",
      "n": 7
    },
    {
      "week": "2026-15",
      "n": 4
    },
    {
      "week": "2026-30",
      "n": 3
    },
    {
      "week": "2026-31",
      "n": 2
    },
    {
      "week": "2026-32",
      "n": 7
    },
    {
      "week": "2026-34",
      "n": 3
    },
    {
      "week": "2026-35",
      "n": 3
    },
    {
      "week": "2026-41",
      "n": 1
    },
    {
      "week": "2026-42",
      "n": 3
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2025-11-12"
    }
  ],
  "_topics": [
    "cayley-graph",
    "permutations",
    "puzzle-solver",
    "cpp",
    "openmp"
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "zabis13",
      "count": 58,
      "uuid": 77751222
    }
  ],
  "_userbio": {
    "uuid": 77751222,
    "type": "user",
    "name": "Yuri",
    "followers": 13,
    "description": "Yuri Baramykov"
  },
  "_downloads": {
    "count": 389,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/cayleyR"
  },
  "_devurl": "https://github.com/zabis13/cayleyr",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/cayleyR.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/zabis13/cayleyr",
  "_realowner": "zabis13",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2025-11-25"
    },
    {
      "version": "0.2.1",
      "date": "2026-03-01"
    },
    {
      "version": "0.2.6",
      "date": "2026-07-29"
    }
  ],
  "_exports": [
    "analyze_top_combinations",
    "apply_operations",
    "apply_operations_batch_gpu",
    "bidirectional_bfs",
    "breakpoint_distance",
    "build_permutation_matrix",
    "calculate_angular_distance_z",
    "calculate_differences",
    "calculate_midpoint_z",
    "cayley_bfs_full",
    "cayley_distance",
    "cayley_distance_methods",
    "cayley_gpu_available",
    "cayley_gpu_free",
    "cayley_gpu_init",
    "cayley_gpu_status",
    "cayley_graph_diameter",
    "check_duplicates",
    "compose_permutation_matrix",
    "convert_digits",
    "convert_LRX_to_celestial",
    "convex_hull_3d",
    "create_state_store",
    "cube_adi_astar",
    "cube_adi_load",
    "cube_adi_model",
    "cube_adi_save",
    "cube_adi_solve",
    "cube_adi_train",
    "cube_alg_table",
    "cube_apply_word",
    "cube_at_phase_goal_cpp",
    "cube_build_lslice",
    "cube_central_moves",
    "cube_centre_counts",
    "cube_centre_cycles",
    "cube_centre_positions",
    "cube_centre_shots",
    "cube_centre_structure",
    "cube_colour_state",
    "cube_colours",
    "cube_edge_algs",
    "cube_edge_counts",
    "cube_edge_map",
    "cube_edge_structure",
    "cube_empty_u_slice",
    "cube_expand_alg",
    "cube_expand_move",
    "cube_expand_word",
    "cube_free_moves",
    "cube_group",
    "cube_identity",
    "cube_is_colour_solved",
    "cube_is_reduced",
    "cube_kociemba",
    "cube_kociemba_init",
    "cube_kociemba_report",
    "cube_kociemba4",
    "cube_kociemba4_fill_phase3_cpp",
    "cube_kociemba4_phase12_cpp",
    "cube_kociemba4_phase3_cpp",
    "cube_kociemba4_reduce",
    "cube_kociemba4_report",
    "cube_kociemba4_tables_cpp",
    "cube_layer_move",
    "cube_lslice_cells",
    "cube_move_names",
    "cube_moves",
    "cube_moves_santa",
    "cube_orbits",
    "cube_pair_edges",
    "cube_phase3_coord_cpp",
    "cube_piece_layout",
    "cube_pieces",
    "cube_pieces_home",
    "cube_predicates",
    "cube_progress",
    "cube_read_state",
    "cube_reduce_best",
    "cube_reduce_cpp",
    "cube_santa_group",
    "cube_santa_move_names",
    "cube_santa_moves",
    "cube_santa_path",
    "cube_santa_path_out",
    "cube_santa_perm",
    "cube_santa_state",
    "cube_santa_state_out",
    "cube_slice_cells_cpp",
    "cube_slice_map",
    "cube_solve_centres",
    "cube_solve_cfop",
    "cube_solve_lbl",
    "cube_solve_m2",
    "cube_solve_old_pochmann",
    "cube_solve4",
    "cube_solve4_cascade",
    "cube_to_pieces4_cpp",
    "cube_wide_move",
    "cube_wide_turn",
    "cube_wide_word",
    "cube_wing_geometry_cpp",
    "cube_word_order",
    "cycle_shortcut",
    "enclosing_hull_3d",
    "find_best_match_cube4_model",
    "find_best_match_human",
    "find_best_random_combinations",
    "find_closest_to_coords",
    "find_combination_in_states",
    "find_path_bfs",
    "find_path_iterative",
    "generate_state",
    "generate_unique_states_df",
    "generate_walk",
    "get_reachable_states",
    "get_reachable_states_light",
    "group_apply",
    "group_compose",
    "group_identity",
    "group_inverse_seq",
    "group_move_index",
    "group_moves",
    "group_order",
    "group_parse_word",
    "human_algorithm",
    "human_algorithm_to",
    "human_phase1_navigate",
    "human_phase1_rank",
    "invert_path",
    "is_perm_group",
    "landmark_states",
    "manhattan_distance",
    "manhattan_distance_matrix_gpu",
    "openmp_threads",
    "perm_group",
    "reconstruct_bfs_path",
    "reverse_prefix",
    "reverse_prefix_simple",
    "run_length",
    "save_bridge_states",
    "select_unique",
    "shift_left",
    "shift_left_simple",
    "shift_right",
    "shift_right_simple",
    "short_path_bfs",
    "short_position",
    "sparse_bfs",
    "state_store_indices_for_cycle",
    "state_store_perm_length",
    "state_store_size",
    "state_store_unique_count",
    "store_add_from_df",
    "store_analyze_combos",
    "store_analyze_combos_gpu",
    "store_clear",
    "store_clear_opd",
    "store_collect_ops",
    "store_combos_for_state",
    "store_filter_middle",
    "store_find_best_match",
    "store_find_intersections",
    "store_get_meta",
    "store_get_state",
    "store_group",
    "store_lookup",
    "store_reconstruct_path",
    "store_set_opd",
    "store_to_dataframe",
    "topspin_group",
    "validate_and_simplify_path"
  ],
  "_help": [
    {
      "page": "analyze_top_combinations",
      "title": "Analyze Top Operation Combinations",
      "topics": [
        "analyze_top_combinations"
      ]
    },
    {
      "page": "apply_operations",
      "title": "Apply Sequence of Operations",
      "topics": [
        "apply_operations"
      ]
    },
    {
      "page": "apply_operations_batch_gpu",
      "title": "Apply operations to batch of states on GPU",
      "topics": [
        "apply_operations_batch_gpu"
      ]
    },
    {
      "page": "bidirectional_bfs",
      "title": "Bidirectional BFS Shortest Path",
      "topics": [
        "bidirectional_bfs"
      ]
    },
    {
      "page": "breakpoint_distance",
      "title": "Breakpoint Distance Between Two States",
      "topics": [
        "breakpoint_distance"
      ]
    },
    {
      "page": "build_permutation_matrix",
      "title": "Build permutation matrix for a single operation",
      "topics": [
        "build_permutation_matrix"
      ]
    },
    {
      "page": "calculate_angular_distance_z",
      "title": "Angular Distance Between Two Celestial Points",
      "topics": [
        "calculate_angular_distance_z"
      ]
    },
    {
      "page": "calculate_differences",
      "title": "Calculate Manhattan Distances for All States",
      "topics": [
        "calculate_differences"
      ]
    },
    {
      "page": "calculate_midpoint_z",
      "title": "Midpoint Between Two Celestial Coordinates",
      "topics": [
        "calculate_midpoint_z"
      ]
    },
    {
      "page": "cayley_bfs_full",
      "title": "Full Breadth-First Search Over the Cayley Graph",
      "topics": [
        "cayley_bfs_full"
      ]
    },
    {
      "page": "cayley_gpu_available",
      "title": "Check if GPU acceleration is available",
      "topics": [
        "cayley_gpu_available"
      ]
    },
    {
      "page": "cayley_gpu_free",
      "title": "Free GPU backend resources",
      "topics": [
        "cayley_gpu_free"
      ]
    },
    {
      "page": "cayley_gpu_init",
      "title": "Initialize GPU backend",
      "topics": [
        "cayley_gpu_init"
      ]
    },
    {
      "page": "cayley_gpu_status",
      "title": "Get GPU status information",
      "topics": [
        "cayley_gpu_status"
      ]
    },
    {
      "page": "cayley_graph_diameter",
      "title": "Cayley Graph Diameter and Maximally Distant State Pairs",
      "topics": [
        "cayley_graph_diameter"
      ]
    },
    {
      "page": "check_duplicates",
      "title": "Find Duplicate States Between Two Tables",
      "topics": [
        "check_duplicates"
      ]
    },
    {
      "page": "compose_permutation_matrix",
      "title": "Compose permutation matrices for a sequence of operations",
      "topics": [
        "compose_permutation_matrix"
      ]
    },
    {
      "page": "convert_digits",
      "title": "Convert String to Integer Vector of Digits",
      "topics": [
        "convert_digits"
      ]
    },
    {
      "page": "convert_LRX_to_celestial",
      "title": "Convert LRX Counts to Celestial Coordinates",
      "topics": [
        "convert_LRX_to_celestial"
      ]
    },
    {
      "page": "convex_hull_3d",
      "title": "Convex Hull of a 3-D Point Cloud",
      "topics": [
        "convex_hull_3d"
      ]
    },
    {
      "page": "create_state_store",
      "title": "Create a New State Store",
      "topics": [
        "create_state_store"
      ]
    },
    {
      "page": "cube_adi",
      "title": "Autodidactic Iteration on a Permutation Puzzle",
      "topics": [
        "cube_adi"
      ]
    },
    {
      "page": "cube_adi_astar",
      "title": "Batch Weighted A* With a Learned Heuristic",
      "topics": [
        "cube_adi_astar"
      ]
    },
    {
      "page": "cube_adi_load",
      "title": "Load a Trained ADI Network",
      "topics": [
        "cube_adi_load"
      ]
    },
    {
      "page": "cube_adi_model",
      "title": "Build the Value and Policy Networks",
      "topics": [
        "cube_adi_model"
      ]
    },
    {
      "page": "cube_adi_save",
      "title": "Save a Trained ADI Network",
      "topics": [
        "cube_adi_save"
      ]
    },
    {
      "page": "cube_adi_solve",
      "title": "Solve a Cube With a Trained Network",
      "topics": [
        "cube_adi_solve"
      ]
    },
    {
      "page": "cube_adi_train",
      "title": "Train Value and Policy by Autodidactic Iteration",
      "topics": [
        "cube_adi_train"
      ]
    },
    {
      "page": "cube_alg_table",
      "title": "The Algorithm Tables",
      "topics": [
        "cube_alg_table"
      ]
    },
    {
      "page": "cube_apply_word",
      "title": "Apply a Word of Moves to a Cube State",
      "topics": [
        "cube_apply_word"
      ]
    },
    {
      "page": "cube_build_lslice",
      "title": "Build the Layer Beside a Face, at Any Size",
      "topics": [
        "cube_build_lslice"
      ]
    },
    {
      "page": "cube_central_moves",
      "title": "Slice Turns That Reorient the Whole Cube",
      "topics": [
        "cube_central_moves"
      ]
    },
    {
      "page": "cube_centre_counts",
      "title": "Count the Centre Pieces That Are Home",
      "topics": [
        "cube_centre_counts"
      ]
    },
    {
      "page": "cube_centre_cycles",
      "title": "Three-Cycles of Centres, One Per Orbit",
      "topics": [
        "cube_centre_cycles"
      ]
    },
    {
      "page": "cube_centre_map_family",
      "title": "The Centres of a Cube of Any Size, Derived",
      "topics": [
        "cube_centre_map_family"
      ]
    },
    {
      "page": "cube_centre_positions",
      "title": "Sticker Positions of the Six Centres",
      "topics": [
        "cube_centre_positions"
      ]
    },
    {
      "page": "cube_centre_shots",
      "title": "Commutators That Carry Centres Off One Face and Spare Another",
      "topics": [
        "cube_centre_shots"
      ]
    },
    {
      "page": "cube_centre_structure",
      "title": "Centre Stickers of an N x N x N Cube",
      "topics": [
        "cube_centre_structure"
      ]
    },
    {
      "page": "cube_colours",
      "title": "Colours and Positions: the Two Ways to Write a Cube Down",
      "topics": [
        "cube_colours",
        "cube_colour_state"
      ]
    },
    {
      "page": "cube_edge_algs",
      "title": "The Published Edge-Pairing Algorithms, at Any Size",
      "topics": [
        "cube_edge_algs"
      ]
    },
    {
      "page": "cube_edge_counts",
      "title": "How Many Edges Are Whole",
      "topics": [
        "cube_edge_counts"
      ]
    },
    {
      "page": "cube_edge_map",
      "title": "Where a Turn Sends Each Edge Piece",
      "topics": [
        "cube_edge_map"
      ]
    },
    {
      "page": "cube_edge_map_family",
      "title": "The Edges of a Cube of Any Size, Derived",
      "topics": [
        "cube_edge_map_family"
      ]
    },
    {
      "page": "cube_edge_structure",
      "title": "Edge Pieces of an N x N x N Cube",
      "topics": [
        "cube_edge_structure"
      ]
    },
    {
      "page": "cube_empty_u_slice",
      "title": "Empty the Top Face onto the Sides",
      "topics": [
        "cube_empty_u_slice"
      ]
    },
    {
      "page": "cube_expand_alg",
      "title": "Expand an Algorithm into the Package's Alphabet",
      "topics": [
        "cube_expand_alg"
      ]
    },
    {
      "page": "cube_expand_move",
      "title": "Wide Turns and Whole-Cube Rotations",
      "topics": [
        "cube_expand_move",
        "cube_expand_word",
        "cube_wide_move",
        "cube_wide_word"
      ]
    },
    {
      "page": "cube_group",
      "title": "The Group of an N x N x N Cube",
      "topics": [
        "cube_group"
      ]
    },
    {
      "page": "cube_identity",
      "title": "Solved State of an N x N x N Cube",
      "topics": [
        "cube_identity"
      ]
    },
    {
      "page": "cube_is_colour_solved",
      "title": "Test Whether Every Face of a Cube is a Single Colour",
      "topics": [
        "cube_is_colour_solved"
      ]
    },
    {
      "page": "cube_is_reduced",
      "title": "Is a Cube Reduced?",
      "topics": [
        "cube_is_reduced"
      ]
    },
    {
      "page": "cube_kociemba",
      "title": "Solve a 3x3x3 by Two-Phase Search",
      "topics": [
        "cube_kociemba"
      ]
    },
    {
      "page": "cube_kociemba_init",
      "title": "Build the Kociemba Prune Tables",
      "topics": [
        "cube_kociemba_init"
      ]
    },
    {
      "page": "cube_kociemba_report",
      "title": "What the Last Kociemba Solve Did",
      "topics": [
        "cube_kociemba_report"
      ]
    },
    {
      "page": "cube_kociemba4",
      "title": "Solve a 4x4x4 by Four-Phase Search",
      "topics": [
        "cube_kociemba4"
      ]
    },
    {
      "page": "cube_kociemba4_reduce",
      "title": "Reduce a 4x4x4 by Four-Phase Search",
      "topics": [
        "cube_kociemba4_reduce"
      ]
    },
    {
      "page": "cube_kociemba4_report",
      "title": "What the Last 4x4x4 Reduction Did",
      "topics": [
        "cube_kociemba4_report"
      ]
    },
    {
      "page": "cube_layer_move",
      "title": "A Single Layer Turn, by Axis and Layer",
      "topics": [
        "cube_layer_move"
      ]
    },
    {
      "page": "cube_lslice_cells",
      "title": "The Layer Beside a Face, and What Leaves It Alone",
      "topics": [
        "cube_free_moves",
        "cube_lslice_cells"
      ]
    },
    {
      "page": "cube_move_names",
      "title": "Move Names of an N x N x N Cube",
      "topics": [
        "cube_move_names"
      ]
    },
    {
      "page": "cube_moves",
      "title": "Move Table of an N x N x N Cube",
      "topics": [
        "cube_moves"
      ]
    },
    {
      "page": "cube_nnn",
      "title": "Cubes of Any Size",
      "topics": [
        "cube_nnn"
      ]
    },
    {
      "page": "cube_orbits",
      "title": "Orbits of an N x N x N Cube",
      "topics": [
        "cube_orbits"
      ]
    },
    {
      "page": "cube_orbits_family",
      "title": "Piece Orbits of a Cube of Any Size",
      "topics": [
        "cube_orbits_family"
      ]
    },
    {
      "page": "cube_pair_edges",
      "title": "Pair the Edges of a Cube of Any Size",
      "topics": [
        "cube_pair_edges"
      ]
    },
    {
      "page": "cube_piece_layout",
      "title": "The Piece Layout a Cube State Is Read Through",
      "topics": [
        "cube_piece_layout"
      ]
    },
    {
      "page": "cube_pieces",
      "title": "Pieces of an N x N x N Cube",
      "topics": [
        "cube_pieces"
      ]
    },
    {
      "page": "cube_pieces_home",
      "title": "Pieces Home on a Cube",
      "topics": [
        "cube_pieces_home"
      ]
    },
    {
      "page": "cube_predicates",
      "title": "Stage Predicates of a Cube State",
      "topics": [
        "cube_predicates"
      ]
    },
    {
      "page": "cube_progress",
      "title": "How Much of Each Orbit Is Solved",
      "topics": [
        "cube_progress"
      ]
    },
    {
      "page": "cube_read_state",
      "title": "Read a Cube State as Pieces",
      "topics": [
        "cube_read_state"
      ]
    },
    {
      "page": "cube_reduce_best",
      "title": "Reduce a 4x4x4, Trying Every Starting Face",
      "topics": [
        "cube_reduce_best"
      ]
    },
    {
      "page": "cube_reduce_cpp",
      "title": "Reduce a 4x4x4 by the human method",
      "topics": [
        "cube_reduce_cpp"
      ]
    },
    {
      "page": "cube_santa",
      "title": "The Santa 2023 Cube Notation",
      "topics": [
        "cube_santa"
      ]
    },
    {
      "page": "cube_santa_group",
      "title": "A Cube Group in Santa 2023 Notation",
      "topics": [
        "cube_santa_group"
      ]
    },
    {
      "page": "cube_santa_move_names",
      "title": "Santa 2023 Move Names for a Cube",
      "topics": [
        "cube_santa_move_names"
      ]
    },
    {
      "page": "cube_santa_moves",
      "title": "Translate Between Santa 2023 and Package Move Names",
      "topics": [
        "cube_moves_santa",
        "cube_santa_moves"
      ]
    },
    {
      "page": "cube_santa_path",
      "title": "Translate a Santa 2023 Solution Path",
      "topics": [
        "cube_santa_path",
        "cube_santa_path_out"
      ]
    },
    {
      "page": "cube_santa_perm",
      "title": "Sticker Relabelling Between Santa 2023 and This Package",
      "topics": [
        "cube_santa_perm"
      ]
    },
    {
      "page": "cube_santa_state",
      "title": "Read and Write Santa 2023 Cube States",
      "topics": [
        "cube_santa_state",
        "cube_santa_state_out"
      ]
    },
    {
      "page": "cube_slice_cells_cpp",
      "title": "The Layer Beside a Face, as the 4x4x4 Solver Sees It",
      "topics": [
        "cube_slice_cells_cpp"
      ]
    },
    {
      "page": "cube_slice_map",
      "title": "Where a Slice Turn Sends Each Centre",
      "topics": [
        "cube_slice_map"
      ]
    },
    {
      "page": "cube_solve_centres",
      "title": "Solve the Centres of a 4x4x4 Cube",
      "topics": [
        "cube_solve_centres"
      ]
    },
    {
      "page": "cube_solve_cfop",
      "title": "Solve a 3x3x3 Cube by CFOP",
      "topics": [
        "cube_solve_cfop"
      ]
    },
    {
      "page": "cube_solve_lbl",
      "title": "Solve a 3x3x3 Cube Layer by Layer",
      "topics": [
        "cube_solve_lbl"
      ]
    },
    {
      "page": "cube_solve_m2",
      "title": "Solve a 3x3x3 Cube by M2",
      "topics": [
        "cube_solve_m2"
      ]
    },
    {
      "page": "cube_solve_old_pochmann",
      "title": "Solve a 3x3x3 Cube by Old Pochmann",
      "topics": [
        "cube_solve_old_pochmann"
      ]
    },
    {
      "page": "cube_solve4",
      "title": "Solve a 4x4x4 Cube by Reduction",
      "topics": [
        "cube_solve4"
      ]
    },
    {
      "page": "cube_solve4_cascade",
      "title": "Solve a 4x4x4 by reduction, falling back when the search does not pay off",
      "topics": [
        "cube_solve4_cascade"
      ]
    },
    {
      "page": "cube_wide_turn",
      "title": "Wide Turns of an N x N x N Cube",
      "topics": [
        "cube_wide_turn"
      ]
    },
    {
      "page": "cube_word_order",
      "title": "Order of a Word of Moves",
      "topics": [
        "cube_word_order"
      ]
    },
    {
      "page": "cycle_shortcut",
      "title": "Shorten a Path by Cutting Across Cycles",
      "topics": [
        "cycle_shortcut"
      ]
    },
    {
      "page": "distance_methods",
      "title": "Distance Methods for Bridge Selection",
      "topics": [
        "cayley_distance",
        "cayley_distance_methods",
        "distance_methods"
      ]
    },
    {
      "page": "enclosing_hull_3d",
      "title": "Enclosing Hull Through Every Point",
      "topics": [
        "enclosing_hull_3d"
      ]
    },
    {
      "page": "find_best_match_cube4_model",
      "title": "Score Candidate States With a Trained 4x4x4 Model",
      "topics": [
        "find_best_match_cube4_model"
      ]
    },
    {
      "page": "find_best_match_human",
      "title": "Score Candidate States the Way a Person Solves",
      "topics": [
        "find_best_match_human"
      ]
    },
    {
      "page": "find_best_random_combinations",
      "title": "Find Best Random Operation Sequences",
      "topics": [
        "find_best_random_combinations"
      ]
    },
    {
      "page": "find_closest_to_coords",
      "title": "Find Closest State to Target Coordinates",
      "topics": [
        "find_closest_to_coords"
      ]
    },
    {
      "page": "find_combination_in_states",
      "title": "Find a State in Reachable States Table",
      "topics": [
        "find_combination_in_states"
      ]
    },
    {
      "page": "find_path_bfs",
      "title": "Find Path via BFS Highways",
      "topics": [
        "find_path_bfs"
      ]
    },
    {
      "page": "find_path_iterative",
      "title": "Iterative Path Finder Between Permutation States",
      "topics": [
        "find_path_iterative"
      ]
    },
    {
      "page": "generate_state",
      "title": "Generate Reachable Random State",
      "topics": [
        "generate_state"
      ]
    },
    {
      "page": "generate_unique_states_df",
      "title": "Generate Data Frame of Unique Random States",
      "topics": [
        "generate_unique_states_df"
      ]
    },
    {
      "page": "generate_walk",
      "title": "Random Walks From the Solved State, With the Moves They Took",
      "topics": [
        "generate_walk"
      ]
    },
    {
      "page": "get_reachable_states",
      "title": "Find Cycle in Permutation Group",
      "topics": [
        "get_reachable_states"
      ]
    },
    {
      "page": "get_reachable_states_light",
      "title": "Find Cycle Length (Lightweight Version)",
      "topics": [
        "get_reachable_states_light"
      ]
    },
    {
      "page": "group_apply",
      "title": "Apply a Move Sequence Through a Group",
      "topics": [
        "group_apply"
      ]
    },
    {
      "page": "group_compose",
      "title": "Compose a Move Sequence into One Permutation",
      "topics": [
        "group_compose"
      ]
    },
    {
      "page": "group_identity",
      "title": "Solved State of a Group",
      "topics": [
        "group_identity"
      ]
    },
    {
      "page": "group_inverse_seq",
      "title": "Invert a Move Sequence",
      "topics": [
        "group_inverse_seq"
      ]
    },
    {
      "page": "group_move_index",
      "title": "Resolve Move Names to Indices Within a Group",
      "topics": [
        "group_move_index"
      ]
    },
    {
      "page": "group_moves",
      "title": "Move Alphabet of a Group",
      "topics": [
        "group_moves"
      ]
    },
    {
      "page": "group_order",
      "title": "Order of a Move Sequence in a Group",
      "topics": [
        "group_order"
      ]
    },
    {
      "page": "group_parse_word",
      "title": "Parse a Word Written as One String",
      "topics": [
        "group_parse_word"
      ]
    },
    {
      "page": "human_algorithm",
      "title": "Solve a State with the Human TopSpin Algorithm",
      "topics": [
        "human_algorithm"
      ]
    },
    {
      "page": "human_algorithm_to",
      "title": "Human Algorithm Path Between Two Arbitrary States",
      "topics": [
        "human_algorithm_to"
      ]
    },
    {
      "page": "human_phase1_navigate",
      "title": "Follow the Phase 1 Navigator to the Tail",
      "topics": [
        "human_phase1_navigate"
      ]
    },
    {
      "page": "human_phase1_rank",
      "title": "Rank Candidate Moves by the Phase 1 Criterion",
      "topics": [
        "human_phase1_rank"
      ]
    },
    {
      "page": "invert_path",
      "title": "Invert a Path of Operations",
      "topics": [
        "invert_path"
      ]
    },
    {
      "page": "is_perm_group",
      "title": "Test Whether an Object is a Permutation Group",
      "topics": [
        "is_perm_group"
      ]
    },
    {
      "page": "kociemba4_phases",
      "title": "The 4x4x4 reduction phases, one call at a time",
      "topics": [
        "cube_at_phase_goal_cpp",
        "cube_kociemba4_fill_phase3_cpp",
        "cube_kociemba4_phase12_cpp",
        "cube_kociemba4_phase3_cpp",
        "cube_kociemba4_tables_cpp",
        "cube_phase3_coord_cpp",
        "cube_to_pieces4_cpp",
        "cube_wing_geometry_cpp",
        "kociemba4_phases"
      ]
    },
    {
      "page": "landmark_states",
      "title": "Generate Landmark States for a Permutation of Size n",
      "topics": [
        "landmark_states"
      ]
    },
    {
      "page": "manhattan_distance",
      "title": "Manhattan Distance Between Two States",
      "topics": [
        "manhattan_distance"
      ]
    },
    {
      "page": "manhattan_distance_matrix_gpu",
      "title": "Compute Pairwise Manhattan Distance Matrix on GPU",
      "topics": [
        "manhattan_distance_matrix_gpu"
      ]
    },
    {
      "page": "openmp_threads",
      "title": "Number of OpenMP Threads Available",
      "topics": [
        "openmp_threads"
      ]
    },
    {
      "page": "perm_group",
      "title": "Create a Permutation Group from a Table of Moves",
      "topics": [
        "perm_group"
      ]
    },
    {
      "page": "perm_group_intro",
      "title": "Permutation Groups",
      "topics": [
        "perm_group_intro"
      ]
    },
    {
      "page": "print.perm_group",
      "title": "Print a Permutation Group",
      "topics": [
        "print.perm_group"
      ]
    },
    {
      "page": "reconstruct_bfs_path",
      "title": "Reconstruct path from sparse BFS result",
      "topics": [
        "reconstruct_bfs_path"
      ]
    },
    {
      "page": "reverse_prefix",
      "title": "Reverse First k Elements (with Coordinates)",
      "topics": [
        "reverse_prefix"
      ]
    },
    {
      "page": "reverse_prefix_simple",
      "title": "Reverse First k Elements (Simple)",
      "topics": [
        "reverse_prefix_simple"
      ]
    },
    {
      "page": "run_length",
      "title": "Length of the Sorted Run on the Ring",
      "topics": [
        "run_length"
      ]
    },
    {
      "page": "save_bridge_states",
      "title": "Save Bridge States to CSV",
      "topics": [
        "save_bridge_states"
      ]
    },
    {
      "page": "select_unique",
      "title": "Select Unique States by V-columns",
      "topics": [
        "select_unique"
      ]
    },
    {
      "page": "shift_left",
      "title": "Shift State Left (with Coordinates)",
      "topics": [
        "shift_left"
      ]
    },
    {
      "page": "shift_left_simple",
      "title": "Shift State Left (Simple)",
      "topics": [
        "shift_left_simple"
      ]
    },
    {
      "page": "shift_right",
      "title": "Shift State Right (with Coordinates)",
      "topics": [
        "shift_right"
      ]
    },
    {
      "page": "shift_right_simple",
      "title": "Shift State Right (Simple)",
      "topics": [
        "shift_right_simple"
      ]
    },
    {
      "page": "short_path_bfs",
      "title": "Shorten Path via Depth-Limited BFS Hopping",
      "topics": [
        "short_path_bfs"
      ]
    },
    {
      "page": "short_position",
      "title": "Simplify Operation Path",
      "topics": [
        "short_position"
      ]
    },
    {
      "page": "sparse_bfs",
      "title": "Sparse BFS with Look-ahead and Hybrid Selection",
      "topics": [
        "sparse_bfs"
      ]
    },
    {
      "page": "state_store_query",
      "title": "Query a State Store",
      "topics": [
        "state_store_indices_for_cycle",
        "state_store_perm_length",
        "state_store_query",
        "state_store_size",
        "state_store_unique_count"
      ]
    },
    {
      "page": "store_add_from_df",
      "title": "Add States to Store from Data Frame",
      "topics": [
        "store_add_from_df"
      ]
    },
    {
      "page": "store_analyze_combos",
      "title": "Analyze Combinations Directly into Store",
      "topics": [
        "store_analyze_combos"
      ]
    },
    {
      "page": "store_analyze_combos_gpu",
      "title": "Analyze Combinations into Store Using GPU Batch Operations",
      "topics": [
        "store_analyze_combos_gpu"
      ]
    },
    {
      "page": "store_clear",
      "title": "Drop All States From a Store",
      "topics": [
        "store_clear"
      ]
    },
    {
      "page": "store_clear_opd",
      "title": "Clear All OPD Filters",
      "topics": [
        "store_clear_opd"
      ]
    },
    {
      "page": "store_collect_ops",
      "title": "Collect Operations Leading to a State Within One Cycle",
      "topics": [
        "store_collect_ops"
      ]
    },
    {
      "page": "store_combos_for_state",
      "title": "Find Combo Numbers Containing a State in a Cycle",
      "topics": [
        "store_combos_for_state"
      ]
    },
    {
      "page": "store_filter_middle",
      "title": "Filter Middle States for a Cycle",
      "topics": [
        "store_filter_middle"
      ]
    },
    {
      "page": "store_find_best_match",
      "title": "Find Best Match by Manhattan Distance",
      "topics": [
        "store_find_best_match"
      ]
    },
    {
      "page": "store_find_intersections",
      "title": "Find Intersections Between Two Stores",
      "topics": [
        "store_find_intersections"
      ]
    },
    {
      "page": "store_get_meta",
      "title": "Get Metadata for a State",
      "topics": [
        "store_get_meta"
      ]
    },
    {
      "page": "store_get_state",
      "title": "Get State from Store",
      "topics": [
        "store_get_state"
      ]
    },
    {
      "page": "store_group",
      "title": "Group Attached to a State Store",
      "topics": [
        "store_group"
      ]
    },
    {
      "page": "store_lookup",
      "title": "Lookup State Indices by State Vector",
      "topics": [
        "store_lookup"
      ]
    },
    {
      "page": "store_reconstruct_path",
      "title": "Reconstruct Path from Store",
      "topics": [
        "store_reconstruct_path"
      ]
    },
    {
      "page": "store_set_opd",
      "title": "Set OPD Combo Filter for a Cycle",
      "topics": [
        "store_set_opd"
      ]
    },
    {
      "page": "store_to_dataframe",
      "title": "Convert Store to Data Frame",
      "topics": [
        "store_to_dataframe"
      ]
    },
    {
      "page": "topspin_group",
      "title": "Create the TopSpin Group",
      "topics": [
        "topspin_group"
      ]
    },
    {
      "page": "validate_and_simplify_path",
      "title": "Validate and Simplify a Path",
      "topics": [
        "validate_and_simplify_path"
      ]
    }
  ],
  "_readme": "https://github.com/zabis13/cayleyr/raw/HEAD/README.md",
  "_rundeps": [
    "Rcpp"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    },
    {
      "shlib": "libgomp",
      "package": "libgomp1",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "openmp",
      "homepage": "http://gcc.gnu.org/",
      "description": "GCC OpenMP (GOMP) support library"
    }
  ],
  "_vignettes": [
    {
      "source": "functions.Rmd",
      "filename": "functions.html",
      "title": "Function Reference",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Basic Permutation Operations (C++)",
        "shift_left(state, coords = NULL)",
        "shift_right(state, coords = NULL)",
        "reverse_prefix(state, k, coords = NULL)",
        "shift_left_simple(state)",
        "shift_right_simple(state)",
        "reverse_prefix_simple(state, k)",
        "apply_operations(state, operations, k, coords = NULL, compute_coords = TRUE)",
        "openmp_threads()",
        "Cycle Analysis",
        "get_reachable_states(start_state, allowed_positions, k, verbose = FALSE)",
        "get_reachable_states_light(start_state, allowed_positions, k)",
        "analyze_top_combinations(top_combos, start_state, k)",
        "Pathfinding",
        "bidirectional_bfs(n, state1, state2, max_level, moves, k)",
        "find_path_iterative(start_state, final_state, k, moves, combo_length, n_samples, n_top, max_iterations, potc, ptr, opd, reuse_combos, keep_states, one_sided, distance_method, sort_by, verbose)",
        "find_path_bfs(start_state, final_state, k, ...)",
        "sparse_bfs(start_state, k, n_hubs, n_random, max_levels)",
        "reconstruct_bfs_path(bfs_result, target_key)",
        "short_path_bfs(path, start_state, k, depth = 5)",
        "cycle_shortcut(path, start_state, k, n_points = 20, moves, combo_length = 20, n_samples = 200, n_top = 5, sort_by, max_cycle_len = 20000, n_threads = NULL, verbose = FALSE)",
        "human_algorithm(start_state, final_state = NULL, k = 4L, simplify = TRUE)",
        "human_algorithm_cpp(start_state, k, max_ops, final_rotate) (internal)",
        "human_algorithm_to(start_state, target_state = NULL, k = 4, simplify = TRUE)",
        "human_phase1_rank(state, k = 4, sorted = TRUE)",
        "human_phase1_navigate(state, k = 4, max_steps = 2000, trace = FALSE)",
        "run_length(state)",
        "find_best_match_human(states, target, k)",
        "Combination Search",
        "find_best_random_combinations(moves, combo_length, n_samples, n_top, start_state, k, sort_by)",
        "Path Utilities",
        "invert_path(path)",
        "short_position(allowed_positions, n)",
        "validate_and_simplify_path(path_candidate, start_state, final_state, k)",
        "State Processing & Distance",
        "calculate_differences(start_state, reachable_states_start, method, use_gpu)",
        "select_unique(df)",
        "check_duplicates(df1, df2)",
        "manhattan_distance(start_state, target_state)",
        "breakpoint_distance(start_state, target_state)",
        "save_bridge_states(bridge_states, filename)",
        "filter_middle_states(data, skip_first, skip_last) (internal)",
        "find_best_match_state(target_state, reachable_states, method, use_gpu) (internal)",
        "select_new_state(target_all, opposite_state, method) (internal)",
        "cayley_distance_methods()",
        "cayley_distance(method)",
        "State Indexing",
        "add_state_keys(states_df, new_states, v_cols) (internal)",
        "create_hash_index(states_df) (internal)",
        "State Store (C++ Backend)",
        "create_state_store(perm_length, init_capacity)",
        "state_store_size(xp)",
        "state_store_unique_count(xp)",
        "state_store_perm_length(xp)",
        "store_add_from_df(store, df, cycle_val)",
        "store_get_state(store, idx)",
        "store_get_meta(store, idx)",
        "store_find_intersections(store_a, store_b)",
        "store_lookup(store, state)",
        "store_find_best_match(store, target, candidate_indices)",
        "store_filter_middle(store, target_cycle, skip_first, skip_last)",
        "store_set_opd(store, target_cycle, combos)",
        "store_clear_opd(store)",
        "store_combos_for_state(store, state, target_cycle)",
        "store_to_dataframe(store)",
        "store_reconstruct_path(store, bridge_states, target_state, target_cycle, target_combo)",
        "store_analyze_combos(store, top_combos, start_state, k, cycle_val)",
        "store_analyze_combos_gpu(store, top_combos, start_state, k, cycle_val)",
        "store_clear(store)",
        "store_collect_ops(store, target_cycle, target_combo, end_step)",
        "state_store_indices_for_cycle(xp, target_cycle)",
        "Graph Metrics",
        "cayley_bfs_full(start_state, k, moves = c(\"L\", \"R\", \"X\"))",
        "cayley_graph_diameter(start_state, k, moves, method = c(\"all_pairs\", \"from_start\"), max_pairs = Inf, verbose = FALSE)",
        "Celestial Coordinates",
        "convert_LRX_to_celestial(nL, nR, nX)",
        "calculate_angular_distance_z(result1, result2)",
        "calculate_midpoint_z(coords1, coords2)",
        "find_closest_to_coords(reachable_states, target_coords, v_cols)",
        "GPU Acceleration (optional, requires ggmlR)",
        "cayley_gpu_available()",
        "cayley_gpu_init(device = 0, force = FALSE)",
        "cayley_gpu_status()",
        "cayley_gpu_free()",
        "apply_operations_batch_gpu(states_matrix, operations, k)",
        "manhattan_distance_matrix_gpu(states1, states2, batch_size = 256)",
        "calculate_differences_gpu(start_state, states_matrix) (internal)",
        "build_permutation_matrix(op, n, k) (internal)",
        "compose_permutation_matrix(operations, n, k) (internal)",
        "Utilities",
        "convert_digits(s)",
        "generate_state(n, k, n_moves, moves, max_attempts)",
        "generate_unique_states_df(n, n_rows)",
        "has_data_table() (internal)",
        "Intersection Processing (internal)",
        "reconstruct_full_path(reachable_states, start_state, target_state, target_cycle, target_combo, v_cols)",
        "process_start_intersection(intersection_state, reachable_states_final, bridge_states_final, final_index, v_cols)",
        "process_final_intersection(intersection_state, reachable_states_start, bridge_states_start, start_index, v_cols)",
        "process_intermediate_intersection(intersection_state, reachable_states_start, reachable_states_final, bridge_states_start, bridge_states_final, start_index, final_index, v_cols)",
        "State Search",
        "find_combination_in_states(reachable_states_start, search_state)"
      ],
      "created": "2026-07-24 13:06:44",
      "modified": "2026-07-24 13:06:44",
      "commits": 1
    },
    {
      "source": "landmark-geometry.Rmd",
      "filename": "landmark-geometry.html",
      "title": "Landmark States and the Solid They Span",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Landmark states",
        "Rotations are free",
        "2. Distances",
        "Why not human_algorithm()",
        "3. Picking six pairs",
        "4. Where a landmark sits",
        "5. The solid",
        "Results",
        "What this does and does not establish",
        "Running it"
      ],
      "created": "2026-07-27 22:10:45",
      "modified": "2026-07-27 22:10:45",
      "commits": 1
    },
    {
      "source": "neural-solvers.Rmd",
      "filename": "neural-solvers.html",
      "title": "Neural Solvers",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Training data: generate_walk()",
        "Learning without labels: autodidactic iteration",
        "Build the networks",
        "Train",
        "Save, load, train further",
        "Solving",
        "Measuring a solver",
        "Q-models: the example scripts"
      ],
      "created": "2026-10-16 13:31:14",
      "modified": "2026-10-16 13:31:14",
      "commits": 1
    },
    {
      "source": "permutation-groups.Rmd",
      "filename": "permutation-groups.html",
      "title": "Permutation Groups",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Two built-in puzzles",
        "Applying moves",
        "Order of a word",
        "A puzzle of your own",
        "Random states",
        "Subgroups",
        "Old calls still work"
      ],
      "created": "2026-10-16 13:31:14",
      "modified": "2026-10-16 13:31:14",
      "commits": 1
    },
    {
      "source": "human-algorithm.Rmd",
      "filename": "human-algorithm.html",
      "title": "Solving Top Spin by Hand",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Notation",
        "Phase 1: build 1…12",
        "Why stop at 12 rather than 16",
        "Phase 2: sort the eight-tile tail (13…20)",
        "Sequence A",
        "Sequence B",
        "Parity: why it sometimes refuses to finish",
        "Finishing",
        "Differences from the common description",
        "Scope"
      ],
      "created": "2026-07-24 13:06:44",
      "modified": "2026-07-24 13:06:44",
      "commits": 1
    },
    {
      "source": "cube-4x4.Rmd",
      "filename": "cube-4x4.html",
      "title": "The 4x4x4 Cube",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Moves",
        "Reduction",
        "cube_solve4(): always finishes",
        "cube_kociemba4(): short, but not always",
        "cube_solve4_cascade(): the best of both",
        "Santa 2023 notation"
      ],
      "created": "2026-10-16 13:31:14",
      "modified": "2026-10-16 13:31:14",
      "commits": 1
    },
    {
      "source": "rubiks-cube.Rmd",
      "filename": "rubiks-cube.html",
      "title": "The Rubik's Cube",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Stickers and moves",
        "Colours",
        "A scramble",
        "Five solvers",
        "Stages",
        "Kociemba",
        "Other sizes"
      ],
      "created": "2026-10-16 13:31:14",
      "modified": "2026-10-16 13:31:14",
      "commits": 1
    }
  ],
  "_score": 5.690196080028514,
  "_indexed": true,
  "_nocasepkg": "cayleyr",
  "_universes": [
    "zabis13"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:41.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/ad80a7866a3bfb6b09b4a908e08f3a3933480c7976b031a745128c11e21820ff",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:55.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/ed1fb4750199234c1ba079bbd16e1d635352e55136a88ee7cf90f5f7f1290cd7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:40.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/f461ac99ce78c3aee825b5a8dd518010383a987bb13bd9ef70df16de8da3bff0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-16T17:51:06.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/29e8cdf7a357843c7864dd0bb28f18329112e3ed25db960118254955b1b9140d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-10-16T18:21:05.000Z",
      "arch": "aarch64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/983a64d731a30dfecb6bcb86da96aa4f113dd44a3db58ed9894f200f26a5ebd2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-10-16T18:21:27.000Z",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/baab9ff14ec482379258a520edf2a9804333d376c95fd54f14ed8b7582fa7a65",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-10-16T18:08:41.000Z",
      "arch": "aarch64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/74fd4f7b9c988627a55a695c6b301781b0a6dfefef1cd8843df4075897b5fabd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-10-16T18:04:37.000Z",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/4f4a691b3319bad36bac383d403a70ed95376def15e72c375711df08dd17ba7e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:46.000Z",
      "arch": "emscripten",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/939d9e9b687ddcd3812ac85c1afedc9257d97e17473ddc9e0ea9c1019dfe113a",
      "status": "success",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-16T17:52:59.000Z",
      "arch": "aarch64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/36da15df1e3e7ca5b03f2cc2ff5d09d1170a29ff2f6978abd8b678065327060e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:19.000Z",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/27bf43096d450c905d4839980aa22f200f5f6c008fab33b94761e1fd3a002da6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:12.000Z",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/6514b48c8ccb3f8f8f54749f3b20335d714d228d9934c6764c837bcbd90235fe",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-16T17:52:16.000Z",
      "arch": "aarch64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/1f0136adf89a890a1ba74794263fa5ee75ecb1a767ab8957045ec8ce91872a87",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-16T17:50:51.000Z",
      "arch": "x86_64",
      "commit": "8da1c75d2da91badd8af7f3aa55912386713f6ae",
      "fileid": "https://r2.ropensci.org/1a4acee20afd859bd4dfbe342cbf7424d8dfb63d79223b7a6cbf79901ba30b27",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/38941896005"
    }
  ]
}