Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """A board is a list of list of str. For example, the board
- ANTT
- XSOB
- is represented as the list
- [['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
- A word list is a list of str. For example, the list of words
- ANT
- BOX
- SOB
- TO
- is represented as the list
- ['ANT', 'BOX', 'SOB', 'TO']
- """
- def is_valid_word(wordlist, word):
- """ (list of str, str) -> bool
- Return True if and only if word is an element of wordlist.
- >>> is_valid_word(['ANT', 'BOX', 'SOB', 'TO'], 'TO')
- True
- """
- return word in wordlist
- def make_str_from_row(board, row_index):
- """ (list of list of str, int) -> str
- Return the characters from the row of the board with index row_index
- as a single string.
- >>> make_str_from_row([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 0)
- 'ANTT'
- """
- return ''.join(board[row_index])
- def make_str_from_column(board, column_index):
- """ (list of list of str, int) -> str
- Return the characters from the column of the board with index column_index
- as a single string.
- >>> make_str_from_column([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 1)
- 'NS'
- """
- return "".join([row[column_index] for row in board])
- def board_contains_word_in_row(board, word):
- """ (list of list of str, str) -> bool
- Return True if and only if one or more of the rows of the board contains
- word.
- Precondition: board has at least one row and one column, and word is a
- valid word.
- >>> board_contains_word_in_row([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'SOB')
- True
- """
- return (True in [word in make_str_from_row(board, row_index) for row_index in range(len(board))] and [True] or [False])[0]
- def board_contains_word_in_column(board, word):
- """ (list of list of str, str) -> bool
- Return True if and only if one or more of the columns of the board
- contains word.
- Precondition: board has at least one row and one column, and word is a
- valid word.
- >>> board_contains_word_in_column([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'NO')
- False
- """
- return (True in [word in make_str_from_column(board, column_index) for column_index in range(len(board[0]))] and [True] or [False])[0]
- def board_contains_word(board, word):
- """ (list of list of str, str) -> bool
- Return True if and only if word appears in board.
- Precondition: board has at least one row and one column.
- >>> board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'ANT')
- True
- """
- return board_contains_word_in_row(board, word) or board_contains_word_in_column(board, word)
- def word_score(word):
- """ (str) -> int
- Return the point value the word earns.
- Word length: < 3: 0 points
- 3-6: 1 point per character for all characters in word
- 7-9: 2 points per character for all characters in word
- 10+: 3 points per character for all characters in word
- >>> word_score('DRUDGERY')
- 16
- """
- return (2 < len(word) < 7 and [len(word) * 1] or [(6 < len(word) < 10 and [len(word) * 2] or [(len(word) > 9 and [len(word) * 3] or [0])[0]])[0]])[0]
- def update_score(player_info, word):
- """ ([str, int] list, str) -> NoneType
- player_info is a list with the player's name and score. Update player_info
- by adding the point value word earns to the player's score.
- >>> update_score(['Jonathan', 4], 'ANT')
- """
- player_info[1] += word_score(word)
- def num_words_on_board(board, words):
- """ (list of list of str, list of str) -> int
- Return how many words appear on board.
- >>> num_words_on_board([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])
- 3
- """
- return sum([board_contains_word(board, word) for word in words])
- def read_words(words_file):
- """ (file open for reading) -> list of str
- Return a list of all words (with newlines removed) from open file
- words_file.
- Precondition: Each line of the file contains a word in uppercase characters
- from the standard English alphabet.
- """
- return list(line.rstrip('\n') for line in words_file)
- def read_board(board_file):
- """ (file open for reading) -> list of list of str
- Return a board read from open file board_file. The board file will contain
- one row of the board per line. Newlines are not included in the board.
- """
- return list(list(line.rstrip('\n')) for line in board_file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement