Python please!
In this program, you will implement a simplified text version of the 7 Little Words — game. (For those of you who may not know, 00000111 interpreted as a base 2 number is 7 in base 10.) The 7 Little Words website explains the game and will allow you to play it. Our text version is very similar, but breaks every solution word into only two pieces, then displays those words in text boxes vertically instead of as a graphical grid. Our version does not give the hint of how many letters a solution is but otherwise works very similar to the game on the website. The clues must be solved in order and the user can ask for multiple hints for each clue. Hints can be the first letter of the solution, the first "slice" or part of the solution word in the puzzle, or the whole word. Two files for this assignment, generator.py and terminal_ui.py
(7 little words website: https://www.7littlewords.com)



Thank you!
prompt_for_string(message, min) This function will prompt the user using the message(String) passed to it, read in the user's response as a String from user input and then return the response as a String. If the user enters a string with a length (number of letters/char) strictly less than the length indicated by min (int), then they will be reprompted. The return value should be a valid string once finally entered of length min. Example: terminal_ui.prompt_for_string("Enter string", 2) where the user enters "m" would reprompt until a longer word is entered. If the first string of 2 or more letters the user enters is "magnetism", the string returned will be magnetism. Note that if quotes are included in the user's entry they will be included in the String returned by the function. Below is an example from running terminal_ui_driver. Enter string: \( m \) Enter string: Enter string: magnetism Your string was magnetism prompt_for_int(message, max) This function will prompt the user using the message passed to it, read in the user's response as an integer from user input then return the response as an int. If the user enters an integer that is strictly less than one or greater than max, then they should be reprompted for a new integer. The return from the function should be the valid int up to max size. Example: terminal_ui.prompt_for_int("Enter integer 1-12", 12) where the user enters 0 would reprompt until an integer between 1 and 12 inclusive is entered. If the first number the user enters that is within the range 1-12 is 12 , the int returned will be 12 . Below is an example from running terminal_ui_driver. Enter integer 1-12: 0 Enter integer 1-12: 13 Enter integer 1-12: 12 Your integer was 12 prompt_n_display_hints(solution) This function will prompt the user to see if they want a hint as described below, then print out the correct hint, reprompting as long as the user asks for a proper hint. If the user enters an " \( n \) " or any other response than a proper hint, the prompting stops. Example: terminal_ui.prompt_n_display_hints( "magnetism") where the user enters each kind of hint in order, would display each hint in order. Below is an example from running terminal_ui_driver. Want a hint? Enter " \( f \) " for first letter "s" for first slice "w" for whole word " \( n \) " for none: \( f \) \( \mathrm{m} \) Want a hint? Enter "f" for first letter "s" for first slice "w" for whole word "n" for none: s magn Want a hint? Enter " \( f \) " for first letter "s" for first slice "w" for whole word " \( n \) " for none: \( w \) magnetism Want a hint? Enter " \( f \) " for first letter "s" for first slice "w" for whole word " \( n \) " for none: \( n \) word_splicer(solutions) This function will split each of the words of the solutions array in half. If the word has an odd number of characters the smaller piece will be the first slice and the longer the second slice. A "board" list of half words will be returned. board list will have twice as many elements as the solutions list and the first two elements will be the two halves of first solution word, the third and fourth elements the two halves of the second solution word, etc. Note that this function should return null if the solutions list is null or of zero length. If there are words in the solutions list they will be a minimum of two letters (char). The algorithm used for this section should work with any reasonable size solutions list. Example: generator.word_splicer(["tofutti", "magnetism"]) would return ["tof", "utti", "magn", "etism"]. clue_to_string(clues) This function will create a string that will print out the clues. Each clue should be on it's own line with the user referenced number (i.e. first element is 1 as opposed to 0), followed immediately by a ')', followed by a space, and then the clue. If the clues list is null or empty, the function should return the empty string ("'"). Example: generator.clue_to_string(["a small bird", "common flavor"]) would return "1) a small bird \( \backslash n 2 \) ) common flavor \( \backslash \) n". board_to_string (board) This function will create a string that will print out the board. Each slice should look like it is in a box. Each slice will be preceded and followed by a line of dashes as long as the slice plus an additional 9 dashes. The line with the slice will be as follows: a |, followed by a space, followed by the user referenced number (i.e. first element is 1 as opposed to 0 ) formatted as two digits, followed by a space, followed by |, followed by a space, and then the clue, followed by a space and then a final \( \mid \). Example: generator.board_to_string( ["tof", "utti"]) would return \( \backslash \mathrm{n}-\mathrm{n}^{-}-\mathrm{m}-\mathrm{n} \mathrm{n}^{\prime \prime} \).