• Welcome to the Speedsolving.com, home of the web's largest puzzle community!
    You are currently viewing our forum as a guest which gives you limited access to join discussions and access our other features.

    Registration is fast, simple and absolutely free so please, join our community of 40,000+ people from around the world today!

    If you are already a member, simply login to hide this message and begin participating in the community!

alg.cubing.net

Lucas Garron

Administrator
Joined
Jul 6, 2007
Messages
3,718
Location
California
WCA
2006GARR01
YouTube
Visit Channel
hi, Lucas, Thank you so much for this awesome job. I have been using it for a couple of month.
I have a few suggestions and issues to the project. All my comments are based on the current webpage on alg.cubing.net
Thanks! It seems you made an account just to post about this, so I appreciate you taking the time.

(1) parameter in URL: please add speed and hint sticker.
I think I've talked about this earlier in the thread. For the time being, I believe this should be a (persistent) *user* option.

I can't think of many cases where it's important to be able to specify this in the URL. In some cases (e.g. PLLs), perhaps it might be sensible to use a default based on other parameters, but in general I think a user option is still the best.

(2) Let users have an interface to define the stage, through a file or through a URL parameter like stage=111111111222222222333333333444444444555555555666666666. So that we can demonstrate algs of cross etc. For larger cubes, we can do it through a text file.
(3) when I change the color scheme to custom and type in my color scheme. it does not change anything.

Unfortunately, color schemes are (the only thing that) don't work properly yet.

I do want to support this, but I also want something that scales to different cube sizes and puzzles. Roofpig's Cubexps are a start, but I haven't had time to work on this.

(4) can you add a move like SR in superset ENG notation. SR=R+L' SU=U+D' etc, if letter S is used for slice move. we can do another letter like Q. or if two move is included in {} and they do not conflict you can let them move together.

I want to keep things as simple as possible, so the only notation right now is SiGN (with wide turns).
I've considered adding slice turns like Rs (or even antislice turns Ra), but these are used infrequently.

