لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/22/25 في كل الموقع
-
السلام عليكم ورحمة الله وبركاته... تحياتي لكم ... ارجو اعطائي كوبون خصم لدورة الذكاء الاصطناعي لحاجتي لها الفترة الحالية ... او ان تكون اقساط ميسرة حتى اتمكن منها. ولكم جزيل الشكر3 نقاط
-
السلام عليكم دي المساله You are given an integer array nums. You are allowed to delete any number of elements from nums without making it empty. After performing the deletions, select a subarray of nums such that: All elements in the subarray are unique. The sum of the elements in the subarray is maximized. Return the maximum sum of such a subarray. ودي الحل بتاعي هل يوجد افضل من كده max_sum = float('-inf') current_sum = 0 if len(array) != len(set(array)): for num in set(array): current_sum += num max_sum = max(max_sum, current_sum) if current_sum < 0: current_sum = 0 else: for num in array: current_sum += num max_sum = max(max_sum, current_sum) if current_sum < 0: current_sum = 03 نقاط
-
السلام عليكم هو الConvolutional Neural Networks بستخدم فقط في computer vision ؟3 نقاط
-
السلام عليكم كيف اعكس اتجاه النص دون التاثير على علامات html استخدم محرر notpad++ مثال للنص الصحيح : بعد تسجيل <LSTag Tooltip="CriticalHit">ضربة حرجة</LSTag>، استخدم <LSTag Type="ActionResource" Tooltip="BonusActionPoint">إجراء المكافأة</LSTag> لإجراء هجوم إضافي.</content> لأنك كنتَ بحاجةٍ للتحدث عنه. لأنه يبدو... صحيحًا. مناسبًا. عند عملية عكس اللغة تصبح العلامات غير مفهومه ولا استطع تحويلها يدويا هناك اكثر من الف سطر مثال للنص الخاطء بعد عكس الاتجاه <content/>.ﻲﻓﺎﺿﺇ ﻡﻮﺠﻫ ﺀﺍﺮﺟﻹ ;lt;/LSTag>&ﺓﺄﻓﺎﻜﻤﻟﺍ ﺀﺍﺮﺟﺇ;lt;LSTag Type="ActionResource" Tooltip="BonusActionPoint">& ﻡﺪﺨﺘﺳﺍ ،;lt;/LSTag>&ﺔﺟﺮﺣ ﺔﺑﺮﺿ;lt;LSTag Tooltip="CriticalHit">& ﻞﻴﺠﺴﺗ ﺪﻌﺑ .ﺎًﺒﺳﺎﻨﻣ .ﺎًﺤﻴﺤﺻ ...ﻭﺪﺒﻳ ﻪﻧﻷ .ﻪﻨﻋ ﺙﺪﺤﺘﻠﻟ ٍﺔﺟﺎﺤﺑ َﺖﻨﻛ ﻚﻧﻷ2 نقاط
-
2 نقاط
-
لدي كود مصمم بالذكاء الاصطناعي واريد تحويله إلى ملف exe من فضلكم1 نقطة
-
ai have a problem for taken to much storage, wich will cause many problems: how am I going to sent to you the test? how am I going to create a portfolio if github cannot handle more than 25MB?1 نقطة
-
AI take to much storage so it hard to create a portfolio for upwork and Baad, and the how I am going to sent you the final project of AI course because I dont think i can sent you since it take to much storage1 نقطة
-
Take the following Python code that stores a string:‘ str = 'X-DSPAM-Confidence: 0.8475' Use find and string slicing to extract the portion of the string after the colon character and then use the float function to convert the extracted string into a floating point number.1 نقطة
-
ليست مقتصرة فقط ذلك، بل لها تطبيقات متنوعة في مجالات أخرى أيضًا، بالطبع الاستخدام الأكثر شهرة هو معالجة الصور وتحليلها، كالتعرف على الأشياء، تصنيف الصور، واكتشاف الأنماط البصرية، بفضل قدرتها على استخلاص الميزات المكانية من البيانات ذات الأبعاد المتعددة، لكن استخداماتها تمتد إلى ما هو أبعد من ذلك. مثلاً في معالجة اللغة الطبيعية NLP لتحليل النصوص، كتصنيف المشاعر أو استخراج الميزات من التسلسلات النصية، حيث يتم التعامل مع النصوص كمصفوفات بتضمينات الكلمات، كما تُطبق في تحليل الإشارات الزمنية، مثل معالجة الصوت في التعرف على الكلام أو تحليل التسجيلات الصوتية، حيث تُعتبر الإشارات الصوتية بيانات أحادية البعد ومعالجتها باستخدام الالتفافات. وفي تحليل البيانات العلمية، كالتنبؤ بالطقس أو تحليل الصور الطبية كالأشعة السينية أو الرنين المغناطيسي، وحتى في الألعاب والروبوتات لفهم البيئة المحيطة، فكلما كانت هناك بيانات تحتوي على أنماط مكانية أو تسلسلية يمكن استخراجها، تظهر فائدة CNNs.1 نقطة
-
وعليكم السلام ورحمة الله تعالى وبركاته، ال Convolutional Neural Networks ليست مقتصرة على الرؤية الحاسوبية فقط على الرغم من أنها أصبحت مشهورة بنجاحها في المهام المتعلقة بالصور مثل التصنيف والكشف والتجزئة، إلا أنه يتم الآن تطبيقها في العديد من المجالات الأخرى. على سبيل المثال تستخدم في معالجة اللغة الطبيعية لمهام مثل تصنيف النصوص وتحليل المشاعر، وفي معالجة الصوت والتعرف على الكلام، وحتى في مجالات مثل المعلوماتية الحيوية وتحليل السلاسل الزمنية. كما أنّ قدرتها على تعلم الميزات الهرمية تلقائيا من البيانات تجعلها متعددة الاستخدامات للعديد من أنواع المدخلات المنظمة والمتسلسلة. كما أنها وسيلة لتعلم الأنماط الموجودة في البيانات بحيث يمكن أن تكون البيانات بأي شكل مثل ثنائي الأبعاد أو ثلاثي الأبعاد أو أكثر وغالبا ما تستخدم الصور في الشروحات لأنها تجعل من السهل فهم كيفية تطبيق الشبكة على البيانات. وأيضا تم استخدامها في المجال الطبي لتحليل البيانات التسلسلية مثل إشارات تخطيط القلب الكهربائي (ECG) لذا فإن مرونتها في التعامل مع أنواع مختلفة من البيانات المنظمة ضمن شبكة (grid) تجعلها مفيدة في مجالات متنوعة، ولا تقتصر فقط على مهام الإدراك البصري.1 نقطة
-
أولا أقترح عليك هذه المقالة التي تشرح كيف يتم ذلك نظريا وعمليا من هنا: وبالنسبة لخطوات التحويل فيجب بدءا تثبيت مكتبة PyInstaller من خلال فتح نافذة الأوامر أو الطرفية ثم نقوم بالتثبيت باستخدام pip: pip install pyinstaller بعدها انتقل إلى مجلد السكريبت الخاص بك من خلال تغيير المسار في الطرفية باستخدام الكلمة المفتاحية cd متبوعة بمسار المجلد، ثم شغّل PyInstaller مع خيار --onefile لجمع كل الملفات في ملف تنفيذي واحد: pyinstaller --onefile script.py يمكنك دوما مراجعة التوثيق الرسمي للمكتبة من هنا: PyInstaller في حال أردت إضافة إعدادات إضافية للأمر. أو يمكنك متابعة الخطوات من خلال هذه الإجابة:1 نقطة
-
وعليكم السلام ورحمة الله تعالى وبركاته، الأمر ليس ثابتا أو ينطبق على الجميع فهو يعتمد على أهدافك وخلفيتك بالنسبة للعديد من المتعلمين فهم يعتبرون لغة بايثون مناسبة تماما لفهم وتطبيق هياكل البيانات والخوارزميات لأن تركيبها الواضح والمختصر يتيح التركيز على المفاهيم الأساسية بسهولة بدلا من التفاصيل ذات المستوى المنخفض مثل إدارة الذاكرة وهذا يمكن أن يكون مفيدا بشكل خاص عندما تكون في بدايات تعلمك أو إذا كان هدفك الرئيسي هو تطوير التفكير الخوارزمي ومهارات حل المشكلات. من ناحية أخرى إذا كنت ترغب في فهم أعمق لما يحدث تحت الغطاء على سبيل المثال كيف تنفذ هياكل البيانات على مستوى الذاكرة، وكيف تعمل المؤشرات، وكيف تؤثر إدارة الذاكرة اليدوية على الأداء فإن تعلمها بلغة منخفضة المستوى مثل C ينصح به بشكل كبير وهذا ما كان يتم اعتماده في الجامعات التعليمية فهذه اللغة تجبرك على التعامل مع هذه التفاصيل، مما يرسخ فهمك لكيفية عمل الخوارزميات على مستوى أكثر أساسية لكن قد يكون التعقيد الإضافي في التعامل مع إدارة الذاكرة والمؤشرات مصدر تشتيت إذا كان تركيزك الأساسي هو تعلم المفاهيم الخوارزمية المجردة لذا يرجع الأمر في الأخير إليك.1 نقطة
-
ذلك نقاش قديم، والبعض يتمسك برأيه بأنه لكي تتعلم البرمجة بشكل صحيح وتتأسس بشكل قوي، عليك تعلمها من خلال لغة منخفضة المستوى، ذلك صحيح لكن ليس للجميع، فشخص مبتدأ وليس لديه خلفية متعلقة بالحاسوب أو علومه سيجد صعوبة وسيصاب بالإحباط بدون داعي، فليس من الطبيعي أن يتعامل مباشرًة مع إدارة الذاكرة يدوياً باستخدام المؤشرات. لذا تستطيع تعلم البرمجة من خلال أي لغة والأسهل هي بايثون بالطبع وهي لغة قوية ومستخدمة في مجالات متقدمة، وبعد فترة من التعلم تستطيع تعلم أي لغة برمجة أخرى فالمفاهيم هي ذاتها وذلك لتعميق الفهم. ستجد هنا تفصيل بخصوص الخوارزميات وهياكل البيانات التي عليك تعلمها:1 نقطة
-
من الرائع أن تكون متحمسًا لتعلم البرمجة وقضاء الكثير من الوقت فيها. ومع ذلك ، فإن الحفاظ على توازن صحي بين العمل والنشاط الاجتماعي والراحة الشخصية أمر مهم للغاية. لا ينصح بتضييع النشاطات الاجتماعية والراحة الشخصية كليًا ، بل يجب العمل على تحقيق توازن بينها وبين تعلم البرمجة. ينبغي أن تقضي بعض الوقت للاسترخاء والراحة والنوم الكافي لتجنب الإجهاد الزائد والتعب. وبالإضافة إلى ذلك ، فمن المهم أن تنتبه إلى صحتك العقلية والجسدية ، بما في ذلك الاهتمام بنظام غذائي صحي وممارسة التمارين الرياضية. بشكل عام ، من المستحسن أن تحاول تحقيق التوازن بين تعلم البرمجة والنشاطات الاجتماعية والراحة الشخصية. يمكنك تخصيص بعض الوقت لتعلم البرمجة والتطور فيها وفي نفس الوقت مخصص بعض الوقت للقيام بأنشطتك الاجتماعية والاسترخاء والترفيه عن نفسك. ولكن سأحدثك بواقعية وصراحة، الأمر يتوقف على ظروفك الشخصية والمرحلة العمرية التي أنت فيها، فالبعض يفعل ما تفعله عندما يريد تغيير حياته للأفضل أو لديه شغف كبير بالبرمجة وأنا مريت بتلك المرحلة لا مشكلة في ذلك، لكن عليك أن تعلم ما الذي ستضحي به. فهل الأمر يستحق التضحية؟ الإجابة تختلف إختلافًا شديدًا بين الجميع، فالبعض يقضي 10 ساعات يوميًا أو أكثر لتعلم البرمجة وأنا أفضل ذلك الأمر يستحق فعلاً التضحية من أجله فترة 6 شهور أو حتى سنة، فالمقابل هو تغيير حياتك للأفضل وإعطاء قيمة لحياتك بإمتلاك مهارات قيمة وأن تصبح ذا قيمة في سوق العمل، ولكن لا تنسى أن الآخرة هي الأهم فيجب الإهتمام بصلاتك وحق أهلك عليك. دع أصحابك يتحدثون كيفما شاؤوا فلكل شخص حياته وأهدافه، حاوط نفسك بأشخاص لهم نفس الهدف من خلال جروبات على الإنترنت وذاكر معهم، ويمكنك الرجوع لأصحابك بعد سنة لا مشكلة. وأنصحك بقراءة النقاش على السؤال التالي.1 نقطة
-
نتعرف في مقال اليوم على مفهوم الخوارزميات Algorithms التي تعد واحدة من المفاهيم الأساسية المستخدمة في مجال الرياضيات والبرمجة وعلوم الحاسوب والعديد من المجالات المختلفة الأخرى كما يمكننا تطبيقها في حل مشكلات حياتنا اليومية، ونكتشف أهم خصائصها وطرق كتابتها والتعبير عنها وطريقة تحويلها إلى كود برمجي. كما نوفر في ختام المقال أهم النصائح التي تساعدك في تعلم الخوارزميات بالطريقة الصحيحة. ما هي الخوارزميات Algorithms الخوارزمية هي مصطلح يشير إلى مجموعة من الخطوات المرتبة المتبعة لحل مشكلة ما أو إنجاز مهمة معينة، ويعود أصل هذا المفهوم إلى العالم المسلم أبي عبد الله محمد بن موسى الخوارزمي مؤلف كتاب “المختصر في حساب الجبر والمقابلة” والذي قدم فيه طرقًا منهجية جديدة لإجراء العمليات الحسابية وحل المعادلات الخطية والتربيعية بشكل خطوات متسلسلة ومن هنا نشأت كلمة خوارزمية نسبة إلى طريقة التفكير التي أوجدها لحل المسائل والتي كان لها أثرًا كبيرًا في تطوير الخوارزميات المستخدمة في شتى المجالات. فهناك خوارزميات تستخدم في مجال الرياضيات مثل خوارزمية خوارزمية إقليدس Euclidean algorithm وخوارزمية غربال إراتوستينس Sieve of Eratosthenes و خوارزميات تستخدم في مجال البرمجة وعلوم الحاسوب مثل خوارزميات الترتيب Sorting algorithms التي تساعدك على ترتيب مجموعة من العناصر وفق ترتيب تصاعدي، ويفيدنا الترتيب في حل الكثير من المشكلات الحاسوبية بسهولة أكبر على سبيل المثال البحث عن اسم ما في سلسلة عناصر مرتبة وفق التسلسل الأبجدي أسرع وأسهل من البحث في سلسلة عناصر غير مرتبة لذا من الأفضل أن ترتب العناصر قبل البحث فيها. كما تستخدم الخوارزميات كذلك في حياتنا اليومية في العديد من المواقف، على سبيل المثال لكل منا طريقة أو خوارزمية يعد من خلالها كوب القهوة الصباحي يوميًا بنفس الطريقة، بالنسبة لي أتبع الخطوات التالية: املأ الركوة أو دلة القهوة بالماء. سخّن الماء. انتظر حتى يغلي الماء. أضف القهوة وحركها. اسكب القهوة في الكوب. أعتقد أن فكرة الخوارزمية قد أصبحت واضحة بالنسبة لك، فهي ببساطة ليست سوى مجوعة من الخطوات المرتبة لإنجاز مهمة محددة وقد تختلف خطوات الخوارزمية المتبعة لإنجاز المهمة من شخص لآخر لكن المهم أن تكون النتيجة النهائية صحيحة. سنركز في فقراتنا التالية على مفهوم الخوارزميات في علوم الحاسوب والتي تعني بشكل محدد مجموعة من الخطوات المفصلة والمرتبة التي تخبر الحاسوب بطريقة أداء مهمة ما والتي تحوّل بسهولة إلى برامج حاسوبية يمكن للحاسوب تنفيذها. خصائص الخوارزميات يجب أن تتسم الخوارزمية بمجموعة من المواصفات أو الخصائص الأساسية، وتساعدك معرفة هذه الخصائص على تصميم الخوارزمية بشكل صحيح، ومن أهم هذه الخصائص: يجب أن تتكون الخوارزمية من تعليمات محددة وواضحة ومفهومة وقابلة للتنفيذ. يجب أن تكون الخوارزمية فعالة وقادرة على حل المشكلة المطلوبة بطريقة صحيحة وبسيطة قدر المستطاع. يمكن أن لا تحتوي الخوارزمية على مدخلات أو قد تتضمن عدة مدخلات. يجب أن تحتوي الخوارزمية على خرج واحد أو أكثر وينبغي أن تؤدي نفس المدخلات دائمًا إلى نفس النتائج أو المخرجات. يجب أن تجد الخوارزمية حلاً للمشكلة المطلوبة بعد عدد منتهي من الخطوات وتنجز خلال فترة زمنية محددة لتكون فعالة وذات جدوى. طرق تمثيل الخوارزمية يمكن تمثيل الخوارزمية بطرق مختلفة تصف من خلالها كيفية حل المشكلة، وفيما يلي نوضح عدة طرق ممكنة لتمثيل الخوارزمية: يمكنك تمثيل الخوارزمية بلغتك المحكية أو اللغة العامية بأي طريقة تفهمها وتستوعبها دون الحاجة للالتزام بأي قواعد محددة، وهذا الأسلوب يسهل عليك مشاركة الخوارزمية مع أشخاص آخرين مهما كانت خلفياتهم التقنية. كما يكمن أن تتبع طريقة أكثر رسمية في التعبير اللفظي باستخدام ما يعرف بالكود الزائف Pseudo-code الذي يشبه أسلوب الكتابة في لغة البرمجة ويعمل كحل وسط بين اللغة المحكية ولغة البرمجة. كما يمكن تمثيل الخوارزمية بطريقة رسومية باستخدام المخططات الهيكلية أو المخططات الانسيابية Flowcharts التي تتكون من رموز وأشكال أساسية مرتبطة بأسهم تظهر الترتيب المنطقي للخطوات، ولكل شكل هدف محدد. حيث يمثل الشكل البيضوي بداية ونهاية المخطط، ويمثل المستطيل عملية ما، ويشير متوازي الأضلاع إلى إدخال وإخراج البيانات، ويدل المعين على عملية اتخاذ قرار. على سبيل المثال إذا جربنا كتابة خوارزمية صنع كوب قهوة التي وضحناها سابقًا بشكل لفظي على شكل كود زائف يمكن أن نعبر عنها بالأسلوب التالي: ابدأ . املأ دلة القهوة بالماء. سخن الماء. تحقق مما إذا كان الماء يغلي. إذا كان الجواب صحيح انتقل إلى الخطوة التالية. إذا لم يكن الجواب صحيح عد إلى الخطوة السابقة. ضع القهوة فوق الماء المغلي وحركها. اسكب القوة في الكوب. النهاية. ويمكن كذلك تمثيل خوارزمية عمل كوب القهوة بشكل مخطط تدفقي رسومي كما يلي: خطوات كتابة الخوارزمية لتحديد خطوات الخوارزمية وكتابتها بشكل صحيح علينا بدايةً فهم المشكلة بشكل جيد وبعدها البدء بتحديد مشكلة الخوارزمية وتحديد مدخلات الخوارزمية من خلال تحديد كافة الأمثلة أو الحالات التطبيقية instances التي تعمل عليها الخوارزمية، ثم تحديد الخرج التي سنحصل عليه بعد تشغيل الخوارزمية على إحدى تلك الحالات، واعلم أن التمييز بين المشكلة نفسها والحالة التطبيقية عليها instance مهم جدًا. على سبيل المثال تُعرَّف مشكلة خوارزمية الفرز أو الترتيب sorting على النحو التالي: المشكلة: الترتيب. المدخلات: تسلسل من عدد n من المفاتيح a_1, a_2, ..., a_n الخرج: إعادة ترتيب تسلسل المدخلات بحيث يكون لدينا: b_1, b_2,<= ... <= b_{n-1}, b_n يمكن أن تعمل خوارزمية الفرز على عدة حالات instances، على سبيل المثال يمكن أن يكون دخل هذه الخوارزمية عبارة عن مصفوفة من السلاسل النصية التي نحتاج لترتيبها أبجديًا مثل {Haskell, Emacs} أو يكون عبارة عن تسلسل من الأرقام التي نريد ترتيبها تصاعديًا مثل {154، 245، 1337}. الخطوة التالية هي معرفة التعليمات التي ستعمل بها الخوارزمية وتعالج المدخلات للحصول على المخرجات وكتابتها بالترتيب الصحيح والتعبير عنها بالطريقة التي تفضلها وبعدها ستكون جاهزًا لتحويل الخوارزمية إلى كود برمجي قابل للتنفيذ على الحاسوب. مثال على كتابة خوارزمية Fizz Buzz سنوضح في هذه الفقرة كيفية حل مسألة Fizz Buzz وهي خوارزمية معروفة تحل مشكلة بسيطة ويطلب منك حلها في معظم المقابلات البرمجية والهدف منها طباعة مجموعة من الأعداد الصحيحة من واحد إلى N ولكنك ستطبع كلمة Fizz إذا كان العدد قابلاً للقسمة على 3، و كلمة Buzz إذا كان العدد قابلاً للقسمة على 5، وكلمة Fizzbuzz إذا كان العدد قابلاً للقسمة على العددين 3 و 5 بذات الوقت. يشير المعنى الحرفي لهاتين الكلمتين إلى الصوت التي تحدثه كل كلمة منهما، ويرجع أصل استخدامها إلى لعبة أطفال شهيرة تُسمّى fizz buzz تقوم على نفس المبدأ وتستخدم لتعلم الأطفال عملية القسمة. في الفقرات التالية سنكتب هذه الخوارزمية بلغة البرمجة سويفت Swift وفي حال لم تكن تملك خبرة في هذه اللغة اكتبها بأي لغة برمجة تعرفها مثل لغة بايثون أو جافا او اكتبها بالكود الزائف. بفرض أن دخل الخوارزمية هو سلسلة الأرقام التالية: 1 2 3 4 5 6 7 8 9 10 كما وضحنا سابقًا، يشير المصطلحَان Fizz و Buzz إلى أيّ عدد مضاعف للعدد 3 أو 5 على الترتيب، أي إذا كان العدد يقبل القسمة على 3 فيمكن استبداله بالكلمة Fizz، وإذا كان قابلاً للقسمة على 5 فيمكن استبداله بكلمة Buzz. أما إذا كان من مضاعفات 3 و 5 بذات الوقت فيُستبدَل بكلمة FzzBuzz أي سيكون الخرج كما هو مبين في الصورة التالية: يمكن التعبير عن الخوارزمية بشكل كود زائف كما يلي: ابدأ. قم بتكرار الأعداد من 1 إلى 10. تحقق مما إذا كان العدد الحالي قابلاً للقسمة على 3. إذا كان الجواب صحيح اطبع الكلمة fizz. إذا لم يكن الجواب صحيح، انتقل إلى الخطوة التالية. تحقق فيما إذا كان العدد الحالي قابلاً للقسمة على 5. إذا كان الجواب صحيح اطبع الكلمة buzz. إذا لم يكن الجواب صحيح، اعرض العدد الحالي. كرر الحلقة حتى تصل إلى الرقم 10. النهاية. لنعبر عن هذه الخطوات من خلال رسم مخطط تدفقي يوضح بشكل رسومي خطوات عمل الخوارزمية. تنفيذ خوارزمية Fizz Buzz من خلال لغة البرمجة Swift بعد أن فهمت الخوارزمية ستتمكن من تنفيذ هذه الخوارزمية بسهولة وتحويلها لبرنامج حاسوبي، افتح محرر الأكواد البرمجية Xcode أو VS code أو أي محرر آخر تفضله لكتابة برنامج جديد، يبدأ البرنامج بتعلمية تهيئة مصفوفة من 1 إلى 10 let number = [1,2,3,4,5,6,7,8,9,10] نريد أن نعالج مصفوفة الدخل والحصول على الخرج المطلوب، أي نريد أن نستبدل 3 بالكلمة fizz هنا و 5 بالكلمة buzz كما شرحنا سابقًا. ولتحقيق ذلك نمرّ على جميع عناصر المصفوفة والتحقق من كل عنصر من عناصرها ولذا سننشئ حلقة for تمرّ عبر هذه العناصر كما يلي: for num in number { // الحسابات هنا } بعد هذا، سنستخدم العبارة الشرطية if else، وعامل باقي القسمة module operator في لغة swift أي % لتحديد مواقع fizz و buzz كما يلي: for num in number { if num % 3 == 0 { print("\(num) fizz") } else { print(num) } } يكون الخرج الناتج من تنفيذ البرنامج هو كالتالي: 1 2 3 fizz 4 5 6 fizz 7 8 9 fizz 10 سنضيف الآن الجزء المتعلق بالكلمة Buzz مستخدمين نفس الآلية التي اتبعناها في كتابة الكود السابق: for num in number { if num % 3 == 0 { print("\(num) fizz") } else if num % 5 == 0 { print("\(num) buzz") } else { print(num) } } بعد إضافة الكود السابق سيكون الخرج الناتج من تنفيذ البرنامج بالشكل التالي: 1 2 3 fizz 4 5 buzz 6 fizz 7 8 9 fizz 10 سنزيد عناصر المصفوفة إلى 1-15. لاحظ أنّه بما أن 15 مضاعف لكلّ من 3 و 5، فينبغي استبدالها بـ fizz buzz: for num in number { if num % 3 == 0 && num % 5 == 0 { print("\(num) fizz buzz") } else if num % 3 == 0 { print("\(num) fizz") } else if num % 5 == 0 { print("\(num) buzz") } else { print(num) } } لا تزال لدينا مشكلة قائمة في الكود أعلاه، فالغرض الأساسي من الخوارزمية هو ترشيد وقت التنفيذ. تخيّل لو زدنا نطاق المصفوفة من 1-15 إلى 1-100، سيكون على مُصرِّف اللغة فحص كل عدد على حدة لتحديد ما إذا كان قابلاً للقسمة على 3 أو 5، ثمّ سيمرّ على الأعداد ثانيةً للتحقق ممّا إذا كانت قابلة للقسمة على 3 و 5 (معًا)، كما سيتعيّن على الشيفرة أن تمرّ على كلّ عدد في المصفوفة مرّتين لأنّها ستتحقق من قابلية قسمة العدد على 3 أولًا، ثمّ على 5. ولتسريع هذه العملية، يمكن أن نأمر المصرّف بقسمة الأعداد على 15 مباشرة. انظر الشيفرة النهائية: for num in number { if num % 15 == 0 { print("\(num) fizz buzz") } else if num % 3 == 0 { print("\(num) fizz") } else if num % 5 == 0 { print("\(num) buzz") } else { print(num) } } هنيئًا لك، بهذا تكون قد كتبت أوّل خوارزمية لك، يمكنك استخدامها في أيّ لغة برمجة، وستعمل كما هو مُتوقّع. تعلم الخوارزميات إن تعلم الخوارزميات خطوة مهمة لأي شخص مهتم بالبرمجة والتطوير فهي تساعده على فهم البرمجة بشكل أفضل وتكسبه مهارة فهم المشكلات البرمجية المعقدة واختيار الطرق الأنسب والأكثر كفاءة لحلها. كما يرتبط تعلم الخوارزميات مع تعلم هياكل البيانات التي تساعدك على تنظيم وإدارة وتخزين ومعالجة البيانات بكفاءة وتتضمن معظم مقابلات العمل للوظائف البرمجية أسئلة متعلقة بفهم أساسيات الخوارزميات وهياكل البيانات لذا من الضروري لأي مهتم بمجالات العمل البرمجي تعلمها بشكل جيد. وإليك أهم النصائح والخطوات التي تساعدك على تعلم الخوارزميات بكفاءة: عزز مهارة التفكير المنطقي فهي مهارة أساسية يحتاجها أي مبرمج. درب نفسك على التفكير الخوارزمي أي التفكير في أي مشكلة تواجهك بطريقة تشبه طريقة تفكير الحاسوب من خلال تحديد الخطوات المفصلة للحل أو تقسيم المشكلة إلى مشكلات أصغر وحل كل جزء على حدا. تعلم أهم أنواع الخوارزميات المعروفة التي يحتاجها معظم المطورين والطرق المختلفة لتنفيذها وكفاءة كل طريقة منها. تعلم كيف تحلل أي مشكلة برمجية وتفهمها جيدًا وتخطط لها على الورق وتمثلها بالطرق الخوارزمية وتأكد من أنك فهمتها بشكل كامل قبل كتابة كودها البرمجي. تعرف على أهم هياكل البيانات في لغة البرمجة التي تستخدمها لكتابة برامجك وتطبيقاتك وفكر بالبنية الأفضل لحل مشكلتك. طبق الخوارزميات لحل مشكلات بسيطة وتدرب على حل التحديات البرمجية Problem Solving وهي كثيرة عبر الإنترنت وتضم الكثير من المهتمين بالبرمجة والتطوير وقارن إجاباتك مع إجابات الآخرين وتناقش معهم حول حلولهم لتكسب المزيد من الخبرات. فكر في تنفيذ عدة طرق لحل المشكلات البرمجية التي تواجهك وقارن أيّ هذه الطرق أسرع وأكثر كفاءة وفعالية. تعلم مفهوم تعقيد الخوارزميات الذي يعبر عن مقدار الوقت أو مساحة الذاكرة التي تستغرقها الخوارزمية للتنفيذ واستفذ منه في كتابة شيفرات برمجية فعالة. اعتمد مصادر تعلم موثوقة ومنهجية، ستجد في أكاديمية حسوب الكثير من المقالات والدروس المفيدة لتعلم البرمجة والخوارزميات، كما توفر موسوعة حسوب توثيقًا باللغة العربية لأشهر الخوارزميات التي يحتاج أي مطور لمعرفتها، كما يمكنك الانضمام إلى دورة علوم الحاسوب التي تضم العديد من المسارات المفيدة لتعلم أساسيات البرمجة وتتضمن عدة مسارات تشرح الخوارزميات وطريقة التفكير المنهجي في حل أي مشكلة وكتابة خوارزمياتها قبل البدء ببرمجتها مما يصقل مهاراتك التقنية لتفكر كمهندس برمجيات بدلاً من أن تكون مجرد مبرمج يكتب الأكواد وينفذها فحسب. الخلاصة تعرفنا في مقال اليوم على ما هي الخوارزميات وما الخطوات التي يجب اتباعها لكتابة الخوارزمية وتمثيلها بطرق مختلفة واستعرضنا في الختام أهمية تعلم الخوارزميات واكتساب مهارة التفكير المنهجي لحل المشكلات بطريقة تشبه طريقة عمل الحاسوب وأهم النصائح التي تساعدك على تعلمها وإتقانها كخطوة أساسية قبل تطوير مهارات البرمجة والتطوير. ترجمة -بتصرّف- للفصل الأول من كتاب Algorithms Notes for Professionals. اقرأ أيضًا المرجع الشامل إلى تعلم الخوارزميات للمبتدئين دليل شامل عن تحليل تعقيد الخوارزمية بناء مصنف بالاعتماد على طرق تعلم الآلة بلغة بايثون باستخدام مكتبة Scikit-Learn - النسخة الكاملة لكتاب مدخل إلى الذكاء الاصطناعي وتعلم الآلة1 نقطة