मान लीजिए, हमारे पास एक बाइनरी मैट्रिक्स है (सरणी की एक सरणी जिसमें केवल 0 या 1 होता है) -
const arr =[ [0,1,1,0], [0,1,1,0], [0,0,0,1]];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो पहले और एकमात्र तर्क के रूप में एक ऐसे मैट्रिक्स को लेता है।
हमारे फ़ंक्शन का कार्य मैट्रिक्स में लगातार लोगों की सबसे लंबी लाइन ढूंढना है और इसमें 1s की गिनती वापस करना है। रेखा क्षैतिज, लंबवत, विकर्ण या विरोधी विकर्ण हो सकती है।
उदाहरण के लिए, उपरोक्त सरणी के लिए, आउटपुट होना चाहिए -
कॉन्स्ट आउटपुट =3
क्योंकि सबसे लंबी लाइन वह है जो arr[0][1] से शुरू होती है और तिरछे −
तक फैली होती है <पूर्व>गिरफ्तारी[2][3]उदाहरण
इसके लिए कोड होगा -
const arr =[ [0,1,1,0], [0,1,1,0], [0,0,0,1]]; const longLine =(arr =[]) => { अगर (! गिरफ्तारी। लंबाई) {वापसी 0; } चलो पंक्तियाँ =arr.length, cols =arr[0].length; लेट रेस =0; कॉन्स्ट डीपी =ऐरे (पंक्तियां)। भरें ([]); dp.forEach((el, ind) => {dp[ind] =Array(cols).fill([]); dp[ind].forEach((undefined, subInd) => {dp[ind][subInd] =ऐरे (4)। भरें (शून्य);});}); के लिए (चलो i =0; i <पंक्तियाँ; i++) { के लिए (चलो j =0; j0? डीपी [i] [जे -1] [0] + 1:1; डीपी [i] [जे] [1] =मैं> 0? डीपी [i - 1] [जे] [1] + 1:1; डीपी [i] [जे] [2] =(i> 0 &&j> 0) ? डीपी [i - 1] [जे -1] [2] + 1:1; dp[i][j][3] =(i> 0 &&j आउटपुट
और कंसोल में आउटपुट होगा -
3