Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comprehensive clock notation #280

Open
lgarron opened this issue Jun 26, 2023 · 2 comments
Open

Comprehensive clock notation #280

lgarron opened this issue Jun 26, 2023 · 2 comments

Comments

@lgarron
Copy link
Member

lgarron commented Jun 26, 2023

The following is what I have currently implemented. I'll be looking to get community feedback:


There are 38 moves that cover all possible physical moves, generalizing the 10 from WCA clock notation.

Each of the 1/2/3-pin moves has 4 symmetric variants. To get from the reference move to the other 3:

  • Swap U with D to mirror the move vertically.
  • Swap L with R to mirror the move horizontally.
  • Perform both of the preceding swaps to rotate the move by z2.
Type Reference F pins B pins Count
0-pin 🔘🔘
🔘🔘
N/A B1+ 1
1-pin ⚫️🔘
🔘🔘
UL1+ (WCA) BDRw1+ 2×4
Adjacent 2-pin ⚫️⚫️
🔘🔘
UL+ (WCA) BD1+ 2×4
Diagonal 2-pin ⚫️🔘
🔘⚫️
MUL1+ BMUR1+ 2×4
3-pin ⚫️⚫️
⚫️🔘
ULw1+ BDR1+ 2×4
4-pin ⚫️⚫️
⚫️⚫️
ALL1+ (WCA), F1+ N/A 2
Axis rotations N/A N/A N/A 3 (x2, y2 (WCA), z)

Live demo:
https://alpha.twizzle.net/edit/?puzzle=clock&alg=%2F%2F+1-pin%0AUL1%2B+UR1%2B+DR1%2B+DL1%2B%0ABUL1%2B+BUR1%2B+BDR1%2B+BDL1%2B%0A%0A%2F%2F+Adjacent+2-pin%0AU1%2B+R1%2B+D1%2B+L1%2B%0ABU1%2B+BR1%2B+BD1%2B+BL1%2B%0A%0A%2F%2F+3-pin%0AULw1%2B+URw1%2B+DRw1%2B+DLw1%2B%0ABULw1%2B+BURw1%2B+BDRw1%2B+BDLw1%2B%0A%0A%2F%2F+Diagonal+2-pin%0AMUL1%2B+MUR1%2B+MDR1%2B+MDL1%2B%0ABMUL1%2B+BMUR1%2B+BMDR1%2B+BMDL1%2B%0A%0A%2F%2F+Entire+side%0AALL1%2B+F1%2B+B1%2B%0A%0A%2F%2F+Rotations%0Ax2+y2+z&title=Clock+notation+demo+%282023-06-26%29

This has the following consistent conventions:

  • Every move contains one peg name at its core, and you can always perform the move by turning the corner dial next to that peg (although most moves allow you to move other dials as well).
  • The six face names and three rotation names correspond to the same sides as on 3x3x3, as a generalization of how WCA notation does.
  • The B prefix mirrors a move from front to back. Therefore, the back pins are rotated if and only if the move starts with B.
    • I have a concern that people might instead guess this means "do this move as if you were looking at the back". I'm hoping this is not so confusing on a physical clock.
  • The w ("wide") suffix is used to extend from a pin to its adjacent pins, as an analogy to wide moves on cubes and similar.
  • The M prefix is used to indicate a (diagonal) "slice".
    • Arguably, it would make sense to use 2DL1+ = MUL1+ as an analogy to "DLw without DL", but I think this is less intuitive and it would be the only use of numerical prefixes. It might be worth using for higher-order clock puzzles, though.

Notes:

  • The diagonal 2-pin moves each have two names due to symmetry. For example: MUL1+ = MDR1+.
  • I'd like to add v-suffix rotations like Fv = z and Rv2 = x2 to match other puzzles in cubing.js. However, this has the potential to be confusing, since z is actually more like F3+ than F1+ and should perhaps be Fv3+. (I also can't think of another puzzle where Fv does not include "F" as part of it. Consider that F1+ moves dials, so it might be reasonable to conclude that a rotation based on "F" should also include the same dial move as part of it.)
  • This does not use the community convention for lowercase move names: ul1+ = DRw1+. This is because the notation should be as unambiguous as possible to a beginner or someone who hasn't seen it in a while (which was the main reason we developed the current WCA notation in the first place). I find it extremely plausible for someone to remember "oh right, ul1+ is like UL1+ but the lowercase means to do it with the back instead" and perform it as ul1+ = BUL1+ (or other possible guesses). The explicit use of B to indicate the back of the puzzle is less ambiguous than lowercase letters.
    • However, I've avoided using lowercase u, r, d, and l at all. This leaves open the door for implementing such moves without contradicting any of the above.
@lgarron lgarron changed the title Clock notation Comprehensive clock notation Jun 26, 2023
@lgarron
Copy link
Member Author

lgarron commented Jun 26, 2023

lgarron added a commit that referenced this issue Jun 26, 2023
Release notes:

- [puzzles] Clock changes:
  - Add frame rotations (`z` and `x2`).
  - SVG includes 12 o'clock marks and a back side label.
  - 3-pin, diagonal, and back moves:

| Type           | Reference | F pins               |B pins    | Count                     |
|----------------|-----------|----------------------|----------|---------------------------|
| 0-pin          | bb/bb     | N/A                  | `B1+`    | 1                         |
| 1-pin          | Fb/bb     | `UL1+` (WCA)         | `BDRw1+` | 2×4                       |
| Adjacent 2-pin | FF/bb     | `UL+` (WCA)          | `BD1+`   | 2×4                       |
| Diagonal 2-pin | Fb/bF     | `MUL1+`              | `BMUR1+` | 2×4                       |
| 3-pin          | FF/Fb     | `ULw1+`              | `BDR1+`  | 2×4                       |
| 4-pin          | FF/FF     | `ALL1+` (WCA), `F1+` | N/A      | 2                         |
| Axis rotations | N/A       | N/A                  | N/A      | 3 (`x2`, `y2` (WCA), `z`) |

See #280 for more details.
@lgarron
Copy link
Member Author

lgarron commented Jun 28, 2023

From talking to Tommy Cherry, it sounds like there is value in a way to denote "up" and "down" moves together. This feels a lot like Square-1, and shares the notation.

For example: (UL1+ BDRw2+).

clock  (UL1+ BDRw2+)

This could be written as (1, 2) if the pins are clear without context, but I'm strongly against that. However, we could specify pins like this: UL(1, 2).

I'm still very reluctant to introduce this, as:

  • It adds new syntax to the grammar, which means more pedagogical burden, more code paths (for both cubing.js, cubing.rs, and anyone implementing a fully compatible parser), and more potential bugs.
  • It looks like function application, which is deceptive.
  • It would introduce clock dial moves without + or -, which is inconsistent.

But I can't deny that it would be more elegant. Maybe we can adapt this at some point if we move to generalizations of clock.

Another consideration from Tommy is that it would also be useful to indicate which dial was actually turned, which is useful for demonstrating full solving technique to others as well as more accurately representing reconstructions. I don't have a great idea for this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant