Home Creators Posts Import Register Favorites Logout
haven't archived this post yet. have a subscription? use the importer!

Content

While playing with different ideas around the rubiks cube I stumpled on one problem that might happen in many different projects. So I am going to share it as a quicktip in case it helps anyone. Or just learn how the do while loop works. :-p

I created an array with all the possible moves the cube can use. With the rand function I grab one item from that option array to create my own random shuffle sequence to mix up the cube.

Works quite good but I noticed that sometimes I get a 2nd move that simply negates the previous one. Waste of time and energy so what to do. I could pick the next one in line but then I run in danger to leave the bounds of the array. And I did not want to create an array workaround again. 

This would be an even bigger problem if you have a more complex relation between the array elements. So why not simply take another random number with a different seed. 

And this is when the while loop comes in handy.  And in this case I used the do while loop. The only difference between the two is that do-while is always processed at least once.

In my case elements that are not allowed to go together are letters like "S" with a negated "-S" or the other way around. Whenever that is the case - I test that with the find function - the while condition " leave is not 1" is given by setting it to zero. Now I have to make sure that I actually change what I use to get a random value- Otherwise I would get the same result and place myself into a deadlock.

By increasing the variable shift I basicly change my seed and this keeps going until I find a better choice. Then I leave the loop.   

Whenever you have restictions for the randomly chosen elements this is one way to solve that issue.

Let me know if that was helpful.

Cheers

Dave

Files

Previews only

Comments

No comments found for this post.