Ashmnafa
Veteran
You are a genius my friend.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Can I ask all you guys if you know how many moves it typically takes you to speedsolve all cube sizes from 2x2x2 up to 7x7x7?
Can I ask all you guys if you know how many moves it typically takes you to speedsolve all cube sizes from 2x2x2 up to 7x7x7?
From what I can tell, your solutions for larger cubes become MUCH more efficient than speedsolving solutions, but in my opinion, movecount doesn't help too much in speedsolving if its accompanied by a lack of recognition/continuity. Without watching your video, I seem to remember a number in the 200s for a 6x6 solution, which is quite under the amount of moves it takes me to solve it in 2:30 (i think). I'll do some movecount solves when I get some time though.
wow... I just did a 6x6 solve in 285 moves STM (counting any "turn" as 1 move. probably should've done it in block turn, but I wasn't aware I was close to your program's solution. Quite an impressive program in my opinion.
we could never get a great deal of precision with the motors I guess that's different in a C++ interface? Nevertheless I find it very awesome on both the hardware and software levels.
r2 U2 r2 Uw2 r2 u2
R2 y' T permutation (R U R' U' R' F R2 U' R' U' R U R' F')
B2
*Note u2 is inner slice only, and Uw2 is both the inner and outer slices.
Having messed around the the NXT kit for a semester doing trivial things (solving a maze, inscribing a circle of a given diameter) this is extremely impressive. Using NXT Python to program it, we could never get a great deal of precision with the motors I guess that's different in a C++ interface? Nevertheless I find it very awesome on both the hardware and software levels.
we could never get a great deal of precision with the motors I guess that's different in a C++ interface? Nevertheless I find it very awesome on both the hardware and software levels.
I once developed a stepper motor routine (head positioning) for Apple IIe/c floppy drives that could even be "interrupted" by having all the branches for each interrupt handler routine, add the #of execution cycles back into the stepper motor timer loops. Now that was an interesting challenge! Needed it to be that way to maintain an RS232 interrupt driven clock for the system. It worked great, and was considered impossible to do at the time. 6502C ruled back then, and it was fun. LDA.
IAssemble: A 4x4x4 test case for your program that has eluded direct solution by man&beast alike is the following: single corner exchange ULF<->DBR
Here is fazrulz (feliks zemdegs) 31q "indirect" solution:
r2 U2 r2 Uw2 r2 u2
R2 y' T permutation (R U R' U' R' F R2 U' R' U' R U R' F')
B2
*Note u2 is inner slice only, and Uw2 is both the inner and outer slices.
I would be very interested in ANY solutions your program could find for this.
...
we could never get a great deal of precision with the motors I guess that's different in a C++ interface? Nevertheless I find it very awesome on both the hardware and software levels.
I once developed a stepper motor routine (head positioning) for Apple IIe/c floppy drives that could even be "interrupted" by having all the branches for each interrupt handler routine, add the #of execution cycles back into the stepper motor timer loops. Now that was an interesting challenge! Needed it to be that way to maintain an RS232 interrupt driven clock for the system. It worked great, and was considered impossible to do at the time. 6502C ruled back then, and it was fun. LDA.
Careful - you're showing your age thereAlthough I can recall programming in 6502 assembler on a Commodore Pet and later in Z80 assembler on a Sinclair ZX81 so I'm one to talk! Anyway - we should stay on-topic before someone tells us off
IAssemble: A 4x4x4 test case for your program that has eluded direct solution by man&beast alike is the following: single corner exchange ULF<->DBR
Here is fazrulz (feliks zemdegs) 31q "indirect" solution:
r2 U2 r2 Uw2 r2 u2
R2 y' T permutation (R U R' U' R' F R2 U' R' U' R U R' F')
B2
*Note u2 is inner slice only, and Uw2 is both the inner and outer slices.
I would be very interested in ANY solutions your program could find for this.
...
Thanks for this - I'll find some time in the next day or so to run this through my existing solver and let you know what it finds...
How about these? (I won't post any more until you confirm these are correct for the problem you're describing)
SOLVED: 25 37 668.9s U' F2 Uw' R' D' R Uw F2 Dw' L' U L Dw U B2 U' B2 Dw2 R2 F2 Uw2 F2 R2 Dw2 B2
SOLVED: 21 33 1282.2s Uw' B2 R' U' R B2 L' D L Uw L2 D' L2 Uw2 F2 R2 Dw2 R2 F2 Uw2 L2
SOLVED: 21 33 1282.2s Uw' B2 R' U' R B2 L' D L Uw L2 D' L2 Uw2 F2 R2 Dw2 R2 F2 Uw2 L2
SOLVED: 21 33 1282.2s Uw' B2 R' U' R B2 L' D L Uw L2 D' L2 Uw2 F2 R2 Dw2 R2 F2 Uw2 L2
U' B2 R' U' R B2 L' D L U L2 D' Uw2 F2 R2 Dw2 R2 F2 Uw2 (19 bhtm, 29 bqtm)
I optimized it. It was composed of two sequences ending in L2, and the second one didn't affect the L slice, so you could just setup the second sequence by L2 and remove both L2s. Also, the Uw and Uw' in the first sequence could be reduced to U and U' because the middle layers didn't get changed by the intervening moves.
In general, the longer a sequence is, the easier it is to squeeze moves out of. Some other optimization possibilities (the intent being always to cancel moves) are:
- If a sequence does something symmetrical, you can try rotating it to get a different and equally long sequence which does the same thing. So a completely symmetrical sequence (say one which flips every edge) can be made to end with any face you want.
- If a sequence can generate and solve the same pattern, you can try the inverse of the sequence instead.
- If a sequence leaves a layer (or even a certain set of pieces) unchanged, you can try doing setups (that is, X sequence X', with X being the setup) to find longer algs that do the same thing but might cancel with something else.
- If a sequence cycles exactly 3 pieces (typically this will be a 'commutator', of the form X Y X' Y') you can try cycling those pieces at any point in your algorithm. This is known as an "insertion" in fewest moves solving.
- If you notice that some part of your algorithm is only 3x3 moves (outer-layer turns), you can try running a 3x3 solver on that to find shorter solutions. You would want to get as many outer-layer turns in a row as possible for this, because the longer a sequence of 3x3 turns is the less likely it is optimal.
Normally all of these (and more, perhaps) would be done by hand/cleverness. It would be amazing to have a computer program able to do it! I wouldn't expect every sequence you try to be given this kind of treatment, but whenever your program finds a better (or equal) sequence for the pattern, it would be helpful to try some of these.
BTW you didn't answer my question about whether your improved 19 bhtm, 29 bqtm solution was shorter than your previously know solution and whether it is "speedcuber friendly". I'm just curious...![]()