Task I Write an algorithm and a program that mimic the operations of the inside of an elevator. More specifically, the program simulates what happens when the user chooses to go to a particular floor, and it simulates what happens when the user pulls the elevator?? fire alarm. Assume the elevator is in a high-rise building that has floors numbered 1 through 100. Within your Elevator class, include these methods: ? SelectFloor – This method prompts the user for a floor selection and then performs input validation for the floor selection. If the floor selection is inappropriate (less than 1, greater than 100), then the method prints an error message. If the floor selection is OK, the method simulates going to that floor. See the sample session below for the format of the simulation message. ? FireAlarm- This method prints a ??anger??message and then simulates going to the first floor. Note that I?? assuming this is a high tech fire alarm that is programmed to force the elevator to go to the first floor! See the sample session below for the format of the ??anger??message. Within your ElevatorDriver class, use a loop that continues until the user enters ????for quit. See the sample session for details. Sample session: Welcome to XXX?? (students name and ID) elevator simulator! Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> x Invalid selection. Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> F Danger! You must exit the building now! Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> s Enter the floor that you’d like to go to ==> 102 Invalid floor selection – must be between 1 and 100. Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> s Enter the floor that you’d like to go to ==> 15 Going up..2..3..4..5..6..7..8..9..10..11..12..13..14..15..Ding! Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> s Enter the floor that you’d like to go to ==> 10 Going down..14..13..12..11..10..Ding! Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> f Danger! You must exit the building now! Going down..9..8..7..6..5..4..3..2..1..Ding! Options: (s)elect a floor, (f)ire alarm, (q)uit Enter s, f, or q ==> q Optional extension: Some hotels cater to superstitious people by omitting the 13th floor. Modify your program so that there is no 13th floor. Task 2 Write an algorithm and a program that plays the ancient Chinese game of NIM. Actually, this is a simplified version of the game. Each game starts with a user-specified number of stones in a pile. The user and the computer take turns removing either one or two stones from the pile. The player who takes the last stone loses. Your program should have the computer use the optimal playing strategy. The optimal strategy is as follows: Divide the remaining number of stones by three. If the remainder is zero, then two stones are removed, or else one stone is removed. For example, if the remaining number of stones is nine or fifteen, then two stones are removed; if the remaining number of stones is eight or ten, then one stone is removed. a) Your program should allow the user to play additional games of NIM as long as he/she enters a ????or ??es??(lowercase or uppercase) in response to a ??o you want to play again???prompt. See the sample session for required wording. Sample session: T H E G A M E O F N I M Enter number of starting stones: 7 Would you like to go first? (y/n): yEs How many would you like to remove ??1 or 2? 1 The number of stones left is 6. The computer removes 2 stones. The number of stones left is 4. How many would you like to remove ??1 or 2? 2 The number of stones left is 2. The computer removes 1 stone. The number of stones left is 1. How many would you like to remove ??1 or 2? 1 The number of stones left is 0. The computer wins! Do you want to play again? (y/n): Y Enter the number of starting stones: 4 Would you like to go first? (y/n): n The computer removes 1 stone. The number of stones left is 3. How many would you like to remove ??1 or 2? 2 The number of stones left is 1. The computer removes 1 stone. The number of stones left is 0. You win! Do you want to play again? (y/n): n b) Add input validation to your Nim program. More specifically, (1) ask the user to re-enter the number of starting stones if he/she doesn?? enter a positive number, and (2) ask the user to re-enter the number of stones to be removed if he/she doesn?? enter an appropriate number. Sample session: T H E G A M E O F N I M Enter the number of starting stones: 7 Would you like to go first? (y/n): yEs How many would you like to remove ??1 or 2? 1 The number of stones left is 6. The computer removes 2 stones. The number of stones left is 4. How many would you like to remove ??1 or 2? 2 The number of stones left is 2. The computer removes 1 stone. The number of stones left is 1. How many would you like to remove ??1 or 2? 2 You cannot remove 2 stones. How many would you like to remove ??1 or 2? 1 The number of stones left is 0. The computer wins! Do you want to play again? (y/n): Y Enter the number of starting stones: 0 You cannot start with 0 stones. Enter the number of starting stones: 4 Would you like to go first? (y/n): n The computer removes 1 stone. The number of stones left is 3. How many would you like to remove ??1 or 2? 0 You cannot remove 0 stones. How many would you like to remove ??1 or 2? 3 You cannot remove 3 stones. How many would you like to remove ??1 or 2? 2 The number of stones left is 1. The computer removes 1 stone. The number of stones left is 0. You win! Do you want to play again? (y/n): n