Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

British puzzle maker H. E. Dudeney concocted an interesting puzzle about a bored

ID: 3815805 • Letter: B

Question

British puzzle maker H. E. Dudeney concocted an interesting puzzle about a bored postman called the “Peevish Postman Problem”. According to Dudeney, the postman worked in a small post office with consecutive letter boxes numbered 1 to 100. Each box was equipped with a door that could be opened and closed. Late one evening the postman made a “pass” through the boxes and opened every door. Still bored, he walked back to the beginning and made a second pass, this time visiting boxes 2, 4, 6, …, 100. Since those doors were now open, he closed them. On the third pass he visited boxes 3, 6, 9, 12, …, 99 and if a door was open he closed it, and if the door was closed he opened it. He continued to make passes through the boxes and always followed the same rule: On each pass i from 1 to 100, he visited only boxes that were multiples of i, … and changed the state of each door he visited. After making 100 passes at the doors, he surveyed the results and was surprised by the pattern of doors that he saw.

The code below uses a boolean array to represent the doors. A true value in the array represents an open door, and a false value represents a closed one.

Create a new NetBeans project, add your name after the @author tag near the top, and copy the highlighted code below into the main method. Then, complete the code so that it simulates the Peevish Postman problem as described above. You will have to write two nested loops in order to manipulate the array as described above. The inner loop will control the door number visited on a single pass, and the outer loop will control the number of passes.

The puzzle was conceived as a paper and pencil entertainment. Can you describe/explain the final pattern of doors?

Note: Because the doors are numbered starting at one, we will waste the first position in the array. In this case, the default value will be set to false. By ignoring the first position, the door numbers match their index positions in the array.

public class Peevish
{
   public static void main(String[] args)
   {
      boolean[] doors;
      final int NODOORS = 101;    // We will not use door[0]
      final boolean OPEN = true;
      final boolean CLOSED = false;
      // Initialize the doors
      doors = new boolean[NODOORS];
      for (int i = 0; i < NODOORS; i++)
      {
         doors[i] = CLOSED;
      }
      // Print the initial state of each door (only doors 1-100)
      showDoors(doors);

      // ADD YOUR CODE HERE
      
      // Print the final state of each door (only doors 1-100)
      showDoors(doors);

   } // end main method

   static void showDoors(boolean[] Doors)
   {
      
for (int i = 1; i < Doors.length; i++)
      {
         System.out.print("Door " + i + " is ");
         if (Doors[i])
{ System.out.println("open."); }
         else { System.out.println("closed."); }
      }
   } // end showDoors method
} // end class Peevish

Explanation / Answer

Please find my implementation.

Please let me know in case of any issue.

public class Peevish

{

   public static void main(String[] args)

   {

       boolean[] doors;

       final int NODOORS = 101; // We will not use door[0]

       final boolean OPEN = true;

       final boolean CLOSED = false;

       // Initialize the doors

       doors = new boolean[NODOORS];

       for (int i = 0; i < NODOORS; i++)

       {

           doors[i] = CLOSED;

       }

       // Print the initial state of each door (only doors 1-100)

       showDoors(doors);

       // ADD YOUR CODE HERE

       for(int i=1; i<NODOORS; i++){

          

           for(int j=i; j<NODOORS; j+=i)

               if(doors[j] == CLOSED)

                   doors[j] = OPEN;

               else

                   doors[j] = CLOSED;

       }

       // Print the final state of each door (only doors 1-100)

       showDoors(doors);

   } // end main method

   static void showDoors(boolean[] Doors)

   {

       for (int i = 1; i < Doors.length; i++)

       {

           System.out.print("Door " + i + " is ");

           if (Doors[i]) { System.out.println("open."); }

           else { System.out.println("closed."); }

       }

   } // end showDoors method

} // end class Peevish

/*

Sample run:

Door 1 is closed.

Door 2 is closed.

Door 3 is closed.

Door 4 is closed.

Door 5 is closed.

Door 6 is closed.

Door 7 is closed.

Door 8 is closed.

Door 9 is closed.

Door 10 is closed.

Door 11 is closed.

Door 12 is closed.

Door 13 is closed.

Door 14 is closed.

Door 15 is closed.

Door 16 is closed.

Door 17 is closed.

Door 18 is closed.

Door 19 is closed.

Door 20 is closed.

Door 21 is closed.

Door 22 is closed.

Door 23 is closed.

Door 24 is closed.

Door 25 is closed.

Door 26 is closed.

Door 27 is closed.

Door 28 is closed.

Door 29 is closed.

Door 30 is closed.

Door 31 is closed.

Door 32 is closed.

Door 33 is closed.

Door 34 is closed.

Door 35 is closed.

Door 36 is closed.

Door 37 is closed.

Door 38 is closed.

Door 39 is closed.

Door 40 is closed.

Door 41 is closed.

Door 42 is closed.

Door 43 is closed.

Door 44 is closed.

Door 45 is closed.

Door 46 is closed.

Door 47 is closed.

Door 48 is closed.

Door 49 is closed.

Door 50 is closed.

Door 51 is closed.

Door 52 is closed.

Door 53 is closed.

Door 54 is closed.

Door 55 is closed.

Door 56 is closed.

Door 57 is closed.

Door 58 is closed.

Door 59 is closed.

Door 60 is closed.

Door 61 is closed.

Door 62 is closed.

Door 63 is closed.

Door 64 is closed.

Door 65 is closed.

Door 66 is closed.

Door 67 is closed.

Door 68 is closed.

Door 69 is closed.

Door 70 is closed.

Door 71 is closed.

Door 72 is closed.

Door 73 is closed.

Door 74 is closed.

Door 75 is closed.

Door 76 is closed.

Door 77 is closed.

Door 78 is closed.

Door 79 is closed.

Door 80 is closed.

Door 81 is closed.

Door 82 is closed.

Door 83 is closed.

Door 84 is closed.

Door 85 is closed.

Door 86 is closed.

Door 87 is closed.

Door 88 is closed.

Door 89 is closed.

Door 90 is closed.

Door 91 is closed.

Door 92 is closed.

Door 93 is closed.

Door 94 is closed.

Door 95 is closed.

Door 96 is closed.

Door 97 is closed.

Door 98 is closed.

Door 99 is closed.

Door 100 is closed.

Door 1 is open.

Door 2 is closed.

Door 3 is closed.

Door 4 is open.

Door 5 is closed.

Door 6 is closed.

Door 7 is closed.

Door 8 is closed.

Door 9 is open.

Door 10 is closed.

Door 11 is closed.

Door 12 is closed.

Door 13 is closed.

Door 14 is closed.

Door 15 is closed.

Door 16 is open.

Door 17 is closed.

Door 18 is closed.

Door 19 is closed.

Door 20 is closed.

Door 21 is closed.

Door 22 is closed.

Door 23 is closed.

Door 24 is closed.

Door 25 is open.

Door 26 is closed.

Door 27 is closed.

Door 28 is closed.

Door 29 is closed.

Door 30 is closed.

Door 31 is closed.

Door 32 is closed.

Door 33 is closed.

Door 34 is closed.

Door 35 is closed.

Door 36 is open.

Door 37 is closed.

Door 38 is closed.

Door 39 is closed.

Door 40 is closed.

Door 41 is closed.

Door 42 is closed.

Door 43 is closed.

Door 44 is closed.

Door 45 is closed.

Door 46 is closed.

Door 47 is closed.

Door 48 is closed.

Door 49 is open.

Door 50 is closed.

Door 51 is closed.

Door 52 is closed.

Door 53 is closed.

Door 54 is closed.

Door 55 is closed.

Door 56 is closed.

Door 57 is closed.

Door 58 is closed.

Door 59 is closed.

Door 60 is closed.

Door 61 is closed.

Door 62 is closed.

Door 63 is closed.

Door 64 is open.

Door 65 is closed.

Door 66 is closed.

Door 67 is closed.

Door 68 is closed.

Door 69 is closed.

Door 70 is closed.

Door 71 is closed.

Door 72 is closed.

Door 73 is closed.

Door 74 is closed.

Door 75 is closed.

Door 76 is closed.

Door 77 is closed.

Door 78 is closed.

Door 79 is closed.

Door 80 is closed.

Door 81 is open.

Door 82 is closed.

Door 83 is closed.

Door 84 is closed.

Door 85 is closed.

Door 86 is closed.

Door 87 is closed.

Door 88 is closed.

Door 89 is closed.

Door 90 is closed.

Door 91 is closed.

Door 92 is closed.

Door 93 is closed.

Door 94 is closed.

Door 95 is closed.

Door 96 is closed.

Door 97 is closed.

Door 98 is closed.

Door 99 is closed.

Door 100 is open.

*/

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote