{
  "_id": "6a637a8baecbde9870bb2bc2",
  "Package": "cayleyR",
  "Type": "Package",
  "Title": "Cayley Graph Analysis for Permutation Puzzles",
  "Version": "0.2.5",
  "Authors@R": "c(\nperson(\n\"Yuri\", \"Baramykov\",\nemail = \"lbsbmsu@mail.ru\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0009-0000-7627-4217\")\n)\n)",
  "Description": "Implements algorithms for analyzing Cayley graphs of\npermutation groups for the TopSpin puzzle. Provides methods for\ncycle detection, state space exploration and finding optimal\noperation sequences in permutation groups generated by shift\nand reverse operations. The method Iterative Cycle Intersection\n(ICI) is described in Yuri Baramykov (2026) <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-07-24 13:06:44 UTC",
  "RemoteUrl": "https://github.com/zabis13/cayleyr",
  "RemoteRef": "HEAD",
  "RemoteSha": "39cf8a4b563edd438b8593d785f132111a6c96c8",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-07-24 14:39:40 UTC",
    "User": "root"
  },
  "Author": "Yuri Baramykov [aut, cre] (ORCID:\n<https://orcid.org/0009-0000-7627-4217>)",
  "Maintainer": "Yuri Baramykov <lbsbmsu@mail.ru>",
  "_user": "zabis13",
  "_type": "src",
  "_file": "cayleyR_0.2.5.tar.gz",
  "_fileid": "https://r2.ropensci.org/1c7848b516a992608f2a8d4956d24551a58d859540ad35e645215bcec7da2f71",
  "_filesize": 391584,
  "_sha256": "1c7848b516a992608f2a8d4956d24551a58d859540ad35e645215bcec7da2f71",
  "_expires": "2026-11-01T14:45:29.000Z",
  "_created": "2026-07-24T14:39:40.000Z",
  "_published": "2026-07-24T14:45:31.368Z",
  "_jobs": [
    {
      "job": 89510167719,
      "time": 161,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8600072218"
    },
    {
      "job": 89510167836,
      "time": 178,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8600080405"
    },
    {
      "job": 89510167673,
      "time": 158,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8600071182"
    },
    {
      "job": 89510167691,
      "time": 179,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8600081223"
    },
    {
      "job": 89510167905,
      "time": 112,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8600047611"
    },
    {
      "job": 89510167863,
      "time": 268,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8600123821"
    },
    {
      "job": 89510167790,
      "time": 180,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8600082004"
    },
    {
      "job": 89510167839,
      "time": 276,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8600128184"
    },
    {
      "job": 89509028535,
      "time": 280,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8599989111"
    },
    {
      "job": 89510167574,
      "time": 129,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8600056111"
    },
    {
      "job": 89510167756,
      "time": 167,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8600075440"
    },
    {
      "job": 89510167728,
      "time": 145,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8600063397"
    },
    {
      "job": 89510167815,
      "time": 204,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8600093728"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701",
  "_status": "success",
  "_upstream": "https://github.com/zabis13/cayleyr",
  "_commit": {
    "id": "39cf8a4b563edd438b8593d785f132111a6c96c8",
    "author": "Ваше Имя <lbsbmsu@mail.ru>",
    "committer": "Ваше Имя <lbsbmsu@mail.ru>",
    "message": "Add R package structure and dependencies\n",
    "time": 1784898404
  },
  "_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": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "ggmlR",
      "role": "Suggests"
    },
    {
      "package": "data.table",
      "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": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2025-11-12"
    }
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "zabis13",
      "count": 38,
      "uuid": 77751222
    }
  ],
  "_userbio": {
    "uuid": 77751222,
    "type": "user",
    "name": "Yuri",
    "followers": 9,
    "description": "Yuri Baramykov"
  },
  "_downloads": {
    "count": 203,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/cayleyR"
  },
  "_devurl": "https://github.com/zabis13/cayleyr",
  "_searchresults": 0,
  "_topics": [
    "cpp",
    "openmp"
  ],
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/cayleyR.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE",
    "manual.pdf"
  ],
  "_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"
    }
  ],
  "_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",
    "create_state_store",
    "cycle_shortcut",
    "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",
    "get_reachable_states",
    "get_reachable_states_light",
    "human_algorithm",
    "human_algorithm_to",
    "human_phase1_navigate",
    "human_phase1_rank",
    "invert_path",
    "manhattan_distance",
    "manhattan_distance_matrix_gpu",
    "openmp_threads",
    "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_lookup",
    "store_reconstruct_path",
    "store_set_opd",
    "store_to_dataframe",
    "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": "create_state_store",
      "title": "Create a New State Store",
      "topics": [
        "create_state_store"
      ]
    },
    {
      "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": "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": "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": "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": "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": "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_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": "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": "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
    }
  ],
  "_score": 4.903089986991944,
  "_indexed": true,
  "_nocasepkg": "cayleyr",
  "_universes": [
    "zabis13"
  ],
  "_previous": "0.2.4",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:31.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/b51bc31d0c1b59ea745af62ec81b16bd397cbb666c8efde0dbdd6db59f105d4c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:42.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/2c5d714f6a6866946673d8353e3e6b8ebadddb03754406fca1b794545e3ad056",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:27.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/32c2e7bad7fed7b877337dfa7bf6b375620e2cf57ce18a370e0662a56df44611",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:43.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/56adfe9b0725dddd5bb31ee1ee4cd45cec823b6b6df6acc2cc17260c3c014e5d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.5",
      "date": "2026-07-24T14:41:48.000Z",
      "arch": "aarch64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/3c7af1896fd45a9eeb9e758aa1f672800d5d66134a5899bf3710580fd6610d35",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.5",
      "date": "2026-07-24T14:43:35.000Z",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/a80ec7ae45a4d3fc77540b228501c68bdc52917af9b1416cfb6b2a373047f481",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:18.000Z",
      "arch": "aarch64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/186dc1c847b876349c8ac38b91bf468aff5c03cfd9d618b3b5d616f549a9b379",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.5",
      "date": "2026-07-24T14:43:26.000Z",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/48ef52e2a74e95222fa9e09c3c221d1eb4dc09a28b2596945dbcc966e1637efb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:18.000Z",
      "arch": "emscripten",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/ba8cd1b118f30fff5044e98f479ecff2b1f89c712e28052a94d9134a15e61e3b",
      "status": "success",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.5",
      "date": "2026-07-24T14:41:31.000Z",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/97237d7fd005e0257fc2271793cd1e1165006d19e55c93c68e50ba9b22c982cb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.5",
      "date": "2026-07-24T14:41:28.000Z",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/0bb8c852b18a39b0db024cccfff9d51c502eb2f11865f85a865945d40342387a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.5",
      "date": "2026-07-24T14:42:19.000Z",
      "arch": "x86_64",
      "commit": "39cf8a4b563edd438b8593d785f132111a6c96c8",
      "fileid": "https://r2.ropensci.org/b259dce04bddba3dfa7be874c4b08ff6d7c2c60a0dc57814f3added4c095d5ae",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/zabis13/actions/runs/30101667701"
    }
  ]
}