freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../missing-letters/index.md

10 KiB

title localeTitle
Missing Letters حروف ناقصة

:triangular_flag_on_post: تذكر استخدام Read-Search-Ask إذا واجهتك مشكلة. حاول إقران البرنامج :busts_in_silhouette: واكتب الكود الخاص بك :pencil:

:checkered_flag: شرح المشكلة:

سوف تقوم بإنشاء برنامج سيعثر على الحرف المفقود من سلسلة وإعادته. إذا لم يكن هناك حرف مفقود ، يجب أن يقوم البرنامج بإرجاع غير محدد. لا توجد حالياً حالة اختبار للسلسلة المفقودة لأكثر من حرف واحد ، ولكن إذا كان هناك حرف ، فسيتم استخدام العودية. أيضا ، يتم دائمًا توفير الأحرف بالترتيب ، لذلك لا توجد حاجة لفرزها.

روابط ذات صلة

:speech_balloon: تلميح: 1

ستحتاج إلى التحويل من رمز إلى رمز ASCII باستخدام الطريقتين المقدمتين في الوصف.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 2

سيكون عليك التحقق من الاختلاف في كود ASCII كما هي بالترتيب. استخدام الرسم البياني سيكون مفيدا للغاية.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 3

ستحتاج إلى معرفة مكان الرسالة المفقودة ، مع التعامل مع الحالة التي لا يوجد بها حرف مفقود لأنه يحتاج إلى قيمة إرجاع محددة.

حاول أن تحل المشكلة الآن

تنبيه المفسد!

علامة تحذير

الحل في المستقبل!

:beginner: الحل الأساسي للكود:

`function fearNotLetter(str) {

for(var i = 0; i < str.length; i++) { /* code of current character */ var code = str.charCodeAt(i);

/* if code of current character is not equal to first character + no of iteration 
hence character has been escaped */ 
if (code !== str.charCodeAt(0) + i) { 

  /* if current character has escaped one character find previous char and return */ 
  return String.fromCharCode(code - 1); 
} 

} return undefined; }

// test here fearNotLetter("abce"); `

:rocket: تشغيل الكود

شرح الشفرة:

  • تستفيد هذه الحلول من حلقة for .
  • يتم تخزين رمز الحرف المصادفة في التعليمات البرمجية .
  • يتم التحقق إذا كان رمز الحرف الحالي هو الحرف المتوقع (لا يتم تخطي أي حرف) باستخدام code of current character = code of first character + number of iterations منطقي code of current character = code of first character + number of iterations .
  • إذا كان الحرف مفقودًا ، يتم العثور على الحرف المفقود ويتم إرجاع السلسلة النهائية.
  • يتم إرجاع undefined إذا لم يكن هناك حرف مفقود في السلسلة.

روابط ذات صلة

:sunflower: حل الشفرة المتوسطة:

`// Adding this solution for the sake of avoiding using 'for' and 'while' loops. // See the explanation for reference as to why. It's worth the effort.

function fearNotLetter(str) { var compare = str.charCodeAt(0), missing;

str.split('').map(function(letter,index) { if (str.charCodeAt(index) == compare) { ++compare; } else { missing = String.fromCharCode(compare); } });

return missing; }

// test here fearNotLetter("abce"); `

:rocket: تشغيل الكود

شرح الشفرة:

  • أولاً ، نحدد المتغيرات لتخزين رمز الحرف للحرف الأول في السلسلة ، ولتخزين أي أحرف مفقودة قد نجدها.
  • ننتقل السلسلة إلى مجموعة من أجل تعيين من خلال ذلك بدلا من استخدام for و while الحلقات.
  • بينما map خلال رموز الأحرف الخاصة بالحروف ، نذهب إلى المقارنة مع تلك التي يجب أن تكون في هذا الموقف.
  • إذا تطابق الحرف الحالي ، فإننا ننقل متغير المقارنة إلى موضعه التالي حتى يمكننا المقارنة في الدورة التالية.
  • إذا لم يكن الأمر كذلك ، سيتم تعيين الحرف المفقود إلى المتغير missing ، والذي سيتم إرجاعه بعد الانتهاء من الخريطة.
  • إذا لم تكن هناك أحرف مفقودة ، undefined .

روابط ذات صلة

:rotating_light: حل رمز متقدم مبسط:

function fearNotLetter(str) { for (let i = 1; i < str.length; ++i) { if (str.charCodeAt(i) - str.charCodeAt(i-1) > 1) { return String.fromCharCode(str.charCodeAt(i - 1) + 1); } } }

شرح الشفرة:

  • حلقة فوق السلسلة
  • تحقق مما إذا كان الاختلاف في رموز char بين الأحرف المتجاورة في السلسلة أكثر من 1 (جدول ASCII chack)
  • إرجاع الحرف المفقود (1+ من حيث تم اكتشاف الفجوة)

:rotating_light: الحل المتقدم للكود:

`function fearNotLetter(str) { var allChars = ''; var notChars = new RegExp('[^'+str+']','g');

for (var i = 0; allChars[allChars.length-1] !== str[str.length-1] ; i++) allChars += String.fromCharCode(str[0].charCodeAt(0) + i);

return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined; }

// test here fearNotLetter("abce"); `

:rocket: تشغيل الكود

شرح الشفرة:

  • يتم إنشاء سلسلة جديدة allChars .
  • قم بإنشاء التعبير العادي notChars الذي يحدد كل شيء باستثناء str .
  • يتم استخدام حلقة for لإضافة كافة الأحرف في النطاق إلى كافة Chars .
  • يتم استخدام match() لإلغاء تجريد الأحرف str من السلسلة التي تم إنشاؤها حديثًا ويتم إرجاعها.
  • إذا لم تكن هناك أحرف مفقودة ، undefined .

روابط ذات صلة

:clipboard: ملاحظات للمساهمات:

  • :warning: لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
  • أضف شرحًا لحلك.
  • تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم . :traffic_light:
  • الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . ( :warning: لا تزيل أي أسماء مستخدمين حالية )

نرى :point_right: Wiki Challenge Solution Template كمرجع.