[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now


Random Rearrangement Rocks!

Posted on 2009-04-20
Medium Priority
Last Modified: 2012-05-06
Hi experts!
Random Rearrangement Rocks!

Imagine you have a line of rocks.  Each rock has been given a specific title.  In this case, the rocks are labeled after each letter in the English alphabet and then numbers 1-18.  The goal is to get the rocks from the current order to the final order (from A-Z, 1-18) in the FEWEST NUMBER OF STEPS POSSIBLE.

Current Order:

Final Order:

1.  When you pick up a rock and place it into a new location, the rest of the line of rocks shifts down.  Imagine a line of people waiting to pay for candy.  If one person cuts another person, the entire line moves back one position.
2.  You can pick up a rock (or adjacent rocks) and move it at the same time.  You cannot move rocks that are separated in one step.

3.  If you pick up multiple rocks, you cannot place them down in a different order than what you picked them up as.

It might be easier to use Microsoft Excel to complete this puzzle as movement of columns follows the rules laid out.  For example, using cut and insert.  To this end, I've attached an Excel 2003 file that has things prearranged for you.

500 points, but only if your steps are clearly laid out.  (Example: Cut Cols D-F, Insert Before Col G).  I will keep the question open until an accurate solution is posted and activity is minimized.

If you have any questions, please ask.  Happy solving!
Question by:quaziblue
  • 2
LVL 13

Expert Comment

by:Brian Withun
ID: 24186840
This sounds like a homework assignment.

Study and work hard.  You will succeed.

Author Comment

ID: 24187058
Nope.  I'm using this to create a macro.  I didn't do homework even when I was in school.
LVL 63

Accepted Solution

☠ MASQ ☠ earned 1500 total points
ID: 24188043
OK let's call the stones 01-44 For fun we'll refer to the value of every stone picked up as V (so stone 'A'=1 and stone '18'=44 - easy isn't it :))

Counting off from the left is Position which we'll call 'P'  I guess P should = 0 at least to begin with ;) There are 44 stones and 44 positions

If we want to grab some stones the number we'll grab is called 'G'
To begin with we don't want to grab any stones so G = 0

Inevitably we'll need to have a loop to keep from duplicating code so let's put one in here let's number the loops using a variable as well, let's call it 'N' currently N = 0 as well :)

Because we're looking for Stone 'A' first let's set V to 1

[Top of the loop]

This is the start of the loop so add one to N

Let's make P = N (after all if P>43 we've clearly run out of stones and should STOP! Ring Bells and Whistles!!!)

If the value of the stone at postion P is the same as V then all is well - (happy :)) so we don't need to do anything except add 1 to V and go to the [All is well subroutine]

Oh dear! If you've got here then the stone at position P doesn't have the same value as P - it's going to have to be moved - (sad :(  )let's remember to Grab it by saying G=G+1 and now ..... let's go back to [Top of the loop]

Hello - I'm the [All is well subroutine] you got here because you found the stone you were looking for - if it was right next to the last correct stone then G=0
if G=0 you may now start looking for the next stone in the sequence by making V=V+1 and going to the [Top of the loop]

Ah! so there were some other stones in the wrong place before the stone you just found - if you've been paying attention there were G stones before this one that were wrong.

This means you're going to grab the G stones in front of position P and move them so they become the G stones after position V
Now you've moved them let's make G=0 again and because everything got shunted back make N=V - having done that we can start looking for the next stone in the sequence so you better make V=V+1
And .....let's go back to [Top of the loop]

Author Comment

ID: 24188612
Whoa Masquerade.  That was intense and cool all at the same time.  I like your thinking, but it's a little much for me (and my experience level) to hammer that all out in a Visual Basic v1.0.5x.  The rocks/stones represent columns and when I create the macro, I'm simply going to cut column(s) and insert them before a certain column.  Rinse, lather, repeat until they are in the correct order.

Thanks for your solution.  I'm leaving it open in case someone else has the answer in the

"Step ##: Cut Column @, Insert before Column %" format.  Thanks.

Featured Post

Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
You need to know the location of the Office templates folder, so that when you create new templates, they are saved to that location, and thus are available for selection when creating new documents.  The steps to find the Templates folder path are …
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

873 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question