# BLD execution trainer

##### Member
ScramBLD ("scrambled" or "scram BLD" if you're mad at BLD after a few DNFs)

Hello, ScramBLD is a web app that can be used to practice BLD execution. Cubers new to BLD can also use it to help them figure out how Speffz letter pairs can be selected to solve scrambles.

- You can input a scramble and the Speffz letter pairs for UBL and DF buffer solutions will be generated for you, including edge flips and corner twists.
- A proposed solution will also be generated, using either 3-style or M2/OP.
- The scramble button will generate and provide the BLD solution for a random state scramble.

Caveats:
- Parity is always solved by swapping UB and UL in edge memo.
- Corner twist and edge flip solutions are overly simplified (each piece is oriented one by one against the buffer piece).

Acknowledgements:
- To generate the random state scrambles I used Lucas Garron's js conversion of Shuang Chen's implementation of Herbert Kociemba's two-phase algorithm for solving the cube.
- I used Riffz BLD edge algs and Noahaha's BLD corner algs for 3-style solutions as starting points, but ended up changing a couple hundred algorithms.
- I also used a few 3-style algs from the BLD example solve thread, mainly from bobthegiraffemonkey, Ollie, and suushiemaniac.

If you come across a solution for a letter pair that you think could be improved upon, please let me know!

Last edited:

#### lejitcuber

##### Member
I am pretty much a bld newb and I average about 2:30 but I think that having an always correct memo is a good idea as it means I can practice actual memorisation and I will probably use it a lot.

##### Member

- Removed the "Solve" button, the letter pairs and BLD solution are generated as you type the scramble.
- Added a button that displays the solution in alg.cubing.net.

#### suushiemaniac

##### Member
ScramBLD ("scrambled" or "scram BLD" if you're mad at BLD after a few DNFs)

Hello, ScramBLD is a web app that can be used to practice BLD execution. Cubers new to BLD can also use it to help them figure out how Speffz letter pairs can be selected to solve scrambles.
[...]

Caveats:
- For the scramble you an only use [U, U', U2, L, L', L2, F, F', F2, R, R', R2, B, B', B2, D, D', D2], no cube rotations, slice or small case permutations.
[...]

Acknowledgements:
[...]
- I used Riffz BLD edge algs and Noahaha's BLD corner algs for 3-style solutions as starting points, but ended up changing a couple hundred algorithms.
- I also used a few 3-style algs from the BLD example solve thread, mainly from bobthegiraffemonkey, Ollie, and suushiemaniac.
[...]
Amazing! Very GJ for writing this. Also, I feel kind of honoured that some of my algs got implemented

My two (or maybe three) cents:
• Are you willing to share the source code? I'm fine with PM or any kind of Git / BitBucket repository
• How does the program handle breaking in to a new cycle? As far as I can see, it just takes the first unsolved piece as new target, maybe include an option to use "standard break-ins"?
• Why are slice moves (and therefor also wide moves) not included? I'm especially thinking of TNoodle-like random orientation scrambles...
• What about using one's own algorithms? I could well imagine to implement my BLD-database format into this applet, if you want to

##### Member
[*]Are you willing to share the source code? I'm fine with PM or any kind of Git / BitBucket repository
Of course. I haven't uploaded it to github because I wanted to refactor it a bit before doing so. At first I just wanted to write a program that would generate the letter pairs for a scramble, then I added the little cube display, when that was done I thought it wouldn't be too hard to also display M2 and OP solutions (just need to write down the setup for each piece and display [setup: M2]), etc... so if you look at the code you'll notice that there's hundreds of algs in the ui.js file, which at first was only meant to handle button clicks and relay the work to cube.js! It's 100% javascript tho, and I didn't obfuscate it in any way, so you can just download the files straight from the source.

[*]How does the program handle breaking in to a new cycle? As far as I can see, it just takes the first unsolved piece as new target, maybe include an option to use "standard break-ins"?
Wasn't aware of standard break-ins, I'll look that up. All the code does is grab the next available non-solved target, I placed them in an order I consider the easiest in most cases (for edges UB will always be selected if its not yet solved, for instance). This is the way I'd like to do it:
- Order all letter pairs by easiest to execute to most difficult (for edges AC and CA would probably be in the top 2 spots, after that it gets a bit subjective).
- When a cycle-break is needed, grab the easiest available letter pair available based on that order.
That first step seemed like too much work tho.

[*]Why are slice moves (and therefor also wide moves) not included? I'm especially thinking of TNoodle-like random orientation scrambles...
At first all I wanted to do was a tool that would generate the letter pairs for qqtimer scrambles so I could practice execution without having to figure out the letter pairs. Since those scrambles don't have rotations or slice moves, I wrote the program making the assumption that I wouldn't need to deal with those moves. They could be added, of course.

[*]What about using one's own algorithms? I could well imagine to implement my BLD-database format into this applet, if you want to
It'd be great to improve the algs! I added many of my own which I know are a bit weird for must cubers (I notice no one likes to use E slice exchanges like I do).

#### suushiemaniac

##### Member
Wasn't aware of standard break-ins, I'll look that up. All the code does is grab the next available non-solved target, I placed them in an order I consider the easiest in most cases (for edges UB will always be selected if its not yet solved, for instance). This is the way I'd like to do it:
- Order all letter pairs by easiest to execute to most difficult (for edges AC and CA would probably be in the top 2 spots, after that it gets a bit subjective).
- When a cycle-break is needed, grab the easiest available letter pair available based on that order.
That first step seemed like too much work tho..
The idea is great, actually! Two ideas to narrow down the sorting problems:
1. Fully develop the commutator and count moves
2. Create movesets for each commutator
You could then order the list by most frequently used movegroups, and by # of moves (which sometimes is inefficient, I know. That's why the movegroup is also included.)

At first all I wanted to do was a tool that would generate the letter pairs for qqtimer scrambles so I could practice execution without having to figure out the letter pairs. Since those scrambles don't have rotations or slice moves, I wrote the program making the assumption that I wouldn't need to deal with those moves. They could be added, of course.
Well, since the WCA uses wide moves to randomly orient puzzles, it's definitely worth implementing imo.

It'd be great to improve the algs! I added many of my own which I know are a bit weird for must cubers (I notice no one likes to use E slice exchanges like I do).
The idea I have is that people who have lists of their algorithms can implement them in a database and then upload/open the database in your applet. Because as you mentioned there is not "the one" 3-style alg for each case so showing one alg for everyone is kinda inefficient. And with the database thing, everyone would see their own algorithms

##### Member
The idea is great, actually! Two ideas to narrow down the sorting problems:
1. Fully develop the commutator and count moves
2. Create movesets for each commutator
You could then order the list by most frequently used movegroups, and by # of moves (which sometimes is inefficient, I know. That's why the movegroup is also included.)
That sounds like a good start, but I think there's still a lot to take into account to come up with a good enough order. If I'm solving corners, for instance, and my first target is B and it turns out to be the buffer piece, I would instinctively choose C as the next target, because I can solve it very rapidly using my A-Perm alg, which on paper looks much worse than any of the available targets that could be solved with an 8 move pure commutator but in practice will be much faster for me (I wouldn't be surprised if this is true for a ton of BLD solvers out there, maybe even the majority).

The idea I have is that people who have lists of their algorithms can implement them in a database and then upload/open the database in your applet. Because as you mentioned there is not "the one" 3-style alg for each case so showing one alg for everyone is kinda inefficient. And with the database thing, everyone would see their own algorithms
I see this as a useful tool for someone that's having trouble figuring out how to choose the letter pairs for a scramble, and for someone that's having trouble figuring out a commutator for a letter pair once it's been chosen. Because of that, I tried to go with algs that are easy to understand, and hopefully easy to execute. I'm thinking that someone that has compiled a large list of algs he likes to use for certain cases won't really be looking a lot at the part of the tool that displays the solution.

#### suushiemaniac

##### Member
That sounds like a good start, but I think there's still a lot to take into account to come up with a good enough order. If I'm solving corners, for instance, and my first target is B and it turns out to be the buffer piece, I would instinctively choose C as the next target, because I can solve it very rapidly using my A-Perm alg, which on paper looks much worse than any of the available targets that could be solved with an 8 move pure commutator but in practice will be much faster for me (I wouldn't be surprised if this is true for a ton of BLD solvers out there, maybe even the majority).
Yeah, and that's why choosing appropriate algorithms and breaking-in pieces is not so easy indeed. Hope for some input from other 3-style users maybe?

I see this as a useful tool for someone that's having trouble figuring out how to choose the letter pairs for a scramble, and for someone that's having trouble figuring out a commutator for a letter pair once it's been chosen. Because of that, I tried to go with algs that are easy to understand, and hopefully easy to execute. I'm thinking that someone that has compiled a large list of algs he likes to use for certain cases won't really be looking a lot at the part of the tool that displays the solution.
Good point. I didn't really think that far ahead :'D

#### sk8erman41

##### Member
This is FANTASTIC! Thank you.

#### Lucas Garron

##### Member
This looks awesome!
I've always wanted to use something like this, but haven't time to build it.

Some things:
- A few of your algs don't have spaces after the comma/colon in the commutator. If you add a space, the alg is considered perfectly formatted in alg.cubing.net (instead of showing the "Moves" as yellow).
- Let me know if you want github.com/cubing/scrambld and/or scrambld.cubing.net

##### Member
This looks awesome!
I've always wanted to use something like this, but haven't time to build it.
Thanks!

- A few of your algs don't have spaces after the comma/colon in the commutator. If you add a space, the alg is considered perfectly formatted in alg.cubing.net (instead of showing the "Moves" as yellow).
Nice catch, fixed.

- Let me know if you want github.com/cubing/scrambld and/or scrambld.cubing.net
Both would be great. I just created a non-work-stuff github user, username is aledimare, email [email protected]
Thank you!

#### sk8erman41

##### Member
How does the selection of the next target work to start a new cycle? Is it just a random unused target or is there a certain selection process built in? This is really great, enjoying it a lot. Very useful practice tool for lots of different uses. Thanks again!

##### Member
How does the selection of the next target work to start a new cycle? Is it just a random unused target or is there a certain selection process built in? This is really great, enjoying it a lot. Very useful practice tool for lots of different uses. Thanks again!
Take a look at post #5. It's not random (solutions to scrambles are deterministic, meaning you'll always get the same solution of you input the same scramble), but it's not too elaborate. It just grabs the next unsolved target ordered in what I considered to be easiest to hardest in most cases. Ie: if UB is unsolved the A target will always be selected. A is usually the easiest target, but not always: if the target when the cycle breaks is D, for instance, I'd choose C as the next target since DC can be solved in 5 moves, but the program will always go for A.

Good to know you find it useful!

#### FailCuber

##### Member
This is awesome!! Can you add OP edges too if possible?

#### sk8erman41

##### Member
Take a look at post #5. It's not random (solutions to scrambles are deterministic, meaning you'll always get the same solution of you input the same scramble), but it's not too elaborate. It just grabs the next unsolved target ordered in what I considered to be easiest to hardest in most cases. Ie: if UB is unsolved the A target will always be selected. A is usually the easiest target, but not always: if the target when the cycle breaks is D, for instance, I'd choose C as the next target since DC can be solved in 5 moves, but the program will always go for A.

Good to know you find it useful!
Got it, sorry I missed that part.

#### Jugurtha

##### Member
Hi! Amazing training tool, I'm very impressed

Just a few suggestions if you don't mind:

- possibility to change one's solving orientation : even if I use the "official" scrambling orientation - green front & white top, I'm not sure that everybody does
(or maybe add the possibility to change one's orientation using x, y, z added in the scramble?)

- possibility to use one's letter scheme:
(Just to give an idea, I use letters for corners in a different scheme than yours, and letters + numbers for edges)
This would definitely help the understanding behind the resolution IMO

Don't know how hard it can be for you, sorry
But great tool anyway, thanks again

#### sk8erman41

##### Member
- possibility to change one's solving orientation : even if I use the "official" scrambling orientation - green front & white top, I'm not sure that everybody does
(or maybe add the possibility to change one's orientation using x, y, z added in the scramble?)
just scramble in your solving orientation

##### Member
Hi! Amazing training tool, I'm very impressed
Thanks!

- possibility to change one's solving orientation : even if I use the "official" scrambling orientation - green front & white top, I'm not sure that everybody does
(or maybe add the possibility to change one's orientation using x, y, z added in the scramble?)
I actually use a different orientation from the one you see in scrambld.cubing.net, so I did set it up to make it easy to change from one to another (green top white front ftw).

- possibility to use one's letter scheme
Shouldn't take too long, the displayed letters are just an array which wouldn't be difficult to allow the user to modify. There's only 2 things I'd need to do for both of these requests:
- Add the UI so you can manipulate the orientation/lettering scheme.
- Store any changes in a cookie so you won't have to input your lettering scheme every time you reload the page.

I'm a bit busy with work stuff right now, but I'll get to those two soon.