Random Rearrangement Rocks!

Posted on 2009-04-20
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
    LVL 13

    Expert Comment

    by:Brian Withun
    This sounds like a homework assignment.

    Study and work hard.  You will succeed.
    LVL 1

    Author Comment

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

    Accepted Solution

    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]
    LVL 1

    Author Comment

    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

    What Is Threat Intelligence?

    Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

    Join & Write a Comment

    Suggested Solutions

    A little background as to how I came to I design this code: Around 5 years ago I designed an add-in that formatted Excel files to a corporate standard, applying different cell colours and font type depending on whether the cells contained inputs,…
    Convert between Excel file formats (.XLS, .XLSX, .XLSM) with/without macro option David Miller (dlmille) Intro Over this past Fall, I've had the opportunity to see several similar requests and have developed a couple related solutions associate…
    This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.
    This Micro Tutorial will demonstrate in Microsoft Excel how to add style and sexy appeal to horizontal bar charts.

    734 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

    Need Help in Real-Time?

    Connect with top rated Experts

    23 Experts available now in Live!

    Get 1:1 Help Now