حلول AlgoExpert TS
يحتوي هذا المستودع على بعض الحلول للتحديات التي تطرحها أسئلة البرمجة الخاصة بـ AlgoExpert.
ملحوظة:
لم أنتهي من جميع التحديات بعد، وأقوم بتحديث هذا المستودع باستمرار بحلول جديدة وهياكل جديدة واختبارات جديدة وما إلى ذلك. لذا، إذا كنت تريد رؤية أحدث التغييرات، فتحقق من التحدي الأخير الذي تم وضع علامة مكتمل عليه في قسم قائمة التحديات أدناه.
؟ سهل (31) | ؟ وسط (73) | ؟ هارد (58) | ؟ صعب جدًا (38) |
---|---|---|---|
|
|
|
|
أكثر...
| أكثر...
| أكثر...
| أكثر...
|
(العودة إلى الأعلى)
اختبارات تلقائية بعد كل التزام - باستخدام Git Hooks وJest
اختبارات تلقائية بعد كل دفعة - باستخدام Github Actions وJest
المجلد المشترك - لمساعدتك في إعادة استخدام التعليمات البرمجية
كل تحدٍ له مجلد خاص به - لمساعدتك في تنظيم حلولك
كل تحد له ملف اختبار خاص به - لمساعدتك في إجراء الاختبارات لتحدي معين
يحتوي كل تحدٍ على ملف اختبار الحالة الخاص به - لمساعدتك في تنظيم حالات الاختبار الخاصة بك
يحتوي كل تحدٍ على ملف README.md خاص به - لمساعدتك على فهم التحدي
كل تحدٍ له ملف حل خاص به - لمساعدتك في كتابة الحل الخاص بك
من السهل اختبار الحل الخاص بك - ما عليك سوى إنشاء ملف حل جديد وتحديث ملف الاختبار بالحل الخاص بك
Makefile - لمساعدتك في إجراء الاختبارات وإنشاء تحديات جديدة والالتزام بالحلول الخاصة بك
من السهل الالتزام بالحل الخاص بك - ما عليك سوى تشغيل make commit
وسيتم الالتزام بالرسالة feat(CHALLENGE_NAME): add solution {SOLUTION_NUMBER}
من السهل إنشاء تحديات جديدة - ما عليك سوى تشغيل make new
وسيقوم بإنشاء المجلد والملفات وملف README.md لك باستخدام القوالب
من السهل إنشاء حلول جديدة - ما عليك سوى تشغيل make new-solution
وسيقوم بإنشاء ملف الحل لك باستخدام القوالب
من السهل إجراء الاختبارات - ما عليك سوى تشغيل make test
وسيقوم بتشغيل جميع الاختبارات
يمكنك تخصيص القوالب - فقط قم بتحديث مجلد scripts/templates
من السهل تصحيح الأخطاء في VSCode - يوجد ملف launch.json
مع تكوين تصحيح لعلامة تبويب التحدي المفتوحة الحالية في VSCode
تم اكتشاف التحدي الأخير تلقائيًا لإنشاء حل جديد عند تنفيذ أمر make new-solution
الاكتشاف التلقائي للتحدي التالي الذي سيتم إكماله لإنشاء تحدي جديد عند تنفيذ أمر make new
تم اختبار حل التحديث التلقائي عند تنفيذ أمر make new-solution
(العودة إلى الأعلى)
قم بنسخ تعيين الوظيفة من solution-0.ts
إلى ملف جديد عند تنفيذ أمر make new-solution
بعد إنشاء تحدي جديد، افتح جميع الملفات الجديدة في VSCode
قم بتحديث جميع التحديات بالهيكل الجديد بعد الانتهاء من قائمة التحديات
التحديث التلقائي لعدد التحديات المكتملة في كل مستوى بعد الانتهاء من كل تحدي عند تنفيذ أمر make commit
انقل ملفات التكوين الجذر إلى مجلد .config
قم بإنشاء مجلد docs
باستخدام ملف README.md
مع بعض النصائح والحيل
(العودة إلى الأعلى)
طريقتي لحل التحديات هو:
تحضير
قم بإنشاء مجلد وملفات التحدي (باستخدام الأمر make new
)
الخطوة الأولى
إقرأ وصف التحدي
ارسم حلاً
اكتب الحل في TypeScript دون النظر إلى تلميحات الحل
قم بإجراء الاختبارات (باستخدام الأمر make test-changed
)
إعادة صياغة الحل
كرر الخطوتين 4 و5 حتى تجتاز جميع الاختبارات
تقييم مدى تعقيد الحل
تنفيذ الحل (باستخدام أمر make commit
)
خطوة 2dn
التحقق من تلميحات الحل
قارن الحل الخاص بي مع تلميحات الحل
حاول تحسين الحل الخاص بي أو إنشاء حل جديد بناءً على تلميحات الحل (باستخدام أمر make new-solution
)
كرر الخطوات من 4 إلى 10 حتى أكون راضيًا عن الحل
تنفيذ الحل (باستخدام أمر make commit
)
الخطوة الثالثة
شاهد فيديو الحل
قم بتنفيذ حلول أخرى من الفيديو أو أعد صياغة الحل الخاص بي بناءً على الفيديو
تنفيذ الحل (باستخدام أمر make commit
)
مخطط انسيابي LR
ابدأ ((التحضير)) --> واحد
الرسم البياني الفرعي الأول[الخطوة الأولى]
أ[قراءة] --> ب[رسم]
ب --> ج [الرمز]
ج --> د [الاختبارات]
د --> ج
د --> أنا[التعقيد]
أنا --> R[الالتزام]
نهاية
الرسم البياني الفرعي الثاني [الخطوة الثانية]
R --> J[تلميحات]
ي --> ك[قارن]
K --> L[عامل إعادة التصنيع]
L --> M[الاختبارات]
م --> ل
م --> س[الالتزام]
نهاية
الرسم البياني الفرعي الثالث[الخطوة الثالثة]
S --> N[فيديو]
N --> O[الرمز]
O --> P[الرمز/العامل]
ف --> س[الاختبارات]
س --> ص
س --> ت[الالتزام]
نهاية
واحد -.-> اثنان
اثنان -.-> ثلاثة
ثلاثة --> النهاية (((النهاية)))
تحميل(العودة إلى الأعلى)
Node.js
تايب سكريبت
مزاح
(العودة إلى الأعلى)
Node.js
(العودة إلى الأعلى)
استنساخ بوابة [email protected]:filipe1309/algoexpert-solutions.git
cd algoexpert-solutions
قم بالتثبيت
(العودة إلى الأعلى)
لقد قمت بإنشاء ملف Makefile
لمساعدتك في إجراء الاختبارات.
تشغيل كافة الاختبارات:
إجراء اختبار
إجراء اختبار محدد:
قم بإجراء اختبار t=CHALLENGE_NAME
مثال:
make test t=two-number-sum
تشغيل الاختبارات المتغيرة:
إجراء تغيير الاختبار
(العودة إلى الأعلى)
لقد قمت أيضًا بإنشاء ملف Makefile
مع بعض الأوامر الإضافية.
إنشاء [n=CHALLENGE_NAME] [l=CHALLENGE_LEVEL] [c=CHALLENGE_CATEGORY] جديد
مثال:
make new
(املأ المطالبات) أوmake new n=two-number-sum l=easy c=arrays
المستويات:
easy
،medium
،hard
،very-hard
سيؤدي هذا إلى إنشاء:
مجلد ( src/easy/two-number-sum
)
ملف solution-0.ts
(الملف الذي ستكتب فيه الحل الخاص بك، ويمكنك إنشاء المزيد إذا أردت وتحديث ملف الاختبار)
ملف اختبار solution.spec.ts
ملف اختبار الحالة cases.ts
ملف README.md
الالتزام [m=COMMIT_MESSAGE]
مثال:
make commit m="feat: add two number sum solution"
إذا لم تقم بتمرير الوسيطةm
، فسوف تلتزم بالرسالة
feat(CHALLENGE_NAME): add solution {SOLUTION_NUMBER}
إنشاء حل جديد [n=CHALLENGE_NAME_SNAKE] [l=CHALLENGE_LEVEL_LOWER]
مثال:
make new-solution [l=easy] [n=two-number-sum]
أوmake new-solution
(املأ المطالبات)
سيؤدي هذا إلى إنشاء ملف حل جديد solution-{SOLUTION_NUMBER}.ts
وتحديث ملف الاختبار.
إذا كان
solution-0.ts
موجودًا بالفعل، فسيتم إنشاءsolution-1.ts
وتحديث ملف Index.ts وملف الاختبار. وهكذا...
أمر المساعدة:
تقديم المساعدة
(العودة إلى الأعلى)
طلبات السحب هي موضع ترحيب. لإجراء تغييرات كبيرة، يرجى فتح مشكلة أولاً لمناقشة ما تريد تغييره.
يرجى التأكد من تحديث الاختبارات بالشكل المناسب.
(العودة إلى الأعلى)
معهد ماساتشوستس للتكنولوجيا
(العودة إلى الأعلى)
AlgoExpert
هدية العام الجديد - قائمة منسقة تضم أفضل 75 سؤالًا من أسئلة LeetCode لتوفير وقتك
قالب ShubcoGen™
Git Hooks بدون تبعيات إضافية مثل Husky في مشروع Node.js
تايب سكريبت + الدعابة
اختبارات الوحدات عبر Node.js وJest وTypeScript
ما هو شرح Big O Notation: تعقيد المكان والزمان
استخدام تعيين المسار بدون TypeScript
رسم خرائط المسارات
قرار الوحدة
فهم معادلة المسافة ليفنشتاين للمبتدئين
مشكلة الزواج المستقر - Numberphile
مشكلة الزواج المستقر (بت الرياضيات)
(العودة إلى الأعلى)
تم مع :heart: بواسطة فيليبي ليوش بونفيم؟
(العودة إلى الأعلى)