Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // You will be given a 2-dimensional grid of letters. Write a method to find the length of the longest path of consecutive
- // letters, starting at 'A'. Paths can step from one letter in the grid to any adjacent letter (horizontally, vertically,
- // or diagonally).
- // For example, in the following grid, there are several paths from 'A' to 'D', but none from 'A' to 'E':
- function abcLongestPath(matrix) {
- let maxPath = 0;
- const initPos = [];
- const isPossible = (a, b) => (
- a >= 0 && a < matrix.length &&
- b >= 0 && b < matrix[a].length
- );
- const dfs = (x, y) => {
- const steps = [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]];
- let path = 0;
- for (let s = 0; s < steps.length; s++) {
- const [a, b] = steps[s];
- const sibling = [x + a, y + b];
- if (isPossible(...sibling)) {
- if (matrix[sibling[0]][sibling[1]].charCodeAt(0) - matrix[x][y].charCodeAt(0) === 1) {
- path = 1 + dfs(...sibling);
- }
- }
- }
- return path;
- }
- for (let i = 0; i < matrix.length; i++) {
- for (let j = 0; j < matrix[i].length; j++) {
- if (matrix[i][j] === 'A') initPos.push([i, j]);
- }
- }
- for (let i = 0; i < initPos.length; i++) {
- const currPath = dfs(...initPos[i]);
- if (currPath > maxPath) {
- maxPath = currPath;
- }
- }
- return maxPath + 1;
- }
- const m = [ "ABE", "CFG", "BDH", "ABC" ];
- // const m = ['A'];
- // const m = ['BCDEFGHIJKLMNOPQRSTUVWXYZ'];
- // const m = [ "C", "D", "B", "A" ];
- // const m = ["KCBVNRXSPVEGUEUFCODMOAXZYWEEWNYAAXRBKGACSLKYRVRKIO", "DIMCZDMFLAKUUEPMPGRKXSUUDFYETKYQGQHNFFEXFPXNYEFYEX", "DMFRPZCBOWGGHYAPRMXKZPYCSLMWVGMINAVRYUHJKBBRONQEXX", "ORGCBHXWMTIKYNLFHYBVHLZFYRPOLLAMBOPMNODWZUBLSQSDZQ", "QQXUAIPSCEXZTTINEOFTJDAOBVLXZJLYOQREADUWWSRSSJXDBV", "PEDHBZOVMFQQDUCOWVXZELSEBAMBRIKBTJSVMLCAABHAQGBWRP", "FUSMGCSCDLYQNIXTSTPJGZKDIAZGHXIOVGAZHYTMIWAIKPMHTJ", "QMUEDLXSREWNSMEWWRAUBFANSTOOJGFECBIROYCQTVEYGWPMTU", "FFATSKGRQJRIQXGAPLTSXELIHXOPUXIDWZHWNYUMXQEOJIAJDH", "LPUTCFHYQIWIYCVOEYHGQGAYRBTRZINKBOJULGYCULRMEOAOFP", "YOBMTVIKVJOSGRLKTBHEJPKVYNLJQEWNWARPRMZLDPTAVFIDTE", "OOBFZFOXIOZFWNIMLKOTFHGKQAXFCRZHPMPKGZIDFNBGMEAXIJ", "VQQFYCNJDQGJPYBVGESDIAJOBOLFPAOVXKPOVODGPFIYGEWITS", "AGVBSRLBUYOULWGFOFFYAAONJTLUWRGTYWDIXDXTMDTUYESDPK", "AAJOYGCBYTMXQSYSPTBWCSVUMNPRGPOEAVVBGMNHBXCVIQQINJ", "SPEDOAHYIDYUJXGLWGVEBGQSNKCURWYDPNXBZCDKVNRVEMRRXC", "DVESXKXPJBPSJFSZTGTWGAGCXINUXTICUCWLIBCVYDYUPBUKTS", "LPOWAPFNDRJLBUZTHYVFHVUIPOMMPUZFYTVUVDQREFKVWBPQFS", "QEASCLDOHJFTWMUODRKVCOTMUJUNNUYXZEPRHYOPUIKNGXYGBF", "XQUPBSNYOXBPTLOYUJIHFUICVQNAWFMZAQZLTXKBPIAKXGBHXX"]
- // const m = ["EDCCBA", "EDCCBA"];
- // const m = ["AMNOPA", "ALEFQR", "KDABGS", "AJCHUT", "AAIWVA", "AZYXAA"];
- log(abcLongestPath(m));
Add Comment
Please, Sign In to add comment