However, I am considering your last suggestion with parentheses: (R L') would animate as one move by default.
 

Christopher Mowla

Premium Member
Joined
Sep 17, 2009
Messages
1,184
Location
Earth
YouTube
Visit Channel
Hey Lucas,

I was just wondering if a button for "remove comments" can be added.

That is, once the button is clicked, alg.cubing.net will clear all comments on every line of the inputted algorithm string.
 

Renslay

Member
Joined
Aug 1, 2011
Messages
1,716
Location
Hungary
WCA
2005HANT01
YouTube
Visit Channel
Hey Lucas,

I was just wondering if a button for "remove comments" can be added.

That is, once the button is clicked, alg.cubing.net will clear all comments on every line of the inputted algorithm string.

I like the idea.

Also: deleting not just the comments, but every gibberish the site cannot handle.
For example, lot of people write the length of the segments without slashes, something like this:
U R F2 B R (5)
R U R' U2 R U2 R' (7)
L' U2 L (3)
...
and so on. Deleting those one by one can be a bit frustrating.
 

Lucas Garron

Administrator
Joined
Jul 6, 2007
Messages
3,718
Location
California
WCA
2006GARR01
YouTube
Visit Channel
I was just wondering if a button for "remove comments" can be added.

Done.

Also: deleting not just the comments, but every gibberish the site cannot handle.

Unfortunately, I don't know a magical way to do this. I'd rather do transformations that can be exactly defined.
However, I *could* show the location of the first error, which I plan to implement some time.

In your example, the first closing parenthesis would actually be the first invalid character, because "(5" could actually be part of a valid alg, e.g. "(5R)".
 

Christopher Mowla

Premium Member
Joined
Sep 17, 2009
Messages
1,184
Location
Earth
YouTube
Visit Channel
Bug report.

Try the simplify feature on the move sequence " 2L L' ". It deletes them when it should obviously not make any change. This is the only error I know of regarding move cancelling, but I guess it wouldn't hurt to check all related possibilities.
 
Last edited:

Lucas Garron

Administrator
Joined
Jul 6, 2007
Messages
3,718
Location
California
WCA
2006GARR01
YouTube
Visit Channel
Bug report.

Try the simplify feature on the move sequence " 2L L' ". It deletes them when it should obviously not make any change. This is the only error I know of regarding move cancelling, but I guess it wouldn't hurt to check all related possibilities.

Good catch! The simplify function assumes an older version of the parsed alg format.
The resulting behaviour is simply incorrect, so I'll fix it right now.

EDIT: Fixed.
 
Last edited:

Stefan

Member
Joined
May 7, 2006
Messages
7,280
WCA
2003POCH01
YouTube
Visit Channel
I'm afraid I can't see the analogy with your example.
I have specified STM. Is R2 L2 2 STM as well?
Also, I may not be as smart as you, but I'm sure I can count to 2.

It counts the moves, not some possible replacement for them. Maybe a better analogy would have been R R', which is correctly counted as 2 moves in every metric.

R2 is one move, L2 is a second move. You did *not* write M2 (and that doesn't even have the same effect, as it's off by a cube rotation).

You even said it yourself: "written as 2 outer layer moves".
 
Last edited:

porkynator

Member
Joined
Oct 27, 2010
Messages
1,322
Location
Belluno, Italy
WCA
2011TRON02
YouTube
Visit Channel
It counts the moves, not some possible replacement for them. Maybe a better analogy would have been R R', which is correctly counted as 2 moves in every metric.

R2 is one move, L2 is a second move. You did *not* write M2 (and that doesn't even have the same effect, as it's off by a cube rotation).

You even said it yourself: "written as 2 outer layer moves".

That's a better reply, thanks.
I was expecting a different behaviour because I have used it a few times for posting solutions in The "Example Solve" Game: sometimes I try corners first solving focusing on HTM efficiency, but after writing the solution down I would also like to know how long the solution is in STM (but cancelling R2 L2 into M2, for example).
 

Stefan

Member
Joined
May 7, 2006
Messages
7,280
WCA
2003POCH01
YouTube
Visit Channel

Lucas Garron

Administrator
Joined
Jul 6, 2007
Messages
3,718
Location
California
WCA
2006GARR01
YouTube
Visit Channel
It counts the moves, not some possible replacement for them.
I'd consider it wrong for the program to do automatic "canceling" there, but it could be offered as another "simplify" functionality.

Exactly my sentiments. I believe that metrics should be context-free: you count up each move, double everything in a commutator, etc. But nothing should depend on other parts of the algorithm that you're not looking at. This is easier because it leads to fewer subjective disagreements, and is easy to understand/implement in code.

For example, this allows me to calculate the move count of an alg very easily and efficiently, no matter how many nested conjugates/commutator/move groups there are.
Some day, alg.cubing.net could easily support algs that have nested conjgates and commutators with millions of total moves. The alg parser and the move counter would have no problem with this (but the animation needs to be updated).

In addition R2 L2, I can think of many algs that have a *single* canceling slice, let alone a whole bunch on the same axis:
[R, U] [U, R]
R2 U2 U U R
R x l'
(R U)2 U' L
[R U R2, R U R']
[R2: F2] x2 [M D2, L2]'

I think it would be a bad idea to try to define a clever way to calculate the "most efficient" move count for each of these, and then insist that we should use this by default. As Stefan suggests, the move count of the alg should be the total of all the moves *as written*. If you want to show that an alg has a lower move count when you write it another way, write it that other way.

I actually take this to an extreme in one particular case: 3r counts as 1 move on 3x3x3. While I was originally leaning towards counting this as 0 moves (except for ETM), I think it's fair to call this 1 move on every cube size. This has the benefit that *all* algs have the same metrics on all cube sizes, and that more of the metrics make sense if we move to other puzzles (teraminx?). If you mean a rotation, you should write it as a *semantic* rotation (x), not as a wide turn.


That said, I'd be happy to add a button to alg.cubing.net for "minimizing" algs in particular metrics.
I don't have time, but if Stefan or anyone else wants to implement this, alg.js should make it easier to do this. (It would also be a lot more robust.)
 

primarycuber

Member
Joined
Aug 22, 2014
Messages
49
Question: is there some special notation for 4x4 for turning only the inner slices (r/l)? r and l seem to be working like Rw and Lw.
Do I have to write lL' for example or is there some other way?
 

Christopher Mowla

Premium Member
Joined
Sep 17, 2009
Messages
1,184
Location
Earth
YouTube
Visit Channel
Hey Lucas,

I appreciate that you have started this project and have considered my suggestions in the past. :)

I have yet another suggestion. I'm not sure if this was intentional or not, but did you intend your inverse function to do Inverse["F2"] = "F2'" instead of simply "F2"?

I'm not asking you to change this, but, for the use of Cube Explorer, it doesn't recognize "F2'" as F2, for example.

Therefore, if only it makes no difference to you, then could you just simply add a string replace command "2'"->"2" at the end of your inverse function?
 
Top