Infinite Spiral of Numbers (due 04 August 2014)

Consider the natural numbers laid out in a square spiral, with 1 occupying the center of the spiral. The central 11 x 11 subset of that spiral is shown in the table below.

111112113114115 116117118119120121
11073747576 777879808182
10972434445 464748495083
10871422122 232425265184
1077041207 8910275285
1066940196 1211285386
1056839185 4312295487
10467381716 151413305588
10366373635 343332315689
10265646362 616059585790
101100999897 969594939291

This spiral has several interesting features. The southeast diagonal has several prime numbers (3, 13, 31, 57, and 91) along it. The southwest diagonal has a weaker concentration of prime numbers (5, 17, 37) along it.

To construct the spiral we start with 1 at the center, with 2 to the right, and 3 below it, 4 to the left, and so on. A part of the problem for this assignment is to figure out the rule to fill the spiral for an arbirary size. Once you have that rule you can complete the rest of the assignment.

You will read your input from the file spiral.txt. You will hard code the name of your file in your program. The file will have just two lines. For example:

57
42
The first line indicates the dimension of the square spiral. This number should be an odd number. If it is not then choose the dimension to be the next higher odd number. The second number must be in the range 1 and the square of the dimension. If the second number is not in that range, print an error message Number not in Range.

You will write the neigboring numbers of the second number in three lines. Each line will have three integers separated by a single white space. If the second number was 42, then this should be your output:


72 43 44
71 42 21
70 41 20

If the second number was 64, then this should be your output:

66 37 36
65 64 63
100 99 98

What if that second number was on the outer edge of the spiral, then print Number on Outer Edge.

For this assignment you may work with a partner. Both of you must read the paper on Pair Programming. .

The file that you will be turning in will be called Spiral.java. You will follow the standard Java coding convention that I have appended below. The file will have a header of the following form:

/*
  File: Spiral.java

  Description:

  Student Name:

  Student UT EID:

  Partner Name:

  Partner UT EID:

  Course Name: CS 312

  Unique Number: 

  Date Created:

  Date Last Modified:

*/

If you are working with a partner both of you will be submitting a single program (from either account) but make sure that you have your partner's name and eid in your program. If you are working alone, then remove the two lines that has the partner's name and eid in the header.

You will follow the standard Java Coding Conventions. You can either view the HTML page or download the PDF or Postscript and print it out. There is a modification that I would like to make to the standard coding conventions. Please align the opening and closing braces vertically so that you can easily make out the blocks of code. For example:

Do this:
if ( x > 5 )
{
  a = b + c;
}

Not this:
if ( x > 5 ) {
  a = b + c;
}

Use the turnin program to submit your Spiral.java file. We should receive your work by 11 PM on Monday, 04 August 2014. There will be substantial penalties if you do not adhere to the guidelines.