يحتوي هذا الريبو على حلول C++ وPython لـ Gayle Laakmann McDowell's Cracking the Coding Interview 6th Edition . من المسلم به أن هناك مستودعات GitHub أخرى تحتوي على حلول لهذا الكتاب. ولكن كيف تعرف أن الكود الخاص بهم صحيح بالفعل؟ إذا لم يتم اختباره، فأنت لا تفعل ذلك!
في هذا المشروع، يحتوي كل حل من حلول C++ على اختبارات وحدة باستخدام إطار عمل C++ Catch، وكل حل من حلول Python يحتوي على اختبارات وحدة باستخدام إطار عمل Python Unittest. نحن نفرض صحة الاختبار تلقائيًا باستخدام خوادم التكامل المستمر لضمان أن الحلول مصنوعة من تعليمات برمجية حية يتم تنفيذها واختبارها في كل التزام على حدة. على حد علمي، هذا هو مستودع الحلول الوحيد على الإنترنت الذي يتمتع بهذا المستوى من دقة الاختبار: > تغطية الاختبار الآلي بنسبة 90% تعني أنه يمكنك الرجوع إلى الحلول والمساهمة بها بثقة.
9 / 9
كاملة.8 / 8
كاملة.4 / 6
مكتمل.11 / 12
كاملاً.7 / 8
مكتمل.0 / 10
كامل.0 / 12
مكتمل.8 / 14
كامل.0 / 8
مكتمل.10 / 11
مكتمل.0 / 6
كامل.10 / 11
0 / 7
كاملة.0 / 4
كامل.11 / 26
كاملاً.1 / 26
كامل.2
كاملة. إجمالي C++: 81
حلًا مكتملًا.
9 / 9
كاملة.8 / 8
كاملة.6 / 6
مكتمل.11 / 12
كاملاً.7 / 8
مكتمل.0 / 10
كامل.0 / 12
مكتمل.11 / 14
كاملة.0 / 8
مكتمل.1 / 11
كامل.0 / 6
كامل.0 / 7
كاملة.2 / 26
كاملاً.3 / 26
كامل. إجمالي بايثون: 58
حلًا مكتملًا.
139
حلاً فريدًا مكتملًا.يتطلب استخدام Mac تثبيت مديري الحزم Homebrew وPip الذي يتم إجراؤه لك في Makefile:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git ctci
cd ctci
make configure-mac
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
make configure-ubuntu
بالنسبة لمستخدمي Windows، أوصي بتطوير هذا المشروع باستخدام ميزة Windows Subsystem for Linux (WSL) لنظام التشغيل Windows 10 ثم اتباع تعليمات بناء واختبار Ubuntu داخل WSL. ترجع هذه التوصية إلى استخدام أنظمة البناء والتنفيذ المستندة إلى Ubuntu وCMake وmakefile على الخوادم التي تختبر التغييرات التي تطرأ على التعليمات البرمجية تلقائيًا. لمعرفة المزيد حول تطوير Windows، راجع قسم Appendix
في نهاية هذه الصفحة.
الاختبار هو الجزء الأكثر أهمية في هذا المشروع: اختبارات الوحدة فقط هي التي تحدد المشكلة التي يتم حلها. في الدليل الجذر، قم بتنفيذ ما يلي لتشغيل جميع الاختبارات في Python وC++:
make test
make test
هو الأمر الذي أستخدمه كثيرًا أثناء تطوير هذا المشروع. يتبع سير العمل الخاص بي:
make test
لمعرفة مكان فشل المشروع في تلبية اختبارات الوحدة.make test
.سيُظهر هذا بالضبط الخطوط التي لا تغطيها الاختبارات في كل ملف مصدر لـ Python:
pip install coverage
make test_coverage
الهدف من هذا المشروع هو كتابة حل تم اختباره بلغة Python وC++ لكل مشكلة في الإصدار السادس من الكتاب المدرسي. أنا بالتأكيد بحاجة إلى المساعدة، لذا نرحب بممثلي العلاقات العامة. هناك الكثير مما يجب فعله لأن كل حل يحتاج إلى مجموعة بيانات صغيرة وبنية تحتية خاصة به حتى يتم اختباره. فيما يلي بعض الطرق التي يمكنك من خلالها المساعدة:
إذا كان لديك أي مساهمات، يرجى تقديم علاقة عامة إلى الفرع master
. لا تتردد في مراسلتي لتوضيح أي من البنود المذكورة أعلاه.
على جهاز Windows الخاص بي، أقوم بالتطوير باستخدام CLion الذي يعمل أصلاً في Windows واختبار الكود باستخدام make test
في نافذة طرفية WSL. بالنسبة للمستخدمين الذين لا يريدون استخدام WSL، قمت بتطوير منهجية البناء والاختبار أدناه:
يمكن تطوير المشروع على نظام Windows فقط بدون WSL باستخدام Visual Studio 2017. قم أولاً باستنساخ الكود:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
ثم قم بتثبيت Python3 وnumpy باستخدام الطريقة التي تختارها. أفضل تثبيت Python3 وpip3 من الموقع الرسمي ثم تثبيت numpy عبر النقطة:
pip install numpy
ثم افتح المشروع في Visual Studio 2017 الذي يدعم CMake. لقد وجدت أن أفضل سير العمل هو استخدام Visual Studio لتحرير التعليمات البرمجية واستخدام وظيفة تصحيح الأخطاء. قبل إنشاء التعليمات البرمجية، يجب عليك اتباع هذه الإرشادات لإخبار Visual Studio بتنزيل PDBs التي يحتاجها. بالإضافة إلى ذلك، توضح هذه المقالة دعم Visual Studio CMake بمزيد من التفاصيل إذا كنت مهتمًا بذلك. يقوم ملف CMakeSettings.json الموجود في دليل المشروع الجذر بتعيين موقع مجلد إنشاء Visual Studio ليكون داخل المجلد الجذر للمشروع.
من الأفضل إجراء الاختبارات ورؤية مخرجاتها من خلال نافذة PowerShell نظرًا لأن VisualStudio في وضع CMake لا يسمح لإخراج وحدة التحكم لملفات tests.exe
و tests.py
بالبقاء مرئيًا حتى عند الضغط على CTRL + F5 كما هو موضح في هذا المنشور والذي ينطبق على استخدام Visual Studio "العادي". أنا أراقب الوضع فيما يتعلق بـ Visual Studio، وعندما أجد حلولاً أفضل سأقوم بتنفيذها أو نشرها. إذا كنت تعرف شيئا أفضل، يرجى الاتصال بي.
في هذه الأثناء، من الدليل الجذر للمشروع، يمكنك تشغيل اختبارات بايثون باستخدام ...
python tests.py
... ويمكنك تشغيل اختبارات C++ باستخدام ...
.buildx64-Debugtests.exe