{
  "_id": "6ad6b2c569e274306bae718a",
  "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",
  "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",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-10-20 00:07:59 UTC",
    "User": "root"
  },
  "Author": "Yuri Baramykov [aut, cre] (ORCID:\n<https://orcid.org/0009-0000-7627-4217>), Lucas Garron [ctb,\ncph] (twips search machinery in src/kociemba_core.h,\nsrc/kociemba4.h), cubing.js authors [cph] (twips,\nhttps://github.com/cubing/twips)",
  "Maintainer": "Yuri Baramykov <lbsbmsu@mail.ru>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-10-19 12:20:08 UTC",
  "RemoteUrl": "https://github.com/cran/cayleyR",
  "RemoteRef": "HEAD",
  "RemoteSha": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
  "_user": "cran",
  "_type": "src",
  "_file": "cayleyR_0.3.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/aed832485be9e80406e698b00fbf3a0b095bba47e68987f09ea8f8b4cfbff785",
  "_filesize": 1497999,
  "_sha256": "aed832485be9e80406e698b00fbf3a0b095bba47e68987f09ea8f8b4cfbff785",
  "_expires": "2027-01-28T00:16:02.000Z",
  "_created": "2026-10-20T00:07:59.000Z",
  "_published": "2026-10-20T00:16:04.954Z",
  "_upstream": "https://github.com/cran/cayleyR",
  "_status": "success",
  "_maintainer": {
    "name": "Yuri Baramykov",
    "email": "lbsbmsu@mail.ru",
    "login": "zabis13",
    "description": "Yuri Baramykov",
    "uuid": 77751222,
    "orcid": "0009-0000-7627-4217"
  },
  "_jobs": [
    {
      "job": 118378539504,
      "time": 188,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12230968487"
    },
    {
      "job": 118378539691,
      "time": 225,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12231272305"
    },
    {
      "job": 118378539597,
      "time": 186,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12230184842"
    },
    {
      "job": 118378539629,
      "time": 189,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12230772985"
    },
    {
      "job": 118376590597,
      "time": 343,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12230628702"
    },
    {
      "job": 118378539421,
      "time": 119,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12231535287"
    },
    {
      "job": 118378539668,
      "time": 322,
      "config": "windows-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12231610101"
    },
    {
      "job": 118378539635,
      "time": 259,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12230109377"
    },
    {
      "job": 118378539696,
      "time": 367,
      "config": "windows-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12230554792"
    },
    {
      "job": 118378539523,
      "time": 252,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12231212386"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359",
  "_commit": {
    "id": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
    "author": "Yuri Baramykov <lbsbmsu@mail.ru>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.3.0\n",
    "time": 1792412408
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_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": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-48",
      "n": 1
    },
    {
      "week": "2026-09",
      "n": 1
    },
    {
      "week": "2026-31",
      "n": 1
    },
    {
      "week": "2026-43",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.1.0",
      "date": "2025-11-25"
    },
    {
      "name": "0.2.1",
      "date": "2026-03-01"
    },
    {
      "name": "0.2.6",
      "date": "2026-07-29"
    },
    {
      "name": "0.3.0",
      "date": "2026-10-19"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "zabis13",
      "count": 4,
      "uuid": 77751222
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 634,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 385,
    "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/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/zabis13/cayleyr",
  "_realowner": "zabis13",
  "_cranurl": false,
  "_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"
    },
    {
      "version": "0.3.0",
      "date": "2026-10-19"
    }
  ],
  "_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/cran/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-29 21:50:07",
      "modified": "2026-07-29 21:50:07",
      "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-29 21:50:07",
      "modified": "2026-07-29 21:50:07",
      "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-19 12:20:08",
      "modified": "2026-10-19 12:20:08",
      "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-19 12:20:08",
      "modified": "2026-10-19 12:20:08",
      "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-29 21:50:07",
      "modified": "2026-07-29 21:50:07",
      "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-19 12:20:08",
      "modified": "2026-10-19 12:20:08",
      "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-19 12:20:08",
      "modified": "2026-10-19 12:20:08",
      "commits": 1
    }
  ],
  "_score": 4.146128035678238,
  "_indexed": false,
  "_nocasepkg": "cayleyr",
  "_universes": [
    "cran"
  ],
  "_indexurl": "https://zabis13.r-universe.dev/cayleyR",
  "_previous": "0.2.6",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-20T00:10:57.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/ab00a030cb761ced1369556ba5959aa0e3300f9ba736e4dd97c78ea60226db02",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-20T00:11:23.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/53eb47a4c56b6facaaff9cd1a56440f17bd30ade33fb1df5c12868092096b2f9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-20T00:10:59.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/573764f158f54a17f0a1cba5d02353e2b85f98a2cd8d6e8fe9b01754ebc774bf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-10-20T00:11:18.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/5f021ee06842440de3182b49bdcb10bd58401ecf73a10404cd57ca31a4be0943",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.3.0",
      "date": "2026-10-20T00:11:10.000Z",
      "arch": "emscripten",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/c67b09beed25563d0bda5645fbf913b1a1bc0fe9025f6554ba19d9456e3fb1d2",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-20T00:12:13.000Z",
      "arch": "aarch64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/e06c5951a92882eb5c689c0311d08c120a8b6388c51f4719002f8ec65835c632",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-20T00:10:45.000Z",
      "arch": "x86_64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/4b4433ea6ba7988197283f62e83f203f2a35649796c806aa87366196c98c856f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-20T00:13:12.000Z",
      "arch": "aarch64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/520226fc37fc7e5f212368fb144379191adf5bd9806c6dc1dc6965dc2b2b773e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-10-20T00:10:45.000Z",
      "arch": "x86_64",
      "commit": "eec42c4ca1f01cf4b80328faf6f2aebac202aff3",
      "fileid": "https://r2.ropensci.org/d0535afebd665af25c8b05482b1fe4fef04839e8b70de2870a02427317bd10dd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39345341359"
    }
  ]
}