Problem Statement
Given is a
The word w can appear in any of the 8 cardinal directions (horizontally, vertically, or diagonally). An occurrence of a word is a set of positions in the grid that lie in one of those directions and contain the letters of w, in order. In particular, if w is a palindrome (i.e., reads the same forwards and backwards), it can still have only one occurrence in the grid, even though that occurrence can be read in two different directions.
Return any
- It describes a square grid of uppercase English letters.
- Each letter in the grid appears somewhere in w.
- The side of the grid must be at most 20.
- The grid must contain exactly one occurrence of w.
If no such grid exists, return an empty
Definition
- Class:
- TrivialWordSearch
- Method:
- construct
- Parameters:
- String
- Returns:
- String[]
- Method signature:
- String[] construct(String w)
- (be sure your method is public)
Constraints
- w will contain between 1 and 10 characters, inclusive.
- Each character in w will be an uppercase English letter ('A'-'Z').
Examples
"DOG"
Returns: {"DGOODDO", "DODGOGG", "DGOODDD", "GOOGDGO", "GOGGOGD", "DOOGDOO", "OOGGOOD" }
The returned grid: DGOODDO DODGOGG DGOODDD GOOGDGO GOGGOGD DOOGDOO OOGGOOD The only occurrence of DOG in this grid: ******* ******* D****** *O***** **G**** ******* *******
"ABBA"
Returns: {"BABA", "AABB", "ABAA", "ABAB" }
The only occurrence of ABBA is on the diagonal from the top right to the bottom left (or vice versa, as ABBA is a palindrome).
"TOPCODER"
Returns: {"TOPTOPTOPTOP", "TOPTORTOPTOP", "TOPTOETOPTOP", "TOPTODTOPTOP", "TOPTOOTOPTOP", "TOPTOCTOPTOP", "TOPTOPTOPTOP", "TOPTOOTOPTOP", "TOPTOTTOPTOP", "TOPTOPTOPTOP", "TOPTOPTOPOOP", "TOPTOPTOPTOP" }
"XXXXX"
Returns: { }
There is no valid word search grid that would contain exactly one occurrence of XXXXX. As the grid must be a square and you can only use the letter X, there will be many different occurrences of XXXXX in that grid.
"E"
Returns: {"E" }
A word search puzzle doesn't get any more trivial than this.
"BB"
Returns: { }
"EY"
Returns: { }
"EEL"
Returns: {"EEL", "LLL", "LLL" }
"LEE"
Returns: {"LEE", "LLL", "LLL" }
"LOL"
Returns: {"LOL", "LLL", "LLL" }
"ACE"
Returns: {"ACE", "AAA", "AAA" }
"AAA"
Returns: { }
"EERR"
Returns: {"EERR", "EEEE", "EEEE", "EEEE" }
"HAHA"
Returns: {"HAHA", "HHHH", "HHHH", "HHHH" }
"POOP"
Returns: {"POOP", "PPPP", "PPPP", "PPPP" }
"EELE"
Returns: {"EELE", "EEEE", "EEEE", "EEEE" }
"LOOO"
Returns: {"LOOO", "LLLL", "LLLL", "LLLL" }
"UUUP"
Returns: {"UUUP", "PPPP", "PPPP", "PPPP" }
"TTTT"
Returns: { }
"ZZAA"
Returns: {"ZZAA", "ZZZZ", "ZZZZ", "ZZZZ" }
"TTUUUUUUUU"
Returns: {"TTUUUUUUUU", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT", "TTTTTTTTTT" }
"TUUUUUUUU"
Returns: {"TUUUUUUUU", "TTTTTTTTT", "TTTTTTTTT", "TTTTTTTTT", "TTTTTTTTT", "TTTTTTTTT", "TTTTTTTTT", "TTTTTTTTT", "TTTTTTTTT" }
"GGGGGGGF"
Returns: {"GGGGGGGF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF" }
"GFGFFGFGF"
Returns: {"GFGFFGFGF", "GGGGGGGGG", "GGGGGGGGG", "GGGGGGGGG", "GGGGGGGGG", "GGGGGGGGG", "GGGGGGGGG", "GGGGGGGGG", "GGGGGGGGG" }
"FHDSFFSD"
Returns: {"FHDSFFSD", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF" }
"DGDSSRRV"
Returns: {"DGDSSRRV", "DDDDDDDD", "DDDDDDDD", "DDDDDDDD", "DDDDDDDD", "DDDDDDDD", "DDDDDDDD", "DDDDDDDD" }
"QWERTYUIOP"
Returns: {"QWERTYUIOP", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ", "QQQQQQQQQQ" }
"POPOPOPOPO"
Returns: {"POPOPOPOPO", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP", "PPPPPPPPPP" }
"FFFFFFFFFF"
Returns: { }
"FLF"
Returns: {"FLF", "FFF", "FFF" }
"OCC"
Returns: {"OCC", "OOO", "OOO" }
"CCCZ"
Returns: {"CCCZ", "ZZZZ", "ZZZZ", "ZZZZ" }
"SSO"
Returns: {"SSO", "OOO", "OOO" }
"JJJ"
Returns: { }
"YWY"
Returns: {"YWY", "YYY", "YYY" }
"RNN"
Returns: {"RNN", "RRR", "RRR" }
"VVM"
Returns: {"VVM", "MMM", "MMM" }
"EDE"
Returns: {"EDE", "EEE", "EEE" }
"QLQ"
Returns: {"QLQ", "QQQ", "QQQ" }
"BBB"
Returns: { }
"FFJ"
Returns: {"FFJ", "JJJ", "JJJ" }
"HQQH"
Returns: {"HQQH", "HHHH", "HHHH", "HHHH" }
"TTT"
Returns: { }
"IIU"
Returns: {"IIU", "UUU", "UUU" }
"JJJU"
Returns: {"JJJU", "UUUU", "UUUU", "UUUU" }
"ZKZ"
Returns: {"ZKZ", "ZZZ", "ZZZ" }
"QII"
Returns: {"QII", "QQQ", "QQQ" }
"AHH"
Returns: {"AHH", "AAA", "AAA" }
"MMM"
Returns: { }
"UEEU"
Returns: {"UEEU", "UUUU", "UUUU", "UUUU" }
"PPP"
Returns: { }
"LQQ"
Returns: {"LQQ", "LLL", "LLL" }
"EAE"
Returns: {"EAE", "EEE", "EEE" }
"IXI"
Returns: {"IXI", "III", "III" }
"YRY"
Returns: {"YRY", "YYY", "YYY" }
"JJJ"
Returns: { }
"AJJ"
Returns: {"AJJ", "AAA", "AAA" }
"LII"
Returns: {"LII", "LLL", "LLL" }
"KFK"
Returns: {"KFK", "KKK", "KKK" }
"EYY"
Returns: {"EYY", "EEE", "EEE" }
"MMM"
Returns: { }
"VVVK"
Returns: {"VVVK", "KKKK", "KKKK", "KKKK" }
"CXC"
Returns: {"CXC", "CCC", "CCC" }
"HOHH"
Returns: {"HOHH", "HHHH", "HHHH", "HHHH" }
"PYY"
Returns: {"PYY", "PPP", "PPP" }
"YYY"
Returns: { }
"OOOO"
Returns: { }
"AAA"
Returns: { }
"ZZZZ"
Returns: { }
"ZZZ"
Returns: { }
"JOO"
Returns: {"JOO", "JJJ", "JJJ" }
"IXX"
Returns: {"IXX", "III", "III" }
"WWW"
Returns: { }
"VVU"
Returns: {"VVU", "UUU", "UUU" }
"HKH"
Returns: {"HKH", "HHH", "HHH" }
"AUA"
Returns: {"AUA", "AAA", "AAA" }
"EMEM"
Returns: {"EMEM", "EEEE", "EEEE", "EEEE" }
"OOO"
Returns: { }
"LLL"
Returns: { }
"AB"
Returns: { }
"TO"
Returns: { }
"DO"
Returns: { }
"DDG"
Returns: {"DDG", "GGG", "GGG" }
"TTO"
Returns: {"TTO", "OOO", "OOO" }
"A"
Returns: {"A" }
"BE"
Returns: { }
"AAAAAAB"
Returns: {"AAAAAAB", "BBBBBBB", "BBBBBBB", "BBBBBBB", "BBBBBBB", "BBBBBBB", "BBBBBBB" }
"DDAAA"
Returns: {"DDAAA", "DDDDD", "DDDDD", "DDDDD", "DDDDD" }
"AAAAB"
Returns: {"AAAAB", "BBBBB", "BBBBB", "BBBBB", "BBBBB" }
"AAB"
Returns: {"AAB", "BBB", "BBB" }
"TA"
Returns: { }
"XXXE"
Returns: {"XXXE", "EEEE", "EEEE", "EEEE" }
"XSS"
Returns: {"XSS", "XXX", "XXX" }
"XA"
Returns: { }
"ABC"
Returns: {"ABC", "AAA", "AAA" }
"AAAC"
Returns: {"AAAC", "CCCC", "CCCC", "CCCC" }
"AAAB"
Returns: {"AAAB", "BBBB", "BBBB", "BBBB" }
"DA"
Returns: { }
"CAAA"
Returns: {"CAAA", "CCCC", "CCCC", "CCCC" }
"AW"
Returns: { }
"BA"
Returns: { }
"ABBBB"
Returns: {"ABBBB", "AAAAA", "AAAAA", "AAAAA", "AAAAA" }
"ABB"
Returns: {"ABB", "AAA", "AAA" }