
كنت أستعد لنهائيات كأس العالم HashCode لعام 2017 من Google ، وهي أكبر مسابقة مع مشاكل حسابية تنظمها Google.
بدأت أتعلم لغة C ++ من الصفر في الصف التاسع. لم أكن أعرف أي شيء عن البرمجة والخوارزميات وهياكل البيانات. في مرحلة ما ، كتبت السطر الأول من التعليمات البرمجية. بعد سبعة أشهر ، كانت أولمبياد البرمجة تلوح في الأفق. أردت أن أعرف مدى نجاح أسلوبي في تعلم البرمجة. كانت فرصة مثالية.
بعد يومين من المنافسة ، جاءت النتائج: لقد فزت بميدالية ذهبية.
كنت في حالة صدمة. لقد تقدمت على المنافسين بخمس سنوات من الخبرة. كنت أعرف أنني عملت بجد ، لكن هذا الإنجاز فاق كل توقعاتي. أدركت أن البرمجة الرياضية هي موضوعي ودخلت في رأسي.
أعرف ما الذي دفعني إلى النجاح وأرغب في مشاركة هذا معك.

تمت ترجمة هذه المقالة بدعم من برنامج EDISON ، الذي يعتني بصحة المبرمجين ووجبة الإفطار الخاصة بهم ، كما يطور البرامج المخصصة .
أي لغة البرمجة للاختيار
- C ++ - موصى به للغاية! إنه سريع جدا. يستغرق تنفيذ الخوارزميات القليل من الوقت بسبب STL. تم قبول C ++ في جميع المسابقات. كتبت السطر الأول من الشفرة في لغة C ++.
- C - تعلم C ++ بسبب STL. إذا كنت تعرف C ، يمكنك أيضًا البرمجة باستخدام C ++.
- جافا هي لغة برمجة بطيئة. يحتوي على فئة Big Integer ، ولكنه لا يساعدك حقًا. إذا كان للمنافسة مهلة زمنية ، فربما تتجاوزها باستخدام Java. لم يتم قبول Java في جميع المسابقات.
أين يمكنك ممارسة
أوصي
Sphere Online القاضي (SPOJ) . إنه مورد فعال من حيث الكمية والجودة. يتوفر المحررون والحلول عبر الإنترنت إذا واجهتك مشكلة في حل المشكلات. بالإضافة إلى هذا الموقع ، أوصي بـ
SPOJ Toolkit ومصنف المشكلة لـ SPOJ.pl.أولاً ، تحتاج إلى صقل الأساسيات
بمجرد أن تعتاد على بناء جملة اللغة ، سوف تضطر إلى حل بعض المشاكل. ابدأ بمشكلات بسيطة تتطلب ممارسة. في هذه المرحلة ، الشيء الرئيسي هو تحديد أسلوبك في البرمجة. ربما ترغب في كتابة التعليمات البرمجية مع الكثير من المساحات ، أو ربما لا. ربما تضع الأقواس على نفس السطر مثل "if" أو يمكنك وضعها على سطور منفصلة.
عليك أن تجد أسلوبك في البرمجة لأنه أسلوبك.عندما تبحث عنه ، لا تنسى مبدأين أساسيين:
- يجب أن يكون كودك سهل التنفيذ. يجب أن تشعر بالراحة عند تنفيذ الحل الذي توصلت إليه. لماذا؟ لأنه أثناء المنافسة ، فإن آخر شيء تريده هو أن تضيع في شفرتك. من الأفضل دائمًا التفكير في كيفية تبسيط تطبيق الكود ، بدلاً من قضاء 10 دقائق لمعرفة ذلك.
- يجب أن يكون رمزك سهل القراءة. عندما يكون الرمز سهل القراءة ، فمن السهل تصحيحه. دعونا نواجه الأمر - تظهر الأخطاء باستمرار. هل تعرف الشعور بالذات عندما تبقى 10 دقائق حتى النهاية ولا يمكنك العثور على الخطأ اللعين؟ بالطبع أنت تعرف. لتجنب هذا الموقف ، اكتب رمزًا مقروءًا. عند بدء تصحيح الأخطاء ، ستبدو الشفرة طبيعية وسهلة الفهم.
هنا مثال على أسلوبي البرمجة.
كيفية تحسين مهاراتك في التنمية
الممارسة ، الممارسة والممارسة مرة أخرى. أوصي بأن تعمل من خلال 250 من أول المهام التي تم حلها على
SPOJ . حلها بالترتيب. يستغرق ما لا يقل عن ساعة للتفكير في الحلول لكل منهم.
لا تقل: "هذه المشكلة معقدة للغاية بالنسبة لي ، سأحاول حل ما يلي." حتى الخاسرون يعتقدون.
خذ قطعة من الورق وقلم رصاص. فكر في الأمر. ربما يمكنك العثور على حل ، أو ربما لا. كحد أدنى ، سوف تقوم بتطوير التفكير الخوارزمي. إذا لم تتمكن من التوصل إلى حل خلال ساعة ، فابحث عن حل جاهز في المنتدى أو في المقالات.
ماذا ستحقق مع هذا النهج؟ تعرف على كيفية تنفيذ أفكارك بسرعة باستخدام الكود. وتعلم المشاكل والخوارزميات الكلاسيكية.
ثانياً ، يجب أن تتقن الخوارزميات وهياكل البيانات
اتبع النهج الهرمي. هل بدأت الركض دون المشي؟ لا. يمكنك بناء ناطحة سحاب دون أساس متين؟ ليس مرة أخرى.
لا يمكنك تجاهل الخطوات في مسار التعلم. إذا تجاهلتهم ، فسيظل لديك فجوات في المعرفة. بمرور الوقت ، سوف يزدادون سوءًا.
ابدأ بالخوارزميات الأساسية وهياكل البيانات
من الصعب أن تبدأ. ربما لأنك لا تعرف ماذا تدرس أولاً. لذلك ،
قمتُ بإنشاء دورة فيديو "الخوارزميات وهياكل البيانات". في إنشاء هذه الدورة التدريبية ، اعتمدت على الطريقة التي أرغب في تدريسها. كان رد الفعل لا يصدق! اشترك أكثر من 3000 طالب من أكثر من 100 دولة في الدورة في الشهر الأول.
إذا كنت تعمل على حل المشكلات السهلة ، فلن تتحسن أبدًا.الطريقة الأكثر فاعلية لمعرفة ما لا تعرفه هي مواجهة هذا الأمر في الممارسة العملية. لذلك درست. لقد تعلمت العديد من التقنيات الجديدة التي لم يسبق لي أن سمعت عنها من قبل ، واختيار مهمة صعبة.
كل مشكلة ثالثة تعمل عليها يجب أن تعلمك شيئًا جديدًا. كن حذرا عند اختيار مشكلة. اختيار المشاكل أكثر صعوبة!
بعد الانتهاء من هذه المهام الـ 250 من SPOJ ، سيكون لديك فهم مشترك للمواضيع الرئيسية للبرمجة الرياضية. بفضل الفهم العميق للمنطق الذي تقوم عليه الخوارزميات الأساسية ، ستبدو الخوارزميات عالية المستوى أقل تعقيدًا. وبالتالي ، يمكنك استخدام علمك إلى أقصى حد.
حفر أعمق في كل من الموضوعات الرئيسية.
هنا هو مورد قيمة مع الكثير من المعلومات. هناك ستجد أفضل 10 خوارزميات وهياكل البيانات لكل موضوع. بعد 250 مشكلة من SPOJ ، ستعرف الكثير من هذه القائمة. ولكن أيضا تتعثر على الكثير الذي لم يسمع به من قبل. لذلك ، ابدأ في استكشاف هذه المواضيع بترتيب تصاعدي.
إذا كنت لا تقوي معرفتك بعد أن تتعلم شيئًا جديدًا ، فستنسى بسرعة كل شيء.
أوصي أنه بعد تعلم الخوارزمية الجديدة ، استخدمها في الممارسة. العمل عليه في 2-3 المهام. ابحث عن علامة الخوارزمية في SPOJ. ستجد هناك مشاكل لحل هذه الخوارزمية المطلوبة. فرز هذه القضايا أولا.
تعامل مع البرمجة الديناميكية لأنها ستقودك إلى النصر
بناءً على تجربتي ، توجد مشكلة واحدة على الأقل في
البرمجة الديناميكية في كل مسابقة. يعاني العديد من الأشخاص من صداع عندما يسمعون عبارة "البرمجة الديناميكية" لأنهم لا يفهمونها على الإطلاق.
وهذا جيد. لأنه إذا فهمت البرمجة الديناميكية ، فستفوز.
أحب البرمجة الديناميكية ، هذا هو الموضوع المفضل لدي. يكمن سر البرمجة الديناميكية في اتخاذ الخيارات المثلى عالميًا ، وليس فقط الخيارات المحلية. يجب تقسيم المشكلة إلى مهام فرعية أبسط. حل كل من هذه المهام الفرعية مرة واحدة فقط. ثم قم بإنشاء حل يجمع بين المهام الفرعية التي تم حلها.
الخوارزمية الجشعة هي عكس البرمجة الديناميكية. في ذلك ، تحتاج إلى اتخاذ الخيار الأمثل محليا في كل خطوة. يمكن أن يؤدي الخيار الأمثل محليًا إلى حل عالمي سيء.
أثناء استكشاف مفاهيم جديدة ، تحقق من
دروس TopCoder . فهي مفصلة جدا ومفهومة. بفضلهم ، تمكنت من فهم
الأشجار المفهرسة الثنائية .
اعمل بجد
هل سمعت من قبل عن الرياضيين الذين يفوزون في الألعاب الأولمبية دون سنوات من الممارسة؟ انا لا.
كل عام ، بدأت الاستعدادات لأوليمبياد الكمبيوتر في سبتمبر وتنتهي في أبريل.
كل يوم خلال هذه الأشهر الثمانية مارست لمدة 5 ساعات.
ونعم ، لقد أمضيت هذه الساعات الخمس فقط في حل المشكلات الخوارزمية. أتذكر الأيام التي مارست فيها التمارين لمدة 8 ساعات وحتى 10 ساعات. لماذا؟ لأنني أحببته. كل يوم ، أثناء عودتي إلى المنزل من المدرسة ، ذهبت مباشرة إلى غرفة النوم ، وجلست على الكمبيوتر وبدأت في حل مشكلة جديدة. أو درس خوارزمية جديدة تحتاج إلى معرفتها لحل هذه المشكلة.
إذا كنت ترغب في الفوز ، يجب أن تفعل الشيء نفسه. اختيار مشكلة والتمسك بها. فكر في الأمر أثناء المشي على طول الطريق إلى السوبر ماركت أو أثناء القيادة.

