New Approach to ZZ-d

Hi fellow ZZ-users !
I'm very interested in the ZZ-d variation, so first thanks and congrats porkynator for your work on this method !
I've practised your first approach for about 2 months now and I think it's already a very decent approach (very few cases, recognition not that bad after some practise). Your second approach seems even better (lower movecount, closer to the original ZZ-d definition), but I think it can even be simplified without losing its efficiency. I indeed prefer using the following variant :

It begins exactly like yours except after having placed the DFL corner in the UBL spot, you do a L'.
This way you just have to recognise CP like in your first approach.
The algs you can use in that case are the following :

No swap on U + D corners swapped : nothing to do (yay !) / L R U' R' / L R2 U' R depending on the position of the FL edge (your Pidgey case)
Diag swap on U + D corners ok : the same as above
No swap on U + D corners ok : L R U' R2 / L U2 R / L U' R2 (your Dragonite case)
Diag swap on U + D corners swapped : the same as above
Adj swap on U + D corners ok : place the 2 swapped corners on the left and do U2 R2 / U R' / U' R (actually just your Pikachu case)
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the right.

This reduces the number of cases to 6 and the number of algs to 8 so it's much easy to learn quickly (no more difficult than porky v1 actually).
And I don't think this variation has a higher average movecount than yours. The most frequent case (adj swap) also happens to have the shortest algs (2 moves every time, AUF included). Sometimes you might do an unnecessary AUF or L move, but it's a fair price to pay in my opinion.

By the way if I'm not mistaken your Charmander case doesn't exist and IS a Bulbasaur case... At least I generated a Charmander case and it could be solved with a Bulbasaur case. (If not can you provide an example where the Bulbasaur alg doesn't work ?)

And also may I know how you generated the algs ? Just by trial and error, observing the effect of a few moves on corner permutation ? Or do you have a more efficient way of proceeding ?
I ask that because I was thinking of generating algs that solve CP + the FL pair at the same time ; sometimes after CP you are left with a really bad F2L case that takes like 10 moves to be solved, which ruins the effort to save moves that you did, and I think this could be avoided. Most of the time the best solution might be CP + solve the pair, but it might be worth it to learn algs for the few nasty ones...


Let me know what you think, if I made a mistake, if you think this is stupid or if it was already proposed somewhere else :)
 
The idea of a L' setup for easier recognition is nice, I don't know/remember if someone else has already thought of it (I didn't). Often you may need an extra U* move after the L', but it may be a good compromise between porky-v1 and v2.

I don't know what to say about the "charmander" case. I honestly don't understand what happened to make me think it wasn't a bulbasaur case (I tried the algs now, they work). I'll edit the first post :)

