Problem Statement
Given a
{"LL-L-", "L+L+L", "--NL-", "L+--L", "LL+L-"}
This is a graphical representation of the puzzle above.
Definition
- Class:
- PipePuzzle
- Method:
- longest
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int longest(String[] pipes)
- (be sure your method is public)
Notes
- In each grid, south is the direction of increasing index within pipes, and north that of decreasing index. East is the direction of increasing index within an element of pipes, and west that of decreasing index.
Constraints
- pipes will have between 1 and 20 elements, inclusive.
- Each element of pipes will have length between 1 and 20, inclusive.
- Every element of pipes will have the same length.
- pipes will only contain the characters ('-', 'L', '+', 'N', 'S', 'E', 'W').
- pipes will have exactly one water source.
- pipes will contain between 0 and 20 elbow 'L' pipes, inclusive.
Examples
{"LL-L-", "L+L+L", "--NL-", "L+--L", "LL+L-"}
Returns: 19
{"ELLL", "LLLL", "LLLL", "LLLL"}
Returns: 13
{"ELLLLL+", "++++++L", "L+++++L", "L+++++L", "L+++++L", "L+++++L", "+LLLLLL"}
Returns: 71
{"LLLLL", "LLELL", "LLLLL", "LLLLL"}
Returns: 11
{"-+-+-+-+-+-+-+-+-+-W"}
Returns: 19
{"N"}
Returns: 0
{"S"}
Returns: 0
{"E"}
Returns: 0
{"W"}
Returns: 0
{"LL", "LN"}
Returns: 3
{"L++L++L","--+N-+L","+++L+++","-++++LL","+L+L-+L","+++LL+L","+L+++++","++L+LL-","LL--L++"}
Returns: 20
{"++-LL+-","++L++L+","+LL++-L","+-+L++-","-L+L+++","--LN+L+","+LLL+LL","L+++L++"}
Returns: 15
{"LEL+L+-L-L-+","-+++--+++--+","++++L+--+++-","-L+--+-+-+-L","-L+L++++-+LL","+-LL+--LLL-+"}
Returns: 24
{"-++++++++++","++L-L++-+LL","+++++++++--","++-------L+","LL+++L-++++","-++L+-+-+++","++N+L-L-+L+","+L++++++L-L"}
Returns: 20
{"++LLLL-LL+++-+++","--+-+L+-++-LL-+-","--++----++L-++L-","L++-L++++---+-+L","L++--+--+++--+++","+L+L+-+W+L++L-+L"}
Returns: 36
{"++++++","+L++++","++-+LL","L+L+++","++L+LS","++++LL","L+++++"}
Returns: 16
{"+++++-+-++++","-+-++---+-++","SLL++-++++-+","-++-+-L-L-++","-+L++++L++++","--++--+++LL+","++++++--+++-","LL--L++L++++","-L++++-+++++","---+L+L-++++","-++--+++-+++","++L+++L+++++","++++++++++++","+++++++-++++","+-++++++L++-","++-+++++++++"}
Returns: 56
{"+LL","L+L","-LL","LLL","S++","L+L","+++","+LL","LL+","++L","+LL","+L+"}
Returns: 21
{"+++++++","+++L+L+","-+-+++L","++++L++","++++L+S","++L+L++","++L++L+","++L+L++","+++++++","+++++LL","+++++++","+LL+L++","+LLL+++"}
Returns: 40
{"++LL","LL-L","-L+W","+-L+","LLLL","L-+L","+-LL","+LL-"}
Returns: 16
{"LL+L","LL+L","LLLL","SLL+","L+LL"}
Returns: 14
{"+++++-+-+++--+-+++-L","+++++--+L+++++++++++","++++++++++++++++-+++","+---+-+++++-++++++++","+++-++++-+++++++++++","++++-+++++-++++-+-++","-+++++--+++-L+++++++","+++++++-+++++++++--+","--+++-+-+-+++-++++LL","++++++++++++L++++++-","+-++++--+++++-+-+-++","L+++++-+++++++++--++","++++-++++-++++++++++","++L+--+-+-+-+-----++","++++--+-++L+++++++++","++-+++++L+++++++++++","+++++++++++-+-++++-+","+-+++++++++-+-++++-+","++++L+++-+++++-+-+LN","++++-++-+++++--+-+++"}
Returns: 53
{"+LL","LL+","+++","L+L","LLL","LNL"}
Returns: 12
{"-+-+++L","LL+LLLL","-L-+---","+L+--++","+LL-+-L","+--L+NL","+LL+LL-"}
Returns: 18
{"LL+WLLLL","LLLL++L+","LLLLL+-L"}
Returns: 22
{"L++-+-+L+","LL+LE-+LL","+++-++-L+","+++---+++","+++-++-++","L------++","+-+--+-++","++++L--+-","-+L-L++++","--+++++++"}
Returns: 21
{"-+++L+++++L+L++++","-++++-++++-+++++L","++++++L++L+++L++L","+++++L+++++-+--+L","+--+++--+++++++L+","+-++++++++++L++++","-+-E+-++++++L+++-","L++-++++++++L+-L+"}
Returns: 31
{"L++LL+","++L+++","+++LL-","L++++L","++++++","++++++","-++L+L","L-++L+","+--+++","LL+--+","-+L+++","L+S--+","++++++","+LL+++"}
Returns: 45
{"--+L+L+++++","-+S++-++--+","-+-L-+---+-","+-++-+-L---","-+L+++++-+L","+---L+--+L+","+++L-+-+++-","--+++++-+++","++-+-----L+","-L+---+++LL","---+-+++-+-","--++--+-L++","++---+++++L","-+++-++++L-"}
Returns: 30
{"+L++LL+L++LL","+L+L-+++-++L","+LLL++--L+LN","L+-+L-+-+L+L"}
Returns: 16
{"+-+L+L","--L-++","++LLL+","L++++-","L+L+W+","++L--L","--++++","+-+-LL","+++L+-"}
Returns: 20
{"+++++L++++++++L+","++++++++++++++++","+LL++L+W++++++++","++L++L++++++++++","++++++++++++++++","++-+++++++L-++++","+++++++-++L+++++","++++++++++++L+L+","+++++++LL+++++++","L+L-++++++++++++","L+++-++L++++++++","++++--++++-+++++","++++-+++++++++++","++++++++++++++++","++++++++++++++++","++++++++++++++++","-+++++++++++++++","+++++L++++++++++","+++++++L+++++-++"}
Returns: 38
{"L++L","LL-L","+-+L","-LL+","LLN+","LL--","L++L","L+-L","L-+-"}
Returns: 23
{"++LL++L++","+++LLL+++","-+L++++++","+++-++L++","L+L+-+WL+","-+++++L++","L+L+++L++","++L++++L+"}
Returns: 17
{"--L-+L+---L","L+++-LLL--+","+++L-L+++LL","+-+LLL++LL+","L+++-WL+++-"}
Returns: 26
{"+L++","LL+L","LE+L","LLLL"}
Returns: 8
{"L+L+++","++L+LL","LLLL-L","L++L-+","+L-LL+","LLNLL+"}
Returns: 13
{"L-+L+L-+--++","L-++L--+++-+","+++++--++L++","+-+++++++--+","--++LL-+-+-+","+E-L++-+++-+","+++++---++++","++-+--++-+++","+++-L-++L+++","++++--+LL+L+","-+---++L+L-+"}
Returns: 38
{"+LWL","++L+","LL++","+-+-","+L++","+LL+","+L+L","L++L","+L+L","+LL+"}
Returns: 31
{"+--+L++-L--++-+-+LL","+-++-+-++-LL+E+L+-+","--+L+-LL+++-++L+++L","--++L+++++++---L++-","-++---+-+-++L--L---"}
Returns: 26
{"-++++++","L+-+--+","++++++-","-++-+++","-+++-++","-+-+++S","+++L+++","+++LLLL","++-++-L","++-+++L","+++-+++","++L+L+-","+L-+-L+","++L++++"}
Returns: 24
{"+++++L+","++L++L+","+++++++","++NL+++","L++++-L","++++-++","+-+++++","+--+++L","++++++L","+++L+++","++-+++L","++L+++L","+++L++-","++-++++","+++++L-"}
Returns: 23
{"+LL++L-++-+++L+","+++++++-++-++++","+L++-+-+++L++++","++++++-+++-L++-","+-+++-++++-++++","++++++++++++++-","++++++++++++--+","+-+++++++++++++","+LL+++++++++-++","++++++-+++L-++L","++++++L+L-E+++L","+-+++++++++L+LL","-++++L++++++++-","+-++++-+-+++++L"}
Returns: 64
{"L+LL+","L+++L","L++L+","LLN+L","LL++L"}
Returns: 17
{"++-+L+++++-+LL--++","-++++---++-+-++-++","+++S++--+++--+-++-","-+L++-+-++--L---L-","L+LL-++-+-+L+++L++","-++++-++++++-+-+--","+-+--+-++++-+++-++","+++++++--+++++-+++","+-+-++--++L++-L-++","++L++L+L-+++---+++","+-+--+--+---+-+-+-"}
Returns: 35
{"-L-L+","+L+LW","+-++L","-+LL+","L-LL-","L+-LL"}
Returns: 15
{"+++++++++++++++++","++L++++++++++++++","+++++++++++++++S+","++++++++++++++-++","+++++++++++++++++","++++++++++++++++L","+++++-L++++++++++","+-++L+L++++++++++","L++++++++++++L+++","+L+++++-++++++-++","+++++++++++++++++","+++++L++++L++++++","++++++++++++L++++","+++++++++-+++++LL","++LL+++++L++++++L"}
Returns: 36
{"+++++++LL+-","+++-+L+LL-L","LL--++++L++","+L-L++L+++-","LL+++-+--++","+++++++E++L","+-+L+L+++L+"}
Returns: 40
{"+++++++++L+++++","+++++L++L+L++L+","+++L+++L-++++L+","+++LL+L++++++++","+++L+++++LL+++L","+-+++LL+++E+++L"}
Returns: 25
{"LLL+EL","LL+LLL","L+LLLL","LLLLL+"}
Returns: 17
{ "EL", "LL" }
Returns: 3
{ "L------------L------", "N++++++++++++L++++++" }
Returns: 27
{ "L------------L------", "E++++++++++++L++++++" }
Returns: 27
{ "L------------L------", "N++++++++L+++L++++++" }
Returns: 21
{ "L------------L------", "E++++++++L+++L++++++" }
Returns: 10
{ "+--+-+-+-++-++-+-+-+", "+--+-+-+-++-++-+-+-+", "+--+N+-+-++-++-+-+-+", "-------+-+++++++++++", "++++++-+-++-++------", "+-+-++-++-+-+-++--+-" }
Returns: 2
{ "+--+-+-+-+++-+-+-+-+", "+--+-+-+-+++-+-+-+-+", "+--+-+-+-+++-+-+-+-+", "-E-----+++++++++++++", "++++++-+-+++-+------", "+-+-++-++-+-+-++--+-" }
Returns: 18
{ "+--+-+-++-++-+-+-+-+", "+--+-+-++-++-+-+-+-+", "+--+++-++-++-+-+-+-+", "-------+++++++++++++", "+++W++-++-++-++-----", "+-+-++--+-+-+-++--+-" }
Returns: 3
{ "+--+-+-++-++-S-+-+-+", "+--+-+-++-++-+-+-+-+", "+--+++-++-++-+-+-+-+", "-------+++++++++++++", "++++++-++-++-+------", "+-+-++--+-+-+-++--+-" }
Returns: 5
{"ELLLLL+", "++++++L", "L+++++L", "L+++++L", "L+++++L", "L+++++L", "+LLLLLL" }
Returns: 71