Problem Statement
You begin at location 0, your home. Element k of dests is a space-separated list of locations that can be reached from location k. For each listed location j, element k of trades contains a 2-letter code NG. N is a character describing which item is needed to make the trip from location k to location j. G is also a character, and describes the item you will acquire by taking the trip. At least one of N or G will be '_', meaning you do not need an item, or do not acquire an item for the trip, respectively. For example, suppose element 3 of dests and trades are as given below.
dests[3] = "0 3 0 4" trades[3] = "a_ __ _B D_"One possible way to get from location 3 to location 0 requires item 'a' and earns you nothing. Another requires no item but you find item 'B'. The trip that returns to location 3 requires no item but also earns no item. Lastly, the trip to location 4 requires 'D', but produces nothing.
You can only take a trip that requires the next item you can pull out of your sack. Trips that require no item can always be taken. For example, to take the "a_" trip mentioned above, the next item that you pull out of your sack would have to be 'a'. This item is removed. You will return a
Definition
- Class:
- SackJourney
- Method:
- canReach
- Parameters:
- String[], String[]
- Returns:
- int[]
- Method signature:
- int[] canReach(String[] dests, String[] trades)
- (be sure your method is public)
Notes
- The only transactions that can be made with your sack are the ones that correspond to trips.
Constraints
- dests will contain between 2 and 20 elements inclusive.
- trades will contain the same number of elements as dests.
- Each element of dests will contain between 0 and 50 characters inclusive.
- Each element of trades will contain between 0 and 50 characters inclusive.
- Each element of dests will be a single-space separated list of integers with no extra leading zeros.
- Each integer in dests will be between 0 and N-1, where N is the number of elements in dests.
- Each element of trades will be a single-space separated list of 2 character sequences. Each character will be a letter ('A'-'Z','a'-'z') or an underscore ('_'). At least one of the characters in each sequence will be an underscore.
- Each element of trades will contain the same number of 2 character sequences as the corresponding element of dests contains integers.
Examples
{"1","2",""}
{"_A","A_",""}
Returns: {0, 1, 2 }
We can get to location 1 with 'A' in our sack. Removing this 'A', we can travel to location 2.
{"1","2",""}
{"_A","b_",""}
Returns: {0, 1 }
Unlike the first example, we cannot get to location 2 since we need a 'b'.
{"0 0 1","2","3","4","5",""}
{"_A _B __","B_","A_","__","_C",""}
Returns: {0, 1, 2, 3, 4, 5 }
{"",""}
{"",""}
Returns: {0 }
{"0","1"}
{"__","__"}
Returns: {0 }
{"0 0 1","2","3","4","5",""}
{"_A _B __","B_","A_","__","C_",""}
Returns: {0, 1, 2, 3, 4 }
{ "0 1 2 3 4 5 6", "0","0","0","0","0","7","" }
{ "_a a_ b_ c_ d_ e_ f_", "_b","_c","_d","_e","_f","__","" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7 }
{ "0 1 2 3 4 5 6", "0","0","0","0","0","7","" }
{ "_g a_ b_ c_ d_ e_ f_", "_b","_c","_d","_e","_f","__","" }
Returns: {0 }
{ "0 1 2 3 4 5 6", "0","0","0","0","0","7","" }
{ "_a a_ b_ c_ d_ e_ g_", "_b","_c","_d","_e","_f","__","" }
Returns: {0, 1, 2, 3, 4, 5 }
{"1","2","3","4","5","6","7","8","9","10",""}
{"_b","_a","_a","_a","_a", "a_","a_","a_","a_","b_",""}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
{"1","2","3","4","5","6","7","8","9","10",""}
{"_b","_b","_a","_a","_a", "a_","a_","a_","a_","b_",""}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8 }
{"1","2 1","3","4","5","6","7","8","9","10",""}
{"_b","_a _a","__","__","__", "a_","a_","a_","a_","b_",""}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
{"14 9 9 16 15 11 10","10 18 11 11 1 6 3","11 17 18 19 19 18 11","6 0 15 7 10 13 3","17 9 5 3 15 10 8","12 6 14 10 6 13 3","13 7 14 10 8 0 13","5 3 1 19 16 17 17","3 9 17 12 8 18 18","7 17 0 14 17 13 10","16 2 9 9 0 17 11","9 5 9 13 0 10 9","2 13 2 9 17 9 16","1 6 8 5 4 2 1","12 11 11 5 18 16 13","14 9 14 8 13 8 2","12 2 5 8 5 2 3","11 12 6 15 0 19 15","18 1 12 6 17 2 3","2 9 9 7 14 6 19"}
{"_R _G G_ i_ _r _c _q","_J _T _d _J _L D_ D_","_f j_ _B M_ _l d_ _H","D_ _l S_ e_ B_ _R S_","_J k_ _I __ _m P_ _p","f_ q_ _J _F q_ H_ _a","m_ n_ p_ j_ G_ Q_ _S","_g _A _A _m t_ I_ d_","d_ _j C_ _G J_ P_ _p","A_ _a g_ _A _J _s p_","D_ __ G_ _H _K _R _m","_r M_ _l g_ Q_ R_ _S","h_ _H _o l_ C_ S_ _l","B_ P_ _A f_ C_ _n e_","_R R_ c_ b_ p_ _H R_","_B _E r_ _A _L s_ D_","_O E_ O_ d_ _D L_ M_","b_ i_ R_ _h P_ _c T_","_H G_ q_ _a N_ _c _N","_Q O_ D_ k_ _G a_ _J"}
Returns: {0, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{"1 1 1 1",""}
{"_a _a _a _a",""}
Returns: {0, 1 }
{"1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 13", "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2", "3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3", "4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4", "5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5", "6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6", "7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7", "8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8", "9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9", "10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10", "11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11", "12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0", "14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14", "15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15", "16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16", "17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17", "18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18", "19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19", "19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19"}
{"_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "_a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a _a", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_", "a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_ a_" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{"","","","","", "","","","","", "","","","","", "","","","",""}
{"","","","","", "","","","","", "","","","","", "","","","",""}
Returns: {0 }
{"1 1","2 2","3 3","4 4","5 5","0 6",""}
{"_a d_","_b c_","_c b_","_d a_","_e d_","e_ c_",""}
Returns: {0, 1, 2, 3, 4, 5, 6 }
{"1 1","2 2","3 3","4 4","5 5","0 6",""}
{"_a d_","_b c_","_c b_","_d a_","_e d_","e_ b_",""}
Returns: {0, 1, 2, 3, 4, 5 }
{"1","2 2 2","3 3","4 4 4","5 5 5","6 6 1 1","1 7","8",""}
{"_X","a_ _a c_","_b b_","_c b_ a_","_d a_ c_","a_ b_ b_ d_","c_ a_","X_",""}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8 }
{"1","2 2 2","7 3 3 3","4 4 4","5 5","6 1 1 1","","8","1"}
{"_X","_a d_ a_","X_ _b b_ c_","_c b_ c_","_d a_","Y_ d_ b_ e_","","_Y","_e"}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8 }
{"1","2 2 2","7 3 3 3","4 4 4","5 5","6 1 1 1","","8","1"}
{"_X","_a d_ a_","X_ _b b_ c_","_c b_ c_","_d a_","Y_ d_ b_ e_","","_Y","_e"}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8 }
{ "1", "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4", "3 3 3 3 3 3 3 3 3 3 3 3 3 3 3", "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9", "5 5 5 5 5 5 5 5 5 10", "6 6 6 6 6 6 6 6 6", "7 7 7 7 7 7 7 7 7", "8 8 8 8 8 8 8 8 8", "4 4 4 4 4 4 4 4 4", "3", "" }
{ "_X", "_a _b _c _d _e _f _g _h _i _j _k _l _m _n _o Y_", "_p _q _r _s _t _u _v _w _x _y _z _A _B _C _D", "_E _F _G _H _I _J _K _L _M _N _O _P _Q _R _S _Y", "S_ n_ A_ N_ i_ v_ I_ d_ q_ X_", "D_ Q_ l_ y_ L_ g_ t_ G_ b_", "o_ B_ O_ j_ w_ J_ e_ r_ E_", "R_ m_ z_ M_ h_ u_ H_ c_ p_", "C_ P_ k_ x_ K_ f_ s_ F_ a_", "__", "" }
Returns: {0, 1, 2, 3, 9 }
{ "1", "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4", "3 3 3 3 3 3 3 3 3 3 3 3 3 3 3", "1 1 1 1 1 1 1 1 1 1 1 1 1 1 9", "5 5 5 5 5 5 5 5 5 10", "6 6 6 6 6 6 6 6 6", "7 7 7 7 7 7 7 7 7", "8 8 8 8 8 8 8 8 8", "4 4 4 4 4 4 4 4 4", "1", "" }
{ "_X", "_a _b _c _d _e _f _g _h _i _j _k _l _m _n _o Y_", "_p _q _r _s _t _u _v _w _x _y _z _A _B _C _D", "_E _F _G _H _I _J _K _L _M _N _O _P _Q _R _S", "S_ n_ A_ N_ i_ v_ I_ d_ q_ X_", "D_ Q_ l_ y_ L_ g_ t_ G_ b_", "o_ B_ O_ j_ w_ J_ e_ r_ E_", "R_ m_ z_ M_ h_ u_ H_ c_ p_", "C_ P_ k_ x_ K_ f_ s_ F_ a_", "_Y", "" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
{ "1", "2 3", "1", "4 6", "5", "3", "7 11", "8", "9", "10", "6", "19 12 13", "13", "14", "15", "16", "17", "18", "11", "" }
{ "_Y", "_a _X", "_a", "_a _X", "_a", "_a", "_a _X", "_a", "_a", "_a", "_a", "Y_ X_ a_", "a_", "a_", "a_", "a_", "a_", "a_", "a_", "" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{ "1", "2 3", "1", "4 6", "5", "3", "12 7 8", "8", "9", "10", "11", "6", "" }
{ "_Y", "_a _X", "_a", "_a _X", "_a", "_a", "Y_ X_ a_", "a_", "a_", "a_", "a_", "a_", "" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }
{ "0 1", "2 3", "1", "4 6", "5", "3", "7 11", "8", "9", "10", "6", "1 12 13 19", "13", "14", "15", "16", "17", "18", "11", "" }
{ "_Z _Y", "_a _X", "_a", "_a _X", "_a", "_a", "_a _X", "_a", "_a", "_a", "_a", "Y_ X_ a_ Z_", "a_", "a_", "a_", "a_", "a_", "a_", "a_", "" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{ "0 1", "2 3", "1", "4 6", "5", "3", "7 11", "8", "9", "10", "6", "1 12 13 19", "13", "14", "15", "16", "17", "18", "11", "" }
{ "_Y _Y", "_a _X", "_a", "_a _X", "_a", "_a", "_a _X", "_a", "_a", "_a", "_a", "Y_ X_ a_ Z_", "a_", "a_", "a_", "a_", "a_", "a_", "a_", "" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }
{ "1 0", "2", "0 3", "4", "2 5", "6", "4 7", "8", "6 9", "10", "8 11", "12", "10 13", "14", "12 15", "16", "14 17", "18", "16 19", ""}
{ "a_ _a", "a_", "_b b_", "b_", "_c c_", "c_", "_d d_", "d_", "_e e_", "e_", "_f f_", "f_", "_g g_", "g_", "_h h_", "h_", "_i i_", "i_", "_j j_", ""}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{ "1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0", "2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1", "0 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2", "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3", "2 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4", "6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5", "4 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6", "8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7", "6 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8", "10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9", "8 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10", "12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11", "10 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12", "14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13", "12 15 14 14 14 14 14 14 14 14 14 14 14 14 14 14", "16 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15", "14 17 16 16 16 16 16 16 16 16 16 16 16 16 16 16", "18 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17", "16 19 18 18 18 18 18 18 18 18 18 18 18 18 18 18", "19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19"}
{ "a_ _a _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "a_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_b b_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "b_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_c c_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "c_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_d d_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "d_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_e e_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "e_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_f f_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "f_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_g g_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "g_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_h h_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "h_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_i i_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "i_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_j j_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_z _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z"}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{ "1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0", "2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1", "3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2", "0 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3", "5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4", "6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5", "3 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6", "8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7", "9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8", "6 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9", "11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10", "12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11", "9 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12", "14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13", "15 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14", "12 16 15 15 15 15 15 15 15 15 15 15 15 15 15 15", "17 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16", "18 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17", "15 19 18 18 18 18 18 18 18 18 18 18 18 18 18 18", "19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19"}
{ "a_ _a _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "a_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "a_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_b b_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "b_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "b_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_c c_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "c_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "c_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_d d_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "d_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "d_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_e e_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "e_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "e_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_f f_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "f_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "f_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_g g_ _z _z _z _z _z _z _z _z _z _z _z _z _z _z", "_z _z _z _z _z _z _z _z _z _z _z _z _z _z _z _z"}
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{ "1", "2", "3 5 7 9 11 13 15 17 2 19", "4", "2", "6", "2", "8", "2", "10", "2", "12", "2", "14", "2", "16", "2", "18", "2", "" }
{ "_Y", "_A", "A_ B_ C_ D_ E_ F_ G_ H_ I_ Y_", "_B", "_B", "_C", "_C", "_D", "_D", "_E", "_E", "_F", "_F", "_G", "_G", "_H", "_H", "_I", "_I", "" }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }