কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে টমেটো গলার সময় গণনা (Rotting Tomatoes)


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ২ডি সংখ্যা অ্যারে (arr) নেবে। অ্যারে-এর সংখ্যাগুলো হতে পারে –
• ০ – খালি সেল
• ১ – তাজা টমেটো
• ২ – গলা টমেটো

প্রতি মিনিটে, যেকোনো তাজা টমেটো যা একটি গলা টমেটোর পাশে আছে (৪-দিকের), সেটিও গলা হয়ে যায়। ফাংশনটি ন্যূনতম কত মিনিট পর কোনো তাজা টমেটো থাকবে না তা রিটার্ন করবে। অসম্ভব হলে -১ রিটার্ন করবে।

উদাহরণস্বরূপ, ইনপুট যদি হয় –

const arr = [ [2, 1, 1], [1, 1, 0], [0, 1, 1] ];

তবে আউটপুট হবে –

const output = 4;

আউটপুট ব্যাখ্যা

বিত 정확히 সময়টমেটো অবস্থা
1
[ [2, 2, 1], [2, 1, 0], [0, 1, 1] ]
2
[ [2, 2, 2], [2, 2, 0], [0, 1, 1] ]
3
[ [2, 2, 2], [2, 2, 0], [0, 2, 1] ]
4
[ [2, 2, 2], [2, 2, 0], [0, 2, 2] ]

উদাহরণ

কোডটি নিচের মতো –

const arr = [ [2, 1, 1], [1, 1, 0], [0, 1, 1] ]; const timeToRot = (arr = []) => { let fresh = 0; let count = -1; let curr = []; for(let i = 0; i < arr.length; i++){ for(let j = 0; j < arr[i].length; j++){ if(arr[i][j] === 1){ fresh += 1; }; if(arr[i][j] === 2){ curr.push([i, j]); }; }; }; if(!fresh){ return 0; }; while(curr.length > 0){ count += 1; const next = []; const rotten = (i, j) => { arr[i][j] = 2; next.push([i, j]); fresh -= 1; }; for(const [i, j] of curr){ if (arr[i - 1] && arr[i - 1][j] === 1) { rotten(i - 1, j); }; if (arr[i + 1] && arr[i + 1][j] === 1) { rotten(i + 1, j); }; if (arr[i][j - 1] === 1) { rotten(i, j - 1); }; if (arr[i][j + 1] === 1) { rotten(i, j + 1); }; } curr = next }; return fresh === 0 ? count : -1; }; console.log(timeToRot(arr));

আউটপুট

কনসোলে আউটপুট হবে –

4
  1. জাভাস্ক্রিপ্টে ২-কি বোর্ড সমস্যা (2 Key Keyboard Problem)

  2. জাভাস্ক্রিপ্টে শব্দ টাইপ করার সময় গণনা করা (অ্যালফাবেটিক্যালি কীবোর্ড)

  3. জাভাস্ক্রিপ্টে মিটিং রুমস ২ (Meeting Rooms 2) সমস্যা সমাধান

  4. জাভাস্ক্রিপ্টে কলা বিতরণ সমস্যা (Distributing Bananas)