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

জাভাস্ক্রিপ্টে ফাজি সার্চ অ্যালগরিদম ইমপ্লিমেন্টেশন


সমস্যা বিবরণ

একটি স্ট্রিং মেথড লিখতে হবে যা একটি সার্চ কুয়েরি लेकर루জলি (loosely) চেক করবে যে কুয়েরির অক্ষরগুলো একই অর্ডারে স্ট্রিংয়ে আছে কিনা।

উদাহরণ:

('a haystack with a needle').fuzzySearch('hay sucks'); // false
('a haystack with a needle').fuzzySearch('sack hand'); // true

সমাধান

const fuzzySearch = function(query) {
  const str = this.toLowerCase();
  let i = 0, n = -1, l;
  query = query.toLowerCase();
  for (; l = query[i++]; ) {
    if (!~(n = str.indexOf(l, n + 1))) {
      return false;
    }
  }
  return true;
};

String.prototype.fuzzySearch = fuzzySearch;

console.log(('a haystack with a needle').fuzzySearch('hay sucks')); // false
console.log(('a haystack with a needle').fuzzySearch('sack hand')); // true

আউটপুট

false true

কীভাবে কাজ করে

  • str.indexOf(l, n + 1) দিয়ে প্রতিটি ক্যারেক্টার পূর্বের পজিশনের পর থেকে খোঁজা হয়।
  • !~ হলো বিটওয়াইজ NOT: indexOf -1 রিটার্ন করলে ~(-1) === 0 (falsy), অন্যথায়Truthy।
  • সব ক্যারেক্টার ক্রমাগত পাওয়া গেলে true।

সতর্কতা

String.prototype এক্সটেন্ড করা সাধারণত এড়ানো উচিত প্রোডাকশন কোডে।

  1. জাভাস্ক্রিপ্টে বাইনারি সার্চ ট্রি

  2. জাভাস্ক্রিপ্টে প্রিমের অ্যালগরিদম

  3. জাভাস্ক্রিপ্টে স্ট্রিং সার্চ করার পদ্ধতি

  4. জাভাস্ক্রিপ্টে লিনিয়ার সার্চ বাস্তবায়ন