Question: Please do all requirements as shown in the examples (two java codes one for v1 and one for v2) and compare them!! In this programming
Please do all requirements as shown in the examples (two java codes one for v1 and one for v2) and compare them!!



In this programming part you are asked to implement phase-1 of a game called #tictactoe. #tictactoe game consists of one row of any number of squares, where some of the squares store noughts and crosses (i.e., Os and Xs), and the remaining squares store the character "#". The squares storing the "#" character each hide their actual content which must be either an X or an o. In this programming assignment, you will design in pseudo code and implement in Java two versions of #tictactoe game phase-1. A program that takes as input your game row of any length of random number of squares with X and 0, and hidden squares with "#", and finds all possible rows of noughts and crosses that can be constructed by replacing the hidden squares (storing "#") with either X or 0. Version 1: In your first version, you must write a recursive method called UnHide which reads the row (and any other parameters; e.g., length, start index and end index of row, etc., if needed) and generates ALL possible combinations of that rows without the hidden # square. For example; given: a) A row [XOXX#0O#XO), the method UnHide will display something like: | XOXXO00 XOXXOOOXXO XOXXXOOOXO XOXXXOOXXO b) A row [XOXX#0O#XOXX#O##] the method UnHide will display something like: XOXXO00OXOXXO000 XOXXO000XOXXODOX XOXXO000XOXXOOXO XOXXOOOOXOXXOOXX XOXXO000XOXXX000 XOXXO000XOXXXOOX XOXXO000XOXXXOXO XOXXO000XOXXXOXX XOXXODOXXOXXO000 XOXXOOOXXOXXOOOX XOXXODOXXOXXOOXO XOXXODOXXOXXOOXX XOXXODOXXOXXXO00 XOXXOOOXXOXXXOOX XOXXODOXXOXXXOXO XOXXOOOXXOXXXOXX ODOXOXXO000 XOXXXOOOXOXXOOOX ODOXOXXOOXO XOXXXOOOXOXXOOXX XOXXXODOXOXXXO00 XOXXXOOOXOXXXOOX XOXXXODOXOXXXOXO XOXXXODOXOXXXOXX XOXXXOOXXOXXO000 XOXXXOOXXOXXOOOX XOXXXOOXXOXXOOXO XOXXXOOXXOXXOOXX XOXXXOOXXOXXXO00 XOXXXOOXXOXXXOOX XOXXXOOXXOXXXOXO XOXXXOOXXOXXXOXX You will need to run the program multiple times. With each run, you will need to provide a random generated row size with a hidden" # tail in an incremented number from 2, 4, 6, up to 100 (or higher value if required for your timing measurement) and measure the corresponding run time for each run You can use Java's built-in time function for finding the execution time. You should redirect the output of each program to an out.txt file. You should write about your observations on timing measurements in a separate text file. You are required to submit the two fully commented Java source files, the compiled executables, and the text files. Briefly explain what is the complexity of your algorithm. More specifically, has your solution has an acceptable complexity; is it scalable enough; etc. If not, what are the reasons behind that? Version 2: In this version, you will need to provide an alternative/different solution to solve the same exact problem as above). This second solution must be iterative and not recursive, and can use any linear data structure such as array, stack, queue, list. etc. a) Explain the details of your algorithm, and provide its time and space complexity. You must clearly justify how you estimated the complexity of your solution. b) Compare the complexities between version i and version 2 In this programming part you are asked to implement phase-1 of a game called #tictactoe. #tictactoe game consists of one row of any number of squares, where some of the squares store noughts and crosses (i.e., Os and Xs), and the remaining squares store the character "#". The squares storing the "#" character each hide their actual content which must be either an X or an o. In this programming assignment, you will design in pseudo code and implement in Java two versions of #tictactoe game phase-1. A program that takes as input your game row of any length of random number of squares with X and 0, and hidden squares with "#", and finds all possible rows of noughts and crosses that can be constructed by replacing the hidden squares (storing "#") with either X or 0. Version 1: In your first version, you must write a recursive method called UnHide which reads the row (and any other parameters; e.g., length, start index and end index of row, etc., if needed) and generates ALL possible combinations of that rows without the hidden # square. For example; given: a) A row [XOXX#0O#XO), the method UnHide will display something like: | XOXXO00 XOXXOOOXXO XOXXXOOOXO XOXXXOOXXO b) A row [XOXX#0O#XOXX#O##] the method UnHide will display something like: XOXXO00OXOXXO000 XOXXO000XOXXODOX XOXXO000XOXXOOXO XOXXOOOOXOXXOOXX XOXXO000XOXXX000 XOXXO000XOXXXOOX XOXXO000XOXXXOXO XOXXO000XOXXXOXX XOXXODOXXOXXO000 XOXXOOOXXOXXOOOX XOXXODOXXOXXOOXO XOXXODOXXOXXOOXX XOXXODOXXOXXXO00 XOXXOOOXXOXXXOOX XOXXODOXXOXXXOXO XOXXOOOXXOXXXOXX ODOXOXXO000 XOXXXOOOXOXXOOOX ODOXOXXOOXO XOXXXOOOXOXXOOXX XOXXXODOXOXXXO00 XOXXXOOOXOXXXOOX XOXXXODOXOXXXOXO XOXXXODOXOXXXOXX XOXXXOOXXOXXO000 XOXXXOOXXOXXOOOX XOXXXOOXXOXXOOXO XOXXXOOXXOXXOOXX XOXXXOOXXOXXXO00 XOXXXOOXXOXXXOOX XOXXXOOXXOXXXOXO XOXXXOOXXOXXXOXX You will need to run the program multiple times. With each run, you will need to provide a random generated row size with a hidden" # tail in an incremented number from 2, 4, 6, up to 100 (or higher value if required for your timing measurement) and measure the corresponding run time for each run You can use Java's built-in time function for finding the execution time. You should redirect the output of each program to an out.txt file. You should write about your observations on timing measurements in a separate text file. You are required to submit the two fully commented Java source files, the compiled executables, and the text files. Briefly explain what is the complexity of your algorithm. More specifically, has your solution has an acceptable complexity; is it scalable enough; etc. If not, what are the reasons behind that? Version 2: In this version, you will need to provide an alternative/different solution to solve the same exact problem as above). This second solution must be iterative and not recursive, and can use any linear data structure such as array, stack, queue, list. etc. a) Explain the details of your algorithm, and provide its time and space complexity. You must clearly justify how you estimated the complexity of your solution. b) Compare the complexities between version i and version 2
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