هل تعلم أنه أثناء النوم يقطع عقلك المعلومات التي يتم جمعها في هذا اليوم؟ يبدو أنه يكدس الكتب بترتيب أبجدي على رف الكتب. في الأساس ، يفكر عقلك في المشكلات المختلفة التي واجهتها.
هذا يمكن استخدامها بمهارة. قبل الذهاب إلى الفراش ، اقرأ المشكلة الصعبة وتذكر ما تحتاجه لحلها. في هذه المرحلة ، لا تحتاج إلى البحث عن الحل نفسه. اذهب الى السرير سوف يبدأ عقلك في التعامل مع هذه المشكلة. عندما تستيقظ ، ستندهش عندما تدرك أنك وجدت حلاً أثناء النوم.
جربه بنفسك. يبدو السحر.
لقد أنشأت مدونة فيديو

هذه الفقرة القصيرة لا تتعلق بالبرمجة الرياضية. إذا كان عمرك أكثر من عشرين عامًا ، وكنت مهتمًا بكيفية
رؤيتي للعالم ، فيمكنك مشاهدة
مدونة الفيديو الخاصة بي على Youtube . أنا أتحدث فيه عن العالم والحياة وعلوم الكمبيوتر.
اعمل بحكمة
هذا هو سر النجاح. تحتاج الأهداف.
نحن أناس ونحب
المماطلة . نريد دائمًا تأجيل ما يجب القيام به الآن. إن مشاهدة Netflix أفضل دائمًا من التعامل مع مشكلات البرمجة الديناميكية. أنت تعرف ذلك ، وتحتاج إلى إصلاحه.
كيفية التغلب على التسويف
حدد الأهداف لنفسك. ستجد دائمًا مشاكل مثيرة يمكنك من خلالها تعلم شيء جديد (راجع الموارد التي ذكرتها أعلاه). لكن هذه المشاكل تحتاج إلى حل ، وليس مجرد قراءة عنها.
لذلك ، هكذا تغلبت على المماطلة. لقد بدأت تقويمًا ورقيًا وملأت كل يوم بالمشكلات التي أردت حلها. لقد ملأت دائمًا المشكلات مسبقًا ، قبل يومين. لذلك ، كنت أعرف كيفية إدارة وقتي في الأيام التالية.

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

Andrei Margeloiu هو مبرمج نشط يهتم بروح المبادرة والشركات الناشئة والطبيعة. يمكنك الاتصال به
على LinkedIn .
ترجمة: ديانا شيريميوفا
اقرأ أيضا بلوق
شركة إديسون:
20 مكتبة لل
مذهلة تطبيق دائرة الرقابة الداخلية