For the algs, I just wrote down all the possible 1 to 3 moves long ones and tried them to see what case they solved, then I chose the best ones for each case (I didn't know a better method for generating them, and with this I could get the work done within a hour or so).
 
The idea of a L' setup for easier recognition is nice, I don't know/remember if someone else has already thought of it (I didn't). Often you may need an extra U* move after the L', but it may be a good compromise between porky-v1 and v2.
Yes, I think your approach indeed saves one move or two (in the adj cases it's almost the same movecount, but in the other cases I have to do L' L... Though there might exist shortest algs for these cases, I didn't look for such algs and just adapted yours... I'll try to find better ones !). But I definitely prefer sacrificing 2 moves for the sake of recognition. The way I do ZZ-d now is :
-I finish the left block completely if it's very easy (this way I'm sure I won't end up with a crappy left block finish)
-Otherwise I place the DFL corner in the easiest possible way (either at the right place, in DFL -> porky v1, or at the "wrong" place, in DBL -> porky v1.5 :))

For the algs, I just wrote down all the possible 1 to 3 moves long ones and tried them to see what case they solved, then I chose the best ones for each case (I didn't know a better method for generating them, and with this I could get the work done within a hour or so).
Oh, ok, that's how I would have done it too. I was secretly hoping you had some special magical technique to find those algs quickly... :p
It won't be easy to generate algs for CP + last pair of the left block then. It can be done by hand to find a few shortcuts, but this will not necessarily cover all possible cases (and probably won't be worth it in most cases anyway).
Unless someone comes up with a software that does that :rolleyes:
 
Double post, but I found better algs for the "No swap on U + D corners swapped" case : (nothing to do) / R U2 R / R U R2.
(instead of (nothing to do) / L R U' R' / L R2 U' R)
Unfortunately I couldn't find 3-moves algs in R,U that solved the "No swap on U + D corners ok" case... This is now the only case for which a L move is required.

I also generated some algs to solve CP + the last pair of the left block at the same time.
I only treated the "No swap on U + D corners ok" case completely.

When the D sticker of the DFL corner (in the DBL spot) is on D :
If the FL edge is in BL do L U R U2 R2 L' U L.
Else Position the FL edge in UR (with R/U moves) and do L U' R2 L' U' L.

When the D sticker of the DFL corner (in the DBL spot) is on L :
If the FL edge is in BL do L U R' U L' U R' U L.
Else position the FL edge in FR (with R/U moves) and do L U' L' U2 R U2 L,
OR : Position the FL edge in UB (with R/U moves) and do L U2 R U2 L' U' L.

When the D sticker of the DFL corner (in the DBL spot) is on B :
If the FL edge is in BL do L U' L' U L' U R U' L2.
Else position the FL edge in FR (with R/U moves) and do L U2 L' R U2 L.

Consequence : in that case ("No swap on U + D corners ok"), CP + the end of the block can ALWAYS be done in 9 moves or less ! (not including placing the D corners of course, but this is still very nice !)

For the remaining cases, when the D sticker of the DFL corner (in the DBL spot) is on D or L, solving CP then the pair is quite efficient :
CP requires at most 3 moves and then solving the pair requires 5 or 6 moves, so the movecount for doing CP and finishing the block is no more than 9.

The other cases, when the D sticker of the DFL corner (in the DBL spot) is on B, are the trickiest ones. I couldn't find any alg shorter than 8 moves, and there are also some cases where I couldn't find anything decent... These cases result in a poor movecount (>10), so my advice is to avoid putting the DFL corner in that orientation when you first place it. (not sure if I'm clear here)
 
Last edited:
I just got a random idea for the extended porky v1 (when you place the DFL corner at its place but not necessarily oriented).
It seems quite efficient in that case to do :
-CP + solve DFL corner
-then solve the FL edge by placing it in FR and inserting it with u' R2 u (which doesn't break CP). This requires at most 5 moves and is very easy to execute (R/U/u moves).

D sticker of DFL on D :
No swap on U + D corners ok/Diag swap on U + D corners swapped : nothing to do
No swap on U + D corners swapped/Diag swap on U + D corners ok : L' U R2 U' L (classic porky v1 alg)
Adj swap on U + D corners ok : place the 2 swapped corners on the right and do L' U R U' L (classic porky v1 alg)
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the left.

D sticker of DFL on L :
No swap on U + D corners ok/Diag swap on U + D corners swapped : bring the FL edge on the U face then just solve the pair with L and U moves
No swap on U + D corners swapped/Diag swap on U + D corners ok : L' U R U R' U L
Adj swap on U + D corners ok : place the 2 swapped corners on the right and do L' U2 R' U L
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the left.

D sticker of DFL on F :
No swap on U + D corners ok/Diag swap on U + D corners swapped : bring the FL edge on the U face then just solve the pair with L and U moves
No swap on U + D corners swapped/Diag swap on U + D corners ok : L' U' R U2 L
Adj swap on U + D corners ok : place the 2 swapped corners on the front and do L' R U' R U2 L (just a R setup into the previous case)
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the back.
This approach gives an average movecount of 9.25 (5.5 + 3.75) which is really decent for such a limited number of algs.
(Worst case : 12 moves)

It's also possible to do this in "porky v1.5" (when you place the DFL corner in DBL) :

D sticker of DFL on D :
No swap on U + D corners ok/Diag swap on U + D corners swapped : L U' R2 L' U' L
No swap on U + D corners swapped/Diag swap on U + D corners ok : L U' L' U' L
Adj swap on U + D corners ok : place the 2 swapped corners on the front and do R L U' L' U' L (R setup into the previous case)
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the back.

D sticker of DFL on L :
No swap on U + D corners ok/Diag swap on U + D corners swapped : L U' R2 U' L' U L
No swap on U + D corners swapped/Diag swap on U + D corners ok : L U2 L' U L
Adj swap on U + D corners ok : place the 2 swapped corners on the front and do R L U2 L' U L (R setup into the previous case)
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the back.

D sticker of DFL on B :
No swap on U + D corners ok/Diag swap on U + D corners swapped : L U2 R L' U2 L
No swap on U + D corners swapped/Diag swap on U + D corners ok : L U' L' U2 L U L' U' L (*)
Adj swap on U + D corners ok : place the 2 swapped corners on the right and do L U' L' U R' U L
Adj swap on U + D corners swapped : the same as above except you place the swapped corners on the left.

* However here it is better to do CP with L R U' R2 / L U2 R / L U' R2 then solve the pair.
In this case the average movecount is about 10.5 (6.8 + 3.75), still decent.
 
I'm fairly new to ZZ (I'm still at the stage where I'm making rapid time improvements despite getting limited practice, and averaging a slightly sub-minute solve), though not so new to cubing, but this seems like an incredibly useful and effective method. Would somebody be willing to make a tutorial video for it?
 
I'm fairly new to ZZ (I'm still at the stage where I'm making rapid time improvements despite getting limited practice, and averaging a slightly sub-minute solve), though not so new to cubing, but this seems like an incredibly useful and effective method. Would somebody be willing to make a tutorial video for it?
If you're new to ZZ, you should probably learn Porky's original version of the method. There are fewer algs to learn and fewer cases to deal with.
 
Finally started learning this, though I probably won't finish for a while because of getting distracted with other things. Bumping to say the Pidgey, Dragonite and Machamp images no longer work.

Edit: here's a doc (which you can download as a PDF) with all the cases on, both for left handed people and right handed.
 
Last edited:
Case Reduction 24 -> 6

There are 24 cases how corners move, but only 6 names to it ... then there should be a recognition system that only has 6 cases, right? (formal context analysis is the math terminus I think)

Two adjacent corners can have exakty one of this three relations:

1. Pair - The corners are correctly permuted
2. Anti Pair - The corners must be swapped
3. No Pair - The corners must be separated

No Pair is easily recognized by both side colors of both corners, being opposite colors.
Pair and Anti Pair have one side color in common, when twisting the corners in mind, that can be used to distinguish pair from anti pair.

Now we look at (FUL - FUR) and (FUR - BUR) there is a maximum of 9 combinations of our 3 relations, but (No, No) (Anti, Pair) (Pair, Anti) are impossible combos.

The six cases that remain:

[TABLE="width: 500, align: left"]
[TR]
[TD](FUL - FUR)[/TD]
[TD](FUR - BUR)[/TD]
[TD]DR-solved[/TD]
[TD]DR-swaped[/TD]
[/TR]
[TR]
[TD]Pair[/TD]
[TD]Pair[/TD]
[TD]Pika (L' U R')[/TD]
[TD]Squirtle (R2)[/TD]
[/TR]
[TR]
[TD]Pair[/TD]
[TD]No[/TD]
[TD]Bulba (R)[/TD]
[TD]Macha (R')[/TD]
[/TR]
[TR]
[TD]Anti[/TD]
[TD]Anti[/TD]
[TD]Squirtle (R2)[/TD]
[TD]Pika (L' U R')[/TD]
[/TR]
[TR]
[TD]Anti[/TD]
[TD]No[/TD]
[TD]Macha (R')[/TD]
[TD]Bulba (R)[/TD]
[/TR]
[TR]
[TD]No[/TD]
[TD]Pair[/TD]
[TD]Drago (U'R2)[/TD]
[TD]Pidgey -[/TD]
[/TR]
[TR]
[TD]No[/TD]
[TD]Anti[/TD]
[TD]Pidgey -[/TD]
[TD]Drago (U'R2)[/TD]
[/TR]
[/TABLE]
 
There are 24 cases how corners move, but only 6 names to it ... then there should be a recognition system that only has 6 cases, right? (formal context analysis is the math terminus I think)

Two adjacent corners can have exakty one of this three relations:

1. Pair - The corners are correctly permuted
2. Anti Pair - The corners must be swapped
3. No Pair - The corners must be separated

No Pair is easily recognized by both side colors of both corners, being opposite colors.
Pair and Anti Pair have one side color in common, when twisting the corners in mind, that can be used to distinguish pair from anti pair.

Now we look at (FUL - FUR) and (FUR - BUR) there is a maximum of 9 combinations of our 3 relations, but (No, No) (Anti, Pair) (Pair, Anti) are impossible combos.

The six cases that remain:

[TABLE="width: 500, align: left"]
[TR]
[TD](FUL - FUR)[/TD]
[TD](FUR - BUR)[/TD]
[TD]DR-solved[/TD]
[TD]DR-swaped[/TD]
[/TR]
[TR]
[TD]Pair[/TD]
[TD]Pair[/TD]
[TD]Pika (L' U R')[/TD]
[TD]Squirtle (R2)[/TD]
[/TR]
[TR]
[TD]Pair[/TD]
[TD]No[/TD]
[TD]Bulba (R)[/TD]
[TD]Macha (R')[/TD]
[/TR]
[TR]
[TD]Anti[/TD]
[TD]Anti[/TD]
[TD]Squirtle (R2)[/TD]
[TD]Pika (L' U R')[/TD]
[/TR]
[TR]
[TD]Anti[/TD]
[TD]No[/TD]
[TD]Macha (R')[/TD]
[TD]Bulba (R)[/TD]
[/TR]
[TR]
[TD]No[/TD]
[TD]Pair[/TD]
[TD]Drago (U'R2)[/TD]
[TD]Pidgey -[/TD]
[/TR]
[TR]
[TD]No[/TD]
[TD]Anti[/TD]
[TD]Pidgey -[/TD]
[TD]Drago (U'R2)[/TD]
[/TR]
[/TABLE]
This is very similar (it's actually the exact same but done earlier in the solve) to a recognition system I used to use for CPLS, but I didn't think of applying it to porky v2. Have you tried this yet? Does it work for all cases? I might practise this a bit since it will make recognition much easier to remember.
 
... Have you tried this yet? Does it work for all cases? I might practise this a bit since it will make recognition much easier to remember.

I checked all cases manually to correspopnd to my recognition system. There can also not be an additional case so the recognition system is complete.

I did only a few sample solves and found that after knowing the FUL-FUR relation just one sticker on URB is often enough to tell the FUR-BUR relation.

I also want to mention that the FDL-FUL relation could also be used for recognition, if someone prefers it to look there.

I think the next step stone could be a way to reconize cases where DRF and DRB are placed at UFL and UFR.

EDIT: I added the FDL-FUL column, because maybe someone finds a reasoning why a alg solves that cases.
[TABLE="width: 500, align: left"]
[TR]
[TD](FDL-FUL)[/TD]
[TD](FUL - FUR)
[/TD]
[TD](FUR - BUR)
[/TD]
[TD]DR-solved
[/TD]
[TD]DR-swaped
[/TD]
[/TR]
[TR]
[TD]Anti[/TD]
[TD]Pair
[/TD]
[TD]Pair
[/TD]
[TD]Pika (L' U R')
[/TD]
[TD]Squirtle (R2)
[/TD]
[/TR]
[TR]
[TD]No[/TD]
[TD]Pair
[/TD]
[TD]No
[/TD]
[TD]Bulba (R)
[/TD]
[TD]Macha (R')
[/TD]
[/TR]
[TR]
[TD]Pair[/TD]
[TD]Anti
[/TD]
[TD]Anti
[/TD]
[TD]Squirtle (R2)
[/TD]
[TD]Pika (L' U R')
[/TD]
[/TR]
[TR]
[TD]No[/TD]
[TD]Anti
[/TD]
[TD]No
[/TD]
[TD]Macha (R')
[/TD]
[TD]Bulba (R)
[/TD]
[/TR]
[TR]
[TD]Pair[/TD]
[TD]No
[/TD]
[TD]Pair
[/TD]
[TD]Drago (U'R2)
[/TD]
[TD]Pidgey -
[/TD]
[/TR]
[TR]
[TD]Anti[/TD]
[TD]No
[/TD]
[TD]Anti
[/TD]
[TD]Pidgey -
[/TD]
[TD]Drago (U'R2)
[/TD]
[/TR]
[/TABLE]
 
Last edited:
I quite like this recognition system too.

I was also wondering if there is a way to modify this system, so that you can also build the left-front block first, and then permute the corners, in an attempt to reduce the movecount. I would try to generate the algs myself (some algs can already be remapped, but not all), but I have no idea how these were generated. Also, with zz-porky v1, is it possible to generate algs that free both corners and edges, so that the corner setup positions do not matter?
 
Can't you just front-back mirror both recognition and algorithms?

Oh. It would appear that you actually can just do that, so that must have been a pretty silly mistake on my part. Recognition works pretty well too, I can just put the corner in the same place as I normally would, then recognize the right side first then the front, then to an U' before executing.

It might perhaps still be nice to have some porky v1 algorithms, so that the corners can be anywhere, but I don't know how many cases that would be.
 
Oh. It would appear that you actually can just do that, so that must have been a pretty silly mistake on my part. Recognition works pretty well too, I can just put the corner in the same place as I normally would, then recognize the right side first then the front, then to an U' before executing.

It might perhaps still be nice to have some porky v1 algorithms, so that the corners can be anywhere, but I don't know how many cases that would be.

In my opinion, you can redefine these cases in terms of the positions of any corners

When I used to do porky v1, I would check if the 2 D-corners were easier to place at DR or UL (translate algs to {URD}). It is also possible to use any 2 "adjacent" corners in either of these positions. It just requires a little extra thought. However, it's tougher to intuitively apply this to porky v2, because I literally have no idea how the algs work, but I'm sure it's possible, in my opinion.
 
Hello,

I was wondering if the setup moves are an absolute requirement for zz-porky v2. It seems to me that the algorithms and case count would still be the same, but the recognition would be drastically worse. Does there exist a way to recognize the CP without doing setup moves, or am I completely wrong and the case count is actually really high?
 
Hello,

I was wondering if the setup moves are an absolute requirement for zz-porky v2. It seems to me that the algorithms and case count would still be the same, but the recognition would be drastically worse. Does there exist a way to recognize the CP without doing setup moves, or am I completely wrong and the case count is actually really high?

You can just do a 3-cycle or a 2 swap to correct CP but recognition is much harder.

https://www.speedsolving.com/forum/showthread.php?55156-Briggs-(3x3x3-method)
This is my attempt at doing CP without setup moves in one step but you use inspection time because otherwise you would have to pause for too long.
 
You can just do a 3-cycle or a 2 swap to correct CP but recognition is much harder.

https://www.speedsolving.com/forum/showthread.php?55156-Briggs-(3x3x3-method)
This is my attempt at doing CP without setup moves in one step but you use inspection time because otherwise you would have to pause for too long.

That's a lot more moves though. With porky v2 the algs are only 1 to 3 moves, and I'm wondering if it's possible to decipher one of those algs or of the case count is not just 6 after all.
 
Back
Top