public class ArrayExamples
{
public static int lockers (int students)
{
/** Assume we have 1 locker per student.
* As each student N passes, he toggles
* every Nth locker, starting with first.
* Even # = open, odd # = closed
*
* Return # of open lockers at end.
*/
int lockers[] = new int[students];
// Initialize lockers to open
for (int i = 0; i < lockers.length; i += 1)
{
lockers[i] = 0;
}
for (int round = 1; round <= students; round += 1)
{
// For each student, open every matching
// locker
for (int currLocker = 0;
currLocker < lockers.length;
currLocker += round)
{
// System.out.println("Student " + round + " toggles locker " + currLocker);
lockers[currLocker] += 1;
}
}
// Count # of lockers still open
int openLockers = 0;
for (int counter = 0; counter < lockers.length; counter += 1)
{
if (lockers[counter] % 2 == 0) // even
openLockers += 1;
}
return openLockers;
}
public static void magicSquare (int size)
{
// Algorithm: put 1 in top center square.
// Repeatedly move up and to the left,
// wrapping around edges as necessary.
// If we hit an occupied square, go down
// from previous instead
int [] [] square = new int [size][size];
int row = 0; // Start at top row
int col = size / 2; // Start in middle
int n = 1;
while (n <= size * size)
{
// Fill in next square
square[row][col] = n;
n++;
// Check for collisions
int tempRow = row - 1;
int tempCol = col - 1;
if (tempRow < 0)
tempRow = size - 1;
if (tempCol < 0)
tempCol = size -1;
if (square[tempRow][tempCol] != 0)
{
tempRow = row + 1;
tempCol = col;
if (tempRow >= size)
tempRow = 0;
}
row = tempRow;
col = tempCol;
}
// Print square at end
for (int i = 0; i < square.length; i++)
{
for (int j = 0; j < square.length; j++)
{
System.out.print(square[i][j] + "\t");
}
System.out.println();
}
}
}