Background: The purpose of this assignment is to review lectures in 2D-array, nested for loops, file input (scanner). Th
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am
Background: The purpose of this assignment is to review lectures in 2D-array, nested for loops, file input (scanner). Th
Background: The purpose of this assignment is to review lectures in 2D-array, nested for loops, file input (scanner). This assignment will give you practice working with single and multi- dimensional arrays as well as basic data structures. - The students will also be able to develop and implement program involving the fundamental programming constructs such as variables, types, expressions, assignment, simple I/O, conditional and iterative control structures, functions and parameter passing, structured decomposition. Objectives: This assignment will assess your mastery of the following objectives: Write a functionally correct program to produce specified console output. Use nested for-loop to check the content in the 2D array. Operate the file I/O (input/output) to read data from and write to file using Scanner class. Follow prescribed conventions for spacing, indentation, naming methods, and header comments. Rules and Explanations: Skyscraper is a puzzle where integer values from 1 through 4 are used to represent the height of skyscrapers on a 4 by 4 city grid, where a building of height 1 is the shortest. The outside of the 4 by 4 grid contain clue values. These values also range from 1 through 4 and represent the number of buildings that 1 can be seen from a given row or column in the city grid. 2 Each row and column of the city grid must not contain two buildings that are the same height for a solution to be valid. More specifically, each row and column must contain buildings with heights 1 through 4. The rules for the values in the skyscraper grid are a little like those of Sudoku, for those that have played that. The image shows below on the left is an empty city grid with clues to the left with a completed city grid to 2 the right that satisfies the clues given on the left. 2 香? NE J ME - 34 Kac ↓ ↑↑↑ 14 13 1 2
Your task is to write a program that reads from an input file whose name is specified as a command line argument. The file will contain data on one or more complete skyscrapers (including clues). For each skyscraper, you must determine if the skyscraper properly satisfies the clues. You do not have to worry about how to solve the puzzle. The solution of the puzzle is also provided in the green cells. 2 2 The data in the file is guaranteed to be well-formed, so no error checking is required. The first line of data for a skyscraper will be the top clues for the 4 columns. The second line will start with the clue for the row looking from left to right, followed by the 4 skyscraper heights, followed by the clue for that row looking from right to left. Lines 3, 4, and 5 will be formatted as line 2. The final row will contain the bottom clues for the 4 columns. All values will be separated by a single space. Each line of data in the file will end with a newline/carriage return (n). There will be no trailing lines in the file. 2 As an example, the input file for the above example looks like this: 1233 143 214 214 32 3 2 3 2 14 1 2 2 14 3 2 3312 Another example that has two skyscrapers (the first one is valid but the second one) 3221 3 1 3 2 4 1 2 2 14 3 2 1 4 2 3 1 4 2 3 4 1 2 2 2133 1 2 3 4 31 3 2 4 1 221432 1 4 2 3 13 234122 2 1 3 3 N 13 Hi 1 123 1 1 3 2 243 342 4 3 2 14 4 3 23 2 41 4 32 3 103 1 33 & K 33 1 2
2133 2 123 For each skyscraper read from the input file your program should first print that skyscraper, but with a space before the clues for the columns There should NOT be spaces between any of the clues or skyscraper building heights. After printing the skyscraper you should print either the word VALID if the clues for that skyscraper were met or the words NOT VALID otherwise. VALID or NOT VALID (ALL CAPS REQUIRED) should occur on the line immediately following the skyscraper and should be followed by a newline/carriage return (n). Based on the second example input file above your output should look like this: 3221 313241 221432 142313 234122 2133 VALID 3221 313241 221432 142313 234122 2133 NOT VALID Note: the first and last line of each skyscraper have a space in front. In the Skyscraper class, you will need to provide at least three methods as following: Method Description public static int[] getSkyscrapers(Scanner) public static boolean validateSkyscrapers(int) public static void main(String[] args) The method use the Scanner parameter passed in the method to read skyscrapers from standard input into 2D array. The method validates the 2D array that read from standard input. The main method will run the workflow of the program.
The program does not compile will receive grade of zero. Place your code in a class named Skyscraper and the class. The class should contain a main method which should do the following for the Skyscraper class: 1. Check for the name of the input file specified as a command line argument. If the file is not there print an error message telling the program user the program must be run using the name of an input file that contains skyscraper information as a command line argument. 2. Open the file 3. Read from the file as long as there is skyscraper information - for each set of skyscraper data do the following: a. Assign the clues and skyscraper heights into at least one two-dimensional array of type int (if you would like to have one array for the clues and another for the skyscraper heights that is fine). b. Pass the information just read to a method called validateSkyscrapers. The method should examine the clues and the skyscraper heights and return true if the heights are valid based on the clues, false otherwise. c. Print the skyscraper clues and heights in the format specified above along with a message about whether the heights are valid (as specified above). The code to do this should be placed in a method printSkyscrapers which is passed whatever data you feel is necessary to print the required information. Note: the method printSkyscrapers is optional to implement. 4. Close the input file. 5. Print a message that says "COMPLETED PROCESSING SKYSCRAPERS (without the quotes) 6. You are welcome to write helper methods to complete the tasks above-modular design is an important part of good software development • Be sure your code follows the naming and coding conventions for the class: 1. Instance fields of a class should be named starting with 'my' 2. Parameters to methods should be named starting with the 3. Parameters to methods should be specified as final 4. Javadoc comments should be used for the class as well as the methods of the class 5. You will lose points for each of these things on every assignment if you do not ttu 6. Sen this docume