The algs has been taken from a tool from Net13 but that website is not working anymore below the download you can read about it.
windows: Drag the crosstrainer.tcl to the tclkit.exe
mac: If you have tcl installed you can run the file but thats just a guess :-)
This the forum topic about the cross trainer but the links are not working any more.
The first trainer was made by Net13 and later an update by Christian.
Copy past from the forum below:
[CFOP] A tool to practice cross and transition to F2L How to use:
Go here: http://net13.net/Cube/Cross/
Scramble your cube as indicated.
Plan out your cross. It shouldn't be too hard, as it's only one move.
Find an F2L pair.
Execute your cross while tracking your F2L pair.
So what did you just do? You planned out the entire cross in your head, then you solved it while tracking an F2L pair, allowing you to immediately get started on F2L. That pretty much makes you a pro! "Well, the cross only required one move…" Ah, feeling confident, are we? In that case, go ahead and try level 2, where each cross requires two moves. Notes:
If you're finding a level hard, you need to go back down one level. 15 seconds of inspection time should always be enough. Some things in life require you to really push yourself to succeed. This is not one of them. The cross is all about practice and repetition and every cross should be easy, because:
When you get your first, say, level 6 cross, you should be thinking: "I haven't seen a cross like this before, but if I did R2, it would be one of those level 5 crosses I'm an expert in." That is the trick for every level. You just have to find a move that will turn your cross into a cross a level lower, because you're already very good at that level or you shouldn't have moved up to this level.
Each level contains 1,000 random state scrambles.
"Scramble table columns" is just how wide you want the table to be. I've set it to 4 as default, as that gives the best use of screen space on my phone and my tablet. You can change it to whatever you like or set it to 0 if you're fine with just getting the scramble string.