cubing / cubing.js

🛠 A library for displaying and working with twisty puzzles. Also currently home to the code for Twizzle.
https://js.cubing.net/cubing/
GNU General Public License v3.0
232 stars 42 forks source link

[cubing.js issue] Megaminx scrambles are not consistent with WCA/TNoodle scrambles #293

Closed Odder closed 8 months ago

Odder commented 9 months ago

Steps to reproduce the issue

  1. Go to https://scramble.cubing.net/
  2. Change the puzzle to Megaminx

Observed behaviour

The U-turns are independent from the last D on each lineof

🖼 Screenshots

image

Expected behaviour

U turns to be dependent on the last D on each line.

✅ Valid combinations: D++ U D-- U'

🚫 Invalid combinations: D++ U' D-- U

Environment

Anywhere

Additional info

https://github.com/cubing/cubing.js/blob/504211bab913103e53c2d991421e43c7ccbf3e01/src/cubing/search/inside/solve/puzzles/wca-minx.ts#L19

The current WCA scrambling format (SS post, links to WCA and pochmann website in here) consists only of double turns and y rotations in the "opposite" direction than your last move. As an optimisation the WCA scrambles uses U'/U to denote the y/y' rotation (e.g. D-- y = D++ U)

TNoodle implementation: https://github.com/thewca/tnoodle-lib/blob/88cff09e43f5d00168d1c562761ad14908b815c6/scrambles/src/main/java/org/worldcubeassociation/tnoodle/puzzle/MegaminxPuzzle.java#L329-L332

rokicki commented 9 months ago

I can find nothing in the regulations, the forum posts, or Stefan's site that indicates the U move on each line should be related in any way to the previous D++/D-- move. Yes, tnoodle does use only two of the four combinations, and similarly the examples appear to have this restriction. Lucas and I discussed this long ago and did not feel this restriction was either specified, required, or desirable. Can you provide any links or support that indicate that this restriction is intended or beneficial?

On Sat, Sep 16, 2023 at 9:08 AM Oscar Roth Andersen < @.***> wrote:

Steps to reproduce the issue

  1. Go to https://scramble.cubing.net/
  2. Change the puzzle to Megaminx

Observed behaviour

The U-turns are independent from the last D on each lineof 🖼 Screenshots

[image: image] https://user-images.githubusercontent.com/1289149/268457387-cbbdde22-774d-4cf3-b557-0baded5c479a.png Expected behaviour

U turns to be dependent on the last D on each line.

✅ Valid combinations: D++ U D-- U'

🚫 Invalid combinations: D++ U' D-- U Environment

Anywhere Additional info

https://github.com/cubing/cubing.js/blob/504211bab913103e53c2d991421e43c7ccbf3e01/src/cubing/search/inside/solve/puzzles/wca-minx.ts#L19

The current WCA scrambling format (SS post, links to WCA and pochmann website in here https://www.speedsolving.com/threads/new-megaminx-scramble-notation.1603/) consists only of double turns and y rotations in the "opposite" direction than your last move. As an optimisation the WCA scrambles uses U'/U to denote the y/y' rotation (e.g. D-- y = D++ U)

TNoodle implementation:

https://github.com/thewca/tnoodle-lib/blob/88cff09e43f5d00168d1c562761ad14908b815c6/scrambles/src/main/java/org/worldcubeassociation/tnoodle/puzzle/MegaminxPuzzle.java#L329-L332

— Reply to this email directly, view it on GitHub https://github.com/cubing/cubing.js/issues/293, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAMOLS5WKPVPQIFBFDO7CJDX2XFHVANCNFSM6AAAAAA427H7EA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

--

Odder commented 9 months ago

@rokicki While I would love to dig up the the more extensive WCA thread on this topic, I just can't find it anymore. But here is Pochmann's initial proposal scattered over the internet: https://www.stefan-pochmann.info/spocc/other_stuff/tools/scramble_megaminx/ https://www.speedsolving.com/threads/new-megaminx-scramble-notation.1603/ https://www.worldcubeassociation.org/archive/forum_topics/368

While above only offers an introduction to his proposal and not the official discussion for implementing it (the thread I'm currently unable to dig up) it should give an idea that the notation Pochmann put forward back then was all double moves + rotations and the U turns were only implemented last second when the WCA adopted it.

Also, the analysis work Pochmann did back then to convince 70 moves was sufficient was based on double moves only.

I am personally not against (or for) independent U/U', but I believe Pochmann felt strongly that double moves only would reach further and fairer positions. Granted it's 70 moves, restricting the potential scramble pool in favour of better quality scrambles was a trade-off he was willing to take. Another argument for keeping it dependent is scrambling comfort; D++ U is more comfortable to do than D++ U'

I believe if you intend to change the scrambling for megaminx you will probably first need to conduct some kind of analysis to convince the community that the scramble quality will not get worse (I doubt this should be an issue)

Odder commented 9 months ago

Maybe @lgarron knows someone who can dig up the WCA forum post regarding implementing Pochmann notation for Megaminx?

Seems like the WCA forum hasn't archived this thread correctly?

Dug up the link

For 2/5-turns in general, here's a bit (starting at "Now an improvement..."): https://www.worldcubeassociation.org/forum/viewtopic.php?p=1458#p1458

lgarron commented 9 months ago

Indeed, there's nothing in the Regulations that requires the moves to be in opposite directions. We also differ from WCA scrambles in a few other ways, and 100% TNoodle parity is not a goal.

That said, I wouldn't mind changing it to match TNoodle for now if it makes a sufficient difference in ergonomics.

lgarron commented 8 months ago

We implemented this in https://github.com/cubing/twsearch/pull/38 by matching TNoodle. This is used by cubing.js as of 0fe77c2e20d4248523ef560f40332e76a9f313c9.

I still want to do some research on this, but that can go in a future issue.