TopcoderArchive
Archive
Algorithm problem

WordFindPuzzle

Problem statement, definition, constraints, and public examples.

Problem Statement

WordFind is one of the simplest and funnest puzzles to play by oneself. It is played on a rectangular board where each cell contains a lowercase letter ('a'-'z').

A word can be found horizontally on the board if there is a path of consecutive cells in the same row of the board that spells out the word either left-to-right or right-to-left. Similarly, a word can be found vertically on the board if there is a path of consecutive cells in the same column that spells out the word either top-to-bottom or bottom-to-top. See examples 0 and 1 for clarification.

A word can be perfectly found on the board if it can be found both vertically and horizontally. You are given a String[] board representing the board, and a String[] words containing a list of words. Return the number of words in the given list that can be perfectly found on the board.

Definition

Class:
WordFindPuzzle
Method:
solveWordFindPuzzle
Parameters:
String[], String[]
Returns:
int
Method signature:
int solveWordFindPuzzle(String[] words, String[] board)
(be sure your method is public)

Constraints

  • words will contain between 0 and 30 elements, inclusive.
  • Each element of words will contain between 1 and 30 characters, inclusive.
  • All elements of words will be distinct.
  • board will contain between 1 and 30 elements, inclusive.
  • Each element of board will contain between 1 and 30 characters, inclusive.
  • All elements of board will be of the same length.
  • All elements of words will contain only lowercase letters ('a'-'z').
  • All elements of board will contain only lowercase letters ('a'-'z').

Examples

  1. {"ab", "ba"}
    {"ab",
     "ba"}
    Returns: 2
  2. {"jay"}
    {"yaj",
     "tea",
     "hey"}
    Returns: 1
  3. {"aaa", "aab", "aac"}
    {"aaa",
     "aba",
     "caa"}
    Returns: 2
    "aaa" and "aac" can be perfectly found on this board.
  4. {"park", "kim", "lee", "choi"}
    {"lxamal",
     "alkime",
     "parkpe",
     "lyaeel",
     "aypepl"}
    Returns: 3
    Four common Korean last names are given as words. 3 most common last names, namely "kim", "lee", and "park", can be found on the board.
  5. {"ava", "abigail", "cailyn", "madeline", "isabella",
     "emma", "caitlyn", "olivia", "chloe", "brianna"}
    {"vase",
     "amme",
     "vmal",
     "aeve"}
    Returns: 1
    10 female names are given as words. "emma" is the only one perfectly found on the given board.
  6. {"alex", "bob", "chris", "david",
     "edward", "frank", "gabriel"}
    {"gabrielxl",
     "hfodavide",
     "arbibobri",
     "daavxelar",
     "enlalexwb",
     "nkedwarda",
     "cbxyzlaeg"}
    Returns: 5
    7 male names are given this time. You can perfectly find all but "chris" and "frank" on the board.
Back to all problems