adrianliaw / PyCuber

Rubik's Cube solver in Python
MIT License
199 stars 47 forks source link

Feature suggestion/request: 2x2x2 block solver #18

Open Laura-O opened 7 years ago

Laura-O commented 7 years ago

I came across PyCuber again and remembered that I planned to implement a block solver for 2x2x2 blocks which lists the shortest solutions for each of the 8 possible 2x2x2 blocks for a given scramble. The main purpose would be to practice block solving skills for FMC. It would be awesome to have such a solver in PyCuber. I will probably not have the time to implement it myself soon, so if you are looking for new ideas for improvements, this might be a good idea. 😄

dwalton76 commented 7 years ago

@Laura-O FYI I have a 2x2x2 solver here: https://github.com/dwalton76/lego-crane-cuber/blob/master/solvers/2x2x2/rubiks_2x2x2_solver.py

Laura-O commented 7 years ago

Well, I think you misunderstood that. I wasn't suggesting a 2x2x2 solver, but a 2x2x2 block solver. While a 2x2x2 solver solves only corners on a 3x3x3, a 2x2x2 block solver solves three edges and the corner adjacent to these edges.

muodov commented 7 years ago

@Laura-O Wow, that's special. I'm just curious, when it can be useful? Just for academic purposes?

Laura-O commented 7 years ago

2x2x2 blocks are the first step in the Petrus method. The method is not that popular (anymore). Today, block building is very interesting for FMC. Most FMC solves start with a 2x2x2 block, so it's an important skill to be good in building these blocks.

I don't know if you are familiar with other solvers, but there was a tool called JARCS, which was used by many FMC solvers to practice blockbuilding. Sadly, it's offline for a while now and will probably never return, so it would be awesome to have an alternative.

adrianliaw commented 7 years ago

I think I get what @Laura-O means, and this should be a new sub-package under pycuber/solver. But since I don't know much about this kind of method, it would be nice if someone could actually contribute with this :) And I'm still working on a new version of PyCuber with my spare time, so any kind of new features are going to be added after the revision. By the way, since the new version of PyCuber is going to be implemented in NumPy, so the computational stuff will have a huge speed up, and that's good for solvers involving searchings in it!