Question
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
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 can be seen from a given row or column in the city grid. 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 the right that satisfies the clues given on the left. 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. 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 ( ). There will be no trailing lines in the file. As an example, the input file for the above example looks like this: 1 2 3 3 1 4 3 2 1 4 2 1 4 3 2 3 2 3 2 1 4 1 2 2 1 4 3 2 3 3 1 2 Another example that has two skyscrapers (the first one is valid but the second one) 3 2 2 1 3 1 3 2 4 1 2 2 1 4 3 2 1 4 2 3 1 3 2 3 4 1 2 2 2 1 3 3 1 2 3 4 3 1 3 2 4 1 2 2 1 4 3 2 1 4 2 3 1 3 2 3 4 1 2 2 2 1 3 3 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 ( ). Based on the second example input file above your output should look like this: 3221 313241 221432 142313 234122 2133 VALID 1234 313241 221432 142313 234122 2133 NOT VALID COMPLETED PROCESSING SKYSCRAPERS 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) The method use the Scanner parameter passed in the method to read skyscrapers from standard input into 2D array. public static boolean validateSkyscrapers(int[][]) The method validates the 2D array that read from standard input. public static void main(String[] args) The main method will run the workflow of the program. Extra Credit: N/A Extra credit is only considered if the assignment submit (and complete) on-time according to original due date on syllabus. The due date is extended will not count. Implementation Guidelines: 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: 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. Open the file Read from the file as long as there is skyscraper information - for each set of skyscraper data do the following: Using the method getSkyscrapers to 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). The size of the 2D array should be 6x6. That means the top right, top left, bottom right, and bottom left corners should have unused values which are all zeroes Pass the 2D array 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. 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. Close the input file. Print a message that says "COMPLETED PROCESSING SKYSCRAPERS" (without the quotes) 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: Instance fields of a class should be named starting with 'my' Parameters to methods should be named starting with 'the' Parameters to methods should be specified as final Javadoc comments should be used for the class as well as the methods of the class You will lose points for each of these things on every assignment if you do not adhere to the rules. See this document for specifics (as well as an example): https://www.oracle.com/java/technologies/javase/codeconventions-introduction.html Download: Skyscraper.java skyscraper_1.txt (small input file) skyscraper_2.txt (big input file) readme.txt (example) Submission: Submit to Canvas a zip file named assignment01_LASTNAME_FIRSTNAME.zip (all lower cases) that contains the following files: (assignment01_hoang_varik.zip for example) Skyscraper.java documented and styled according to class standards. A readme.txt file that contains the following information Your name An estimate of the amount of time you spent completing the assignment Any problems that exist in the project (if there are not any please state so) Any questions you have for Varik about the assignment Rubric: Points Categories Comments - Functionality Compiled Skyscraper.java with error(s) will receive a grade of zero 50 Functionality Compiled Skyscraper.java with no error 10 Functionality The class Skyscraper had method getSkyscrapers worked correctly. 10 Functionality The class Skyscraper had method validateSkyscrapers worked correctly. 5 Functionality The class Skyscraper had method main passed all test cases. 5 Functionality The class Skyscraper had method main read data from input file (skyscraper_1.txt or skyscraper_2.txt). 5 Miscellaneous Compressed files as expected 10 Miscellaneous Commented for each class and each method 5 Miscellaneous Used spacing, indentation, naming methods, and header comments appropriately and consistently 100 Total Note: must pass all criterias if using LGS References: Webpage: https://brainbashers.com/skyscrapershelp.asp Game: https://www.puzzlemix.com/rules-skyscraper.php Game: https://www.puzzle-skyscrapers.com/
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started