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

Project: Locker Puzzle Problem Description: A school has 100 lockers and 100 stu

ID: 3628885 • Letter: P

Question

Project: Locker Puzzle


Problem Description:
A school has 100 lockers and 100 students. All lockers are closed on the first day of school. As the students enter, the first student, denoted S1, opens every locker. Then the second student, S2, begins with the second locker, denoted L2, and closes every other locker. Student S3 begins with the third locker and changes every third locker (closes it if it was open, and opens it if it was closed). Student S4 begins with locker L4 and changes every fourth locker. Student S5 starts with L5 and changes every fifth locker, and so on, until student S100 changes L100.

After all the students have passed through the building and changed the lockers, which lockers are open? Write a program to find your answer.

(Hint: Use an array of 100 boolean elements, each of which indicates whether a locker is open (true) or closed (false). Initially, all lockers are closed.)

Explanation / Answer

%   lockers.m
%   simulate the locker problem...
%  
%
    % prompt for input
    numlockers = input('Enter number of lockers: ');

    % initialize locker array to zeros (lockers are closed)
    lockers = zeros(1,numlockers);

    % run the simulation
    for student = 1:numlockers
    % loop through all of the students
       for i = student:student:numlockers
       % loop through lockers for each student
            lockers(i) = lockers(i) + 1;
            % toggle each locker visited by the student
       end
    end
   
    % display results
    for j = 1:numlockers
    % loop through each locker   
        if (mod(lockers(j),2) == 0) % even -- locker is closed
            fprintf('locker #%d is closed ', j);
        else               % odd - locker is open
            fprintf('locker #%d is open ', j);
        end
    end