الفنون رقم 012
الفنون رقم 012
ARTS هو نشاط بدأه
由左耳朵耗子--陈皓: قم بإجراء سؤال واحد على الأقل عن خوارزمية leetcode كل أسبوع، واقرأ مقالًا تقنيًا واحدًا على الأقل باللغة الإنجليزية وعلق عليه، وتعلم مهارة فنية واحدة على الأقل، وشارك المقالة مع الآراء والأفكار. (أي أن الخوارزمية والمراجعة والنصائح والمشاركة يشار إليها باسم ARTS) وتستمر لمدة عام واحد على الأقل.
الفنون 012
هذه المادة 12
سؤال خوارزمية الخوارزمية
سؤال خوارزمية leetcode رقم 241.إعادة تنظيم السلسلة: الصعوبة: معتدلة
442. البحث عن كافة التكرارات في صفيف
الصعوبة: متوسطة
بالنظر إلى مصفوفة من الأعداد الصحيحة، 1 ≥ a[i] ≥ n ( n = حجم المصفوفة)، تظهر بعض العناصر مرتين وتظهر عناصر أخرى مرة واحدة.
ابحث عن كافة العناصر التي تظهر ** مرتين ** في هذه المصفوفة.
هل يمكنك القيام بذلك بدون مساحة إضافية وفي وقت تشغيل O(n)؟
مثال:
**Input:**
[4,3,2,7,8,2,3,1]
**Output:**
[2,3]
الحل
اللغة: ج
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* findDuplicates(int* nums, int numsSize, int* returnSize) {
}
الفكرة هي حساب عدد المرات التي يظهر فيها الرقم. التنفيذ الخاص بي هو على النحو التالي. التعقيد الزمني هو O(n); السؤال لا يتطلب مساحة إضافية. يتم استخدام الذاكرة المطبقة هنا لتخزين النتائج. لا أعرف ما إذا كان تعقيد المساحة يعتبر انتهاكًا.
int* findDuplicates(int* nums, int numsSize, int* returnSize) {
int *charCount = (int*)malloc(sizeof(int) * (numsSize+1));
memset(charCount, 0, sizeof(int) * (numsSize+1));
for (int i = 0; i < numsSize; i++) {
int data = nums[i] ;
charCount[data]++;
}
* returnSize = 0;
for (int i =0; i < numsSize +1; i++) {
int data = charCount[i] ;
if (data > 1) {
charCount[(*returnSize)++] =i;
}
}
return charCount;
}
لقد وجدت إجابة ذكية في منطقة المناقشة، على النحو التالي، على سبيل المثال، إذا كانت أرقام الإدخال هي [2,3,2]، في المرة الأولى num=abs(nums[0]); قيمة num هي 2، وقيمة الأعداد المقابلة لـ 2-1 هي 3، ثم تضاف إشارة سالبة. في هذا الوقت، الأعداد هي [2،-3،2]. عندما يكون num=abs(nums[2); تم استخدامه للمرة الثالثة، وقيمة الأعداد هي 2، وقيمة الأعداد المقابلة لـ -1 هي -3، مما يشير إلى أن الحرف المقابل قد ظهر بالفعل.
int* findDuplicates(int* nums, int numsSize, int* returnSize) {
if(nums==NULL||numsSize<2)
{
*returnSize=0;
return NULL;
}
*returnSize=0;
int *result=(int *)malloc(sizeof(int)*(numsSize/2));
for(int i=0;i<numsSize;i++)
{
int num=abs(nums[i]);
if(nums[num-1]>0)
nums[num-1]=-nums[num-1];
else
result[(*returnSize)++]=num;
}
return result;
}
مراجعة
تأتي هذه المقالة من https://medium.freecodecamp.org/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2
تركز هذه المقالة على كيفية قيام المبرمجين بحل المشكلات: الطريقة التي يحل بها المبرمجون الجدد الأخطاء هي المحاولة مرارًا وتكرارًا، وهو أمر غير فعال للغاية (الطريقة التي يحل بها المبرمجون الجدد الأخطاء هي المحاولة مرارًا وتكرارًا، وهو أمر غير فعال على الإطلاق). يجب أن يكون النهج الصحيح هو إنشاء نهج عام خاص بك تجاه المشكلة، بما في ذلك الخطوات التالية: 1 أول شيء يجب فعله هو معرفة المشكلة وفهمها حقًا. 2. بدلاً من التسرع في حل المشكلة، خذ الوقت الكافي لتحليلها والتفكير فيها ووضع خطة. 3. قم بتحليل المشكلة. تقسيم المشكلة الكبيرة إلى مشاكل صغيرة. 4. عندما تواجه مشكلة صغيرة يصعب حلها، أولاً لا تنفد صبرك واستقر. يمكنك حلها عن طريق إعادة فحص المشكلة والبحث وتصحيح الأخطاء. 5 لا تخف من مواجهة المشاكل. فقط من خلال حل المزيد من المشكلات يمكنك تحسين قدرتك على أن تصبح خبيرًا (لا تخف من مواجهة المشكلات. فقط من خلال حل المزيد من المشكلات، يمكنك تحسين قدرتك على أن تصبح خبيرًا)
تفاصيل المقال هي كما يلي:
كيف تفكر كمبرمج – دروس في حل المشكلات

بواسطة [ريتشارد ريس] (https://twitter.com/richardreeze)
إذا كنت مهتمًا بالبرمجة، فمن المحتمل أنك شاهدت هذا الاقتباس من قبل: إذا كنت مهتمًا بالبرمجة، فمن المحتمل أنك شاهدت هذا الاقتباس:
“يجب على الجميع في هذا البلد أن يتعلموا برمجة الكمبيوتر، لأنه يعلمك التفكير.” - ستيف جوبز
ربما تساءلت أيضًا ماذا يعني بالضبط أن تفكر كمبرمج؟ وكيف تفعل ذلك؟؟ ربما تتساءل أيضًا، ما الذي يعنيه بالضبط أن تفكر كمبرمج؟ كيف تفعل ذلك؟
في الأساس، الأمر كله يتعلق بطريقة أكثر فعالية لحل المشكلات. في الأساس، إنها طريقة أكثر فعالية لحل المشكلة.
في هذه التدوينة هدفي هو تعليمك هذه الطريقة. هدفي في هذه المقالة هو تعليمك هذه الطريقة.
وبنهاية الأمر، ستعرف بالضبط ما هي الخطوات التي يجب اتخاذها لتكون قادرًا على حل المشكلات بشكل أفضل. وفي النهاية، ستعرف كيفية حل المشكلة بشكل أفضل.
لماذا هذا مهم؟
حل المشكلات هو المهارة الفوقية. حل المشكلات هو مهارة وصفية.
لدينا جميعا مشاكل. كبيرة وصغيرة. إن الطريقة التي نتعامل بها معهم تكون في بعض الأحيان، حسنًا… عشوائية جدًا. لدينا جميعا مشاكل. كبيرة وصغيرة. الطريقة التي نتعامل بها مع هذه المشاكل تكون عشوائية في بعض الأحيان. عشوائي جدا. عشوائي / عشوائي
ما لم يكن لديك نظام، فمن المحتمل أن تكون هذه هي الطريقة التي “تحل بها” المشكلات (وهو ما فعلته عندما بدأت البرمجة): ما لم يكن لديك نظام قائم، فمن المحتمل أن تكون هذه هي الطريقة التي “تحل بها” المشكلة (وهذا ما فعلته عندما بدأت البرمجة):
- جرب الحل.
- إذا لم ينجح ذلك، فجرّب طريقة أخرى.
- إذا لم ينجح ذلك، كرر الخطوة 2 حتى يحالفك الحظ.
انظر، في بعض الأحيان يحالفك الحظ. ولكن هذه هي أسوأ طريقة لحل المشاكل! وهي مضيعة كبيرة جدًا للوقت. انظر، في بعض الأحيان لا يحالفك الحظ. ولكن هذه هي أسوأ طريقة لحل المشكلة! إنها مضيعة للوقت جدًا.
أفضل طريقة تتضمن أ) وجود إطار عمل و ب) ممارسته. أفضل طريقة هي أ) أن يكون لديك إطار عمل و ب) تمارسه.
"يعطي جميع أصحاب العمل تقريبًا الأولوية لمهارات حل المشكلات أولاً. ويعطي جميع أصحاب العمل تقريبًا الأولوية لمهارات حل المشكلات أولاً.
تعد مهارات حل المشكلات بالإجماع تقريبًا أهم المؤهلات التي يبحث عنها أصحاب العمل… أكثر من إتقان لغات البرمجة وتصحيح الأخطاء وتصميم النظام.
إن إظهار التفكير الحسابي أو القدرة على حل المشكلات الكبيرة والمعقدة لا يقل قيمة (إن لم يكن أكثر) من المهارات التقنية الأساسية المطلوبة للوظيفة. —تصنيف المتسللين (تقرير مهارات المطورين لعام 2018)#### هل لديك إطار عمل للعثور على الإطار الصحيح، اتبعت النصائح الواردة في كتاب تيم فيريس عن التعلم، “The 4-Hour Chef”. للعثور على الإطار الصحيح، اتبعت النصائح الواردة في كتاب تيم فيريس عن التعلم،
قادني ذلك إلى إجراء مقابلة مع شخصين مثيرين للإعجاب حقًا: C. Jordan Ball (المرتبة الأولى أو الثانية من بين أكثر من 65.000 مستخدم على Coderbyte)، وV. Anton Spraul (مؤلف كتاب “Think Like a Programmer: مقدمة لحل المشكلات بشكل إبداعي”).
سألتهم نفس الأسئلة، وخمنوا ماذا؟ وكانت إجاباتهم متشابهة إلى حد كبير! سألتهم نفس السؤال وخمنوا ماذا؟ وكانت إجاباتهم متشابهة للغاية!
وقريباً ستعرفونهم أنتم أيضاً.
ملاحظة جانبية: هذا لا يعني أنهم فعلوا كل شيء بنفس الطريقة. الجميع مختلفون. سوف تكون مختلفا. ولكن إذا بدأت بالمبادئ التي نتفق جميعًا على أنها جيدة، فسوف تتقدم كثيرًا وبسرعة أكبر. Sidenote: هذا لا يعني أنهم يفعلون كل شيء بنفس الطريقة. الجميع مختلفون. سوف تكون مختلفا. ولكن إذا بدأت بالمبادئ الجيدة التي نتفق عليها جميعا، فسوف تذهب أبعد وأسرع.
“أكبر خطأ أرى أن المبرمجين الجدد يرتكبونه هو التركيز على تعلم بناء الجملة بدلاً من تعلم كيفية حل المشكلات.” —[ V. Anton Spraul] (http://vantonspraul.com/) أكبر خطأ أرى أن المبرمجين الجدد يرتكبونه هو التركيز على تعلم بناء الجملة بدلاً من تعلم كيفية حل المشكلات.
إذن، ماذا يجب أن تفعل عندما تواجه مشكلة جديدة؟ إذن، ماذا يجب أن تفعل عندما تواجه مشكلة جديدة؟
فيما يلي الخطوات:
1. افهم
تعرف بالضبط ما هو المطلوب. معظم المشاكل الصعبة تكون صعبة لأنك لا تفهمها (ولهذا السبب هذه هي الخطوة الأولى). تعرف بالضبط ما هو المطلوب. معظم الألغاز صعبة لأنك لا تفهمها (وبالتالي هذه الخطوة الأولى).
كيف تعرف متى تفهم المشكلة؟ عندما يمكنك شرح ذلك باللغة الإنجليزية البسيطة. كيف تعرف أنك تفهم السؤال؟ عندما يمكنك شرح ذلك باللغة الإنجليزية البسيطة.
هل تتذكر أنك كنت عالقًا في مشكلة ما، ثم بدأت في شرحها، ثم رأيت على الفور ثغرات في المنطق لم تكن تراها من قبل؟ هل تتذكر أنك كنت عالقًا في مشكلة ما، وبدأت في شرحها، ثم رأيت على الفور ثغرات في المنطق لم تكن قد رأيتها من قبل؟
يعرف معظم المبرمجين هذا الشعور. يعرف معظم المبرمجين هذا الشعور.
لهذا السبب يجب عليك كتابة مشكلتك، أو رسم رسم تخطيطي، أو إخبار شخص آخر عنها (أو شيء ما… يستخدم بعض الأشخاص بطة مطاطية). لهذا السبب يجب عليك كتابة مشكلتك أو رسم مخطط أو إخبار شخص ما (أو أي شيء آخر… يستخدم بعض الأشخاص البط المطاطي).
“إذا لم تتمكن من شرح شيء ما بعبارات بسيطة، فأنت لا تفهمه.” - ريتشارد فاينمان
2. الخطة
لا تنغمس في الحل بدون خطة (وتأمل بطريقة ما أن تتمكن من شق طريقك بطريقة مشوشة). خطة الحل الخاص بك! لا تنغمس في حل المشكلات بدون خطة (وآمل أن تتمكن من ذلك). خطة الحل الخاص بك! (لا تغوص في (لا تتعمق في))
لا شيء يمكن أن يساعدك إذا لم تتمكن من كتابة الخطوات الدقيقة. إذا لم تتمكن من كتابة الخطوات الدقيقة، فلن يساعدك شيء.
في البرمجة، هذا يعني عدم البدء في القرصنة على الفور. امنح عقلك وقتًا لتحليل المشكلة ومعالجة المعلومات. في البرمجة، هذا يعني عدم البدء في القرصنة على الفور. امنح عقلك وقتًا لتحليل المشكلة ومعالجة المعلومات.
للحصول على خطة جيدة، أجب عن هذا السؤال: للحصول على خطة جيدة، أجب عن هذا السؤال:
“بالنظر إلى الإدخال X، ما هي الخطوات اللازمة لإرجاع الإخراج Y؟” بالنظر إلى الإدخال X، ما هي الخطوات المطلوبة لإرجاع الإخراج Y؟
ملاحظة جانبية: لدى المبرمجين أداة رائعة لمساعدتهم في هذا… التعليقات! ملاحظة جانبية: لدى المبرمجين أداة رائعة لمساعدتهم على تحقيق ذلك… ملاحظات!
3. تقسيم
انتبه. هذه هي الخطوة الأكثر أهمية على الإطلاق.
لا تحاول حل مشكلة واحدة كبيرة. سوف تبكي. لا تحاول حل مشكلة كبيرة. سوف تبكي.
بدلًا من ذلك، قم بتقسيمها إلى مشكلات فرعية. هذه المشاكل الفرعية أسهل بكثير في الحل.
ثم قم بحل كل مشكلة فرعية واحدة تلو الأخرى. ابدأ بالأبسط. الأبسط يعني أنك تعرف الإجابة (أو أنك أقرب إلى تلك الإجابة). ثم قم بحل كل مشكلة فرعية واحدة تلو الأخرى. ابدأ بالأبسط. أبسط معنى هو أنك تعرف الإجابة (أو أقرب إلى تلك الإجابة).
بعد ذلك، الأبسط يعني أن حل هذه المشكلة الفرعية لا يعتمد على حل المشكلات الأخرى. وبعد ذلك فإن النهج الأبسط يعني أن حل مشكلة فرعية لا يعتمد على حل المشاكل الأخرى.
بمجرد حل كل مشكلة فرعية، قم بتوصيل النقاط. بمجرد الانتهاء من حل كل مشكلة فرعية، قم بتوصيل النقاط.
إن ربط جميع “الحلول الفرعية” الخاصة بك سيمنحك الحل للمشكلة الأصلية. تهانينا! إن ربط جميع “الحلول الفرعية” سيمنحك الحل للمشكلة الأصلية. تهانينا!
تعتبر هذه التقنية حجر الزاوية في حل المشكلات. تذكرها (اقرأ هذه الخطوة مرة أخرى، إذا كان عليك ذلك). هذه التقنية هي حجر الزاوية في حل المشكلات. احفظها (اقرأ هذه الخطوة مرة أخرى إذا لزم الأمر).> "إذا كان بإمكاني تعليم كل مبرمج مبتدئ مهارة واحدة لحل المشكلات، فستكون “تقنية تقليل المشكلة”. "إذا كان بإمكاني تعليم كل مبرمج مبتدئ مهارة واحدة لحل المشكلات، فستكون “تقنية تقليل المشكلة”.
على سبيل المثال، لنفترض أنك مبرمج جديد وطلب منك كتابة برنامج يقرأ عشرة أرقام ويحدد الرقم الذي يأتي في المرتبة الثالثة. بالنسبة للمبرمج الجديد، يمكن أن تكون هذه مهمة صعبة، على الرغم من أنها تتطلب فقط قواعد البرمجة الأساسية. على سبيل المثال، لنفترض أنك مبرمج جديد وطلب منك كتابة برنامج يقرأ 10 أرقام ثم يحدد الرقم الذي يأتي في المرتبة الثالثة. يمكن أن تكون هذه مهمة شاقة بالنسبة للمبرمج الجديد، على الرغم من أنها تتطلب فقط قواعد البرمجة الأساسية.
إذا واجهتك مشكلة، فيجب عليك تقليل المشكلة إلى شيء أبسط. بدلًا من ثالث أكبر رقم، ماذا عن إيجاد أعلى رقم إجمالي؟ لا تزال صعبة للغاية؟ ماذا عن إيجاد العدد الأكبر من ثلاثة أرقام فقط؟ أو أكبر من اثنين؟ إذا واجهتك مشكلة، يجب عليك تبسيط المشكلة. بدلاً من ثالث أعلى رقم، كيف يمكنك العثور على أعلى رقم بشكل عام؟ لا تزال قاسية جدا؟ ماذا عن إيجاد العدد الأكبر من بين ثلاثة أرقام؟ أو الأكبر من الاثنين؟
قم بتقليل المشكلة إلى الحد الذي تعرف فيه كيفية حلها وكتابة الحل. ثم قم بتوسيع المشكلة قليلاً وأعد كتابة الحل المناسب لها، واستمر حتى تعود إلى حيث بدأت. —ف. أنطون سبرول قم بتبسيط المشكلة إلى الحد الذي تعرف فيه كيفية حلها وكتابة الحل. ثم قم بتوسيع المشكلة قليلاً، وأعد كتابة الحل بحيث يتطابق، واستمر حتى تعود إلى حيث بدأت.
4. هل أنت عالق؟
الآن، ربما تكون جالسًا هناك وتفكر “مرحبًا ريتشارد… هذا رائع، ولكن ماذا لو كنت عالقًا ولا أستطيع حتى حل مشكلة فرعية؟؟” الآن، من المحتمل أنك تجلس هناك وتفكر “مرحبًا ريتشارد…” هذا رائع، ولكن ماذا لو كنت عالقًا ولا أستطيع حتى حل المشكلة الفرعية؟
أولاً، خذ نفساً عميقاً. ثانيًا، هذا عادل. أولا، خذ نفسا عميقا. ثانياً، إنه عادل.
لا تقلق رغم ذلك يا صديق. هذا يحدث للجميع! لا تقلق يا صديق. هذا يحدث للجميع!
الفرق هو أن أفضل المبرمجين/الذين يحلون المشكلات يكونون أكثر فضولًا بشأن الأخطاء/الأخطاء أكثر من غضبهم. الفرق هو أن أفضل المبرمجين/الذين يحلون المشكلات يكونون أكثر فضولًا بشأن الأخطاء/الأخطاء أكثر من انزعاجهم.
في الواقع، إليك ثلاثة أشياء يجب تجربتها عند مواجهة الضربة: في الواقع، هناك ثلاثة أشياء يمكنك تجربتها عندما يحدث لك شيء سيء:
- تصحيح الأخطاء: انتقل خطوة بخطوة إلى الحل الخاص بك محاولًا العثور على المكان الذي حدث فيه الخطأ. يسمي المبرمجون هذا التصحيح (في الواقع، هذا هو كل ما يفعله مصحح الأخطاء). تصحيح الأخطاء: قم بالخطوة خلال الحل الخاص بك، محاولًا معرفة الخطأ الذي حدث. يسمي المبرمج هذا التصحيح (في الواقع، هذا هو كل ما يفعله مصحح الأخطاء).
“إن فن تصحيح الأخطاء هو اكتشاف ما طلبت من برنامجك أن يفعله بالفعل، وليس ما كنت تعتقد أنك طلبت منه أن يفعله.” - أندرو سينجر إن فن تصحيح الأخطاء هو اكتشاف ما تطلب من برنامجك أن يفعله بالفعل، وليس ما تعتقد أنك تطلب منه أن يفعله
- إعادة التقييم: خذ خطوة إلى الوراء. انظر إلى المشكلة من منظور آخر. هل هناك أي شيء يمكن تلخيصه لنهج أكثر عمومية؟ إعادة التقييم: خذ خطوة إلى الوراء. أنظر إلى هذه المشكلة من زاوية أخرى. هل هناك أي شيء يمكن تلخيصه بطريقة أكثر عمومية؟
"في بعض الأحيان نضيع في تفاصيل المشكلة لدرجة أننا نتجاهل المبادئ العامة التي من شأنها أن تحل المشكلة على مستوى أكثر عمومية. […] “في بعض الأحيان ننخرط في تفاصيل المشكلة لدرجة أننا نفقد المبادئ العامة لحل المشكلات على مستوى أكثر عمومية.”
المثال الكلاسيكي لذلك، بالطبع، هو جمع قائمة طويلة من الأعداد الصحيحة المتتالية، 1 + 2 + 3 + … + n، والتي سرعان ما أدرك غاوس الصغير أنها ببساطة n(n+1)/2، وبالتالي تجنب جهد الاضطرار إلى القيام بعملية الجمع. —ج. كرة الأردن بالطبع، المثال الأكثر كلاسيكية هو مجموع قائمة طويلة من الأعداد الصحيحة المتتالية، 1 + 2 + 3 +…+ n، والتي تعرف عليها غاوس الصغير بسرعة على أنها n(n+1)/2، لذلك لم تعد هناك حاجة لإضافتها بعد الآن.
Sidenote: هناك طريقة أخرى لإعادة التقييم وهي البدء من جديد. احذف كل شيء وابدأ من جديد بعيون جديدة. أنا جادة. ستندهش من مدى فعالية ذلك. ملاحظة جانبية: هناك طريقة أخرى لإعادة التقييم وهي البدء من جديد. احذف كل شيء وابدأ من جديد بعيون جديدة. أنا جادة. سوف تتفاجأ بمدى فعالية هذا.
- بحث: آه، جيد يا جوجل. قرأت هذا الحق. بغض النظر عن المشكلة التي تواجهك، فمن المحتمل أن يكون هناك من قام بحلها. ابحث عن هذا الشخص/الحل. في الواقع، افعل هذا حتى لو قمت بحل المشكلة! (يمكنك أن تتعلم الكثير من حلول الآخرين). البحث: اه، جيد. قرأت هذا الحق. مهما كانت المشكلة التي تواجهك، فمن المحتمل أن يقوم شخص ما بحلها. ابحث عن هذا الشخص/الحل. في الواقع، افعل ذلك حتى لو قمت بحل المشكلة! (يمكنك أن تتعلم الكثير من حلول الآخرين).
تحذير: لا تبحث عن حل للمشكلة الكبيرة. ابحث فقط عن حلول للمشاكل الفرعية. لماذا؟ لأنه ما لم تكافح (ولو قليلاً)، فلن تتعلم أي شيء. إذا لم تتعلم أي شيء، فقد أضعت وقتك. ملحوظة: لا تبحث عن حلول للمشاكل الكبيرة. البحث عن حلول للمشاكل الفرعية فقط. لماذا؟ لأنه ما لم تحاول (ولو قليلاً)، فلن تتعلم أي شيء. إذا لم تتعلم شيئا، فأنت تضيع وقتك.
الممارسة
لا تتوقع أن تكون رائعًا بعد أسبوع واحد فقط. إذا كنت تريد أن تكون قادرًا على حل المشكلات بشكل جيد، فقم بحل الكثير من المشكلات! لا تتوقع أن تكون رائعًا في أسبوع واحد فقط. إذا أردت أن تكون حلالاً جيداً للمشاكل، قم بحل الكثير من المشاكل!
يمارس. يمارس. يمارس. سوف تكون مسألة وقت فقط قبل أن تدرك أن “هذه المشكلة يمكن حلها بسهولة باستخدام <أدخل المفهوم هنا>.” يمارس. يمارس. يمارس. عاجلاً أم آجلاً ستدرك أن “هذه المشكلة يمكن حلها بسهولة عن طريق <أدخل المفهوم هنا>”.
كيفية ممارسة؟ هناك خيارات خارج wazoo! كيفية ممارسة؟ هناك العديد من الخيارات!ألغاز الشطرنج، المسائل الرياضية، سودوكو، جو، مونوبولي، ألعاب الفيديو، القطط المشفرة، بلا… بلا… بلا…. لعبة الشطرنج، المسائل الرياضية، سودوكو، الاحتكار، ألعاب الفيديو، القطط المشفرة، بلا بلا بلا …
في الواقع، النمط الشائع بين الأشخاص الناجحين هو عادتهم في ممارسة “حل المشكلات الصغيرة”. على سبيل المثال، يلعب بيتر ثيل الشطرنج، ويلعب إيلون ماسك ألعاب الفيديو. في الواقع، النمط الشائع بين الأشخاص الناجحين هو أنهم يمارسون حل المشكلات الصغيرة. على سبيل المثال، يلعب بيتر ثيل الشطرنج، ويلعب إيلون ماسك ألعاب الفيديو.
"قال بايرون ريفز: “إذا كنت تريد أن ترى كيف قد تبدو قيادة الأعمال خلال ثلاث إلى خمس سنوات، فانظر إلى ما يحدث في الألعاب عبر الإنترنت.” “قال بايرون ريفز: إذا كنت تريد أن تعرف كيف ستبدو قيادة الأعمال خلال ثلاث إلى خمس سنوات، فانظر إلى ما يحدث في الألعاب عبر الإنترنت.” “”
تقدم سريعًا إلى اليوم. ويقول إيلون [مسك]، وريد [هوفمان]، ومارك زوكربيرج والعديد من الآخرين إن الألعاب كانت أساسًا لنجاحهم في بناء شركاتهم. — ماري ميكر (تقرير اتجاهات الإنترنت لعام 2017) تقدم سريعًا إلى اليوم. قال إيلون موسك وريد هوفمان ومارك زوكربيرج والعديد من الآخرين إن الألعاب كانت حجر الزاوية في شركاتهم الناجحة.
هل هذا يعني أنك يجب أن تلعب ألعاب الفيديو فقط؟ مُطْلَقاً. هل هذا يعني أنك يجب أن تلعب ألعاب الفيديو فقط؟ على الرحب والسعة.
ولكن ما هي ألعاب الفيديو؟ هذا صحيح، حل المشاكل! ولكن ما الذي تدور حوله ألعاب الفيديو بالضبط؟ نعم تم حل المشكلة!
لذا، ما يجب عليك فعله هو العثور على منفذ للتدرب. شيء يسمح لك بحل العديد من المشاكل الصغيرة (من الناحية المثالية، شيء تستمتع به). لذا، ما يجب عليك فعله هو العثور على منفذ للممارسة. شيء يسمح لك بحل الكثير من المشاكل الصغيرة (من الناحية المثالية، شيء تستمتع به).
على سبيل المثال، أنا أستمتع بتحديات البرمجة. أحاول كل يوم حل تحدي واحد على الأقل (عادةً في Coderbyte). على سبيل المثال، أنا أحب تحديات البرمجة. أحاول كل يوم حل تحدي واحد على الأقل (عادة في Coderbyte).
كما قلت، كل المشاكل تشترك في أنماط مماثلة. كما قلت، كل الأسئلة لها أنماط مماثلة.
الخلاصة
هذا كل الناس! هذا هو الجميع!
الآن، أنت تعرف بشكل أفضل ما يعنيه “التفكير كمبرمج”. الآن، أنت تعرف ماذا يعني “التفكير كمبرمج”.
أنت تعلم أيضًا أن حل المشكلات هو مهارة رائعة يجب تنميتها (المهارة الفوقية). أنت تعلم أيضًا أن حل المشكلات هو مهارة مذهلة (المهارة الفوقية).
وكأن هذا لم يكن كافيًا، لاحظ كيف تعرف أيضًا ما يجب عليك فعله لممارسة مهاراتك في حل المشكلات! إذا لم يكن ذلك كافيًا، فلاحظ أنك تعرف أيضًا كيفية ممارسة مهارات حل المشكلات!
أوه… رائع جدًا، أليس كذلك؟ رائع أليس كذلك؟
وأخيرا، أتمنى أن تواجه العديد من المشاكل. وأخيرا، أتمنى لك الكثير من المشاكل.
قرأت هذا الحق. على الأقل الآن أنت تعرف كيفية حلها! (وأيضًا ستتعلم أنه مع كل حل، فإنك تتحسن). قرأت هذا الحق. على الأقل الآن أنت تعرف كيفية حلها! (ستتعلم أيضًا أنك ستتحسن مع كل حل).
"فقط عندما تعتقد أنك قد نجحت في اجتياز عقبة واحدة، تظهر أخرى. ولكن هذا ما يجعل الحياة مثيرة للاهتمام.[…] عندما تظن أنك قد تجاوزت عقبة واحدة بنجاح، تظهر أمامك عقبة أخرى. ولكن هذا ما يجعل الحياة مثيرة للاهتمام.
الحياة هي عملية اختراق هذه العوائق – سلسلة من الخطوط المحصنة التي يجب علينا اختراقها. الحياة هي عملية اختراق هذه الحواجز، وهي سلسلة من الدفاعات التي يجب علينا اختراقها.
في كل مرة، ستتعلم شيئًا ما. وفي كل مرة تتعلم شيئًا ما.
في كل مرة، ستطور القوة والحكمة والمنظور. في كل مرة، سوف تقوم بتطوير القوة والحكمة والبصيرة.
في كل مرة، يختفي المزيد من المنافسة. حتى يبقى كل ما تبقى هو أنت: أفضل نسخة منك." —ريان هوليداي (العقبة هي الطريق) وفي كل مرة، تختفي المزيد من المنافسة. حتى تصبح أفضل نسخة من نفسك. —— رايان هوليداي (العقبة هي الطريق)
الآن، اذهب لحل بعض المشاكل!
وبالتوفيق 🙂
شكر خاص لـ C. Jordan Ball وV. Anton Spraul. كل النصائح الجيدة هنا جاءت منهم.
وأيضًا، كل المعرفة البرمجية التي اكتسبتها في مثل هذا الوقت القصير لم تكن لتتحقق لولا مدرسة Lambda. لا أستطيع أن أشكرهم / أوصي بهم بما فيه الكفاية.
علاوة على ذلك، فإن كل المعرفة البرمجية التي اكتسبتها في مثل هذا الوقت القصير لم تكن لتتحقق لولا مدرسة Lambda. شكرا لك/أوصي بهم كثيرا.
شكرا للقراءة! 😊 إذا استمتعت بها، اختبر كم مرة يمكنك أن تضرب 👏 خلال 5 ثواني. إنه تمرين رائع لتمارين القلب لأصابعك وسيساعد الآخرين على رؤية القصة. شكرا للقراءة! 😊 إذا أعجبك، اختبر عدد المرات التي يمكنك ضربها في 5 ثواني. 👏 إنه تمرين كارديو رائع لأصابعك وسيساعد الآخرين أيضًا على رؤية هذه القصة.
نصائح
لقد تعلمت كيفية استخدام الأداة هذا الأسبوع وسأقوم بترجمة أحدث المستندات الرسمية. لقد قمت بالفعل بترجمة جزء صغير من الفصل الأول: https://dandan2009.github.io/2018/10/26/Instruments-chinese-translation/
شارك
لقد تعلمت اليوم بعض المصطلحات الجديدة: “الشبكة الواضحة”، و"الشبكة المظلمة"، و"الشبكة العميقة"، وشبكة الظل. يشير Clearnet إلى الشبكة التي نستخدمها عادةً. “الويب المظلم”، “الويب العميق”، “الويب الشفاف”، “شبكة الظل”. تشير “الويب المظلم” و"الويب العميق" و"شبكة الظل" جميعها إلى شبكات بعيدة عن متناول الأشخاص العاديين ولا يمكن الوصول إليها بالطرق التقليدية. تحتوي معظم هذه الشبكات على معلومات غير قانونية.
المحتوى التالي يأتي من الإنترنت:
“الويب المظلم” DarkWeb و DeepWeb DeepWeb عبارة عن مجموعة واسعة من محتوى الإنترنت التي لا يمكن فهرستها بواسطة محركات البحث إذن ما هو Darknet (بالإنجليزية: Darknet أو Dark Web)؟ Darknet هي شبكة لا يمكن الاتصال بها إلا باستخدام برنامج خاص أو ترخيص خاص أو إعدادات كمبيوتر خاصة. عادةً ما تكون عناوين الخادم ونقل البيانات على الويب المظلم مجهولة وغير مرئية. في المقابل، يطلق على شبكة الإنترنت شائعة الاستخدام اسم “كليرنت” أو “كليرنت” (بالإنجليزية: Clearnet) لأنها تستطيع تتبع موقعها الجغرافي الحقيقي وهوية الشخص المتصل. تُعرف شبكة Onion Network حاليًا بأنها أفضل طريقة للاتصال المجهول عبر الإنترنت.
باستخدام تور استخدام Tor ليس بالأمر الصعب. إذا كان لديك حق الوصول إلى Google، فما عليك سوى تسجيل الدخول إلى موقع Tor الإلكتروني http://www.theonionrouter.com/下载Tor和Tor浏览器即可~
https://www.mushroomnetworks.com/
بيت البطاقات الرجل العجوز في فيلم “مدينة الخطيئة”
في الواقع، لم يظهر مصطلح “Shadow Web” إلا في بداية هذا العام، ويأتي أصل هذا المصطلح من منشور على Reddit (على غرار منتدى Hong Kong Gordon). وهذه أيضًا هي القصة التي أريد أن أقدمها لكم اليوم… تحذير رهيب.مثل كل التقنيات، هناك جوانب جيدة وجوانب شريرة. عندما تلعب الشبكة دورها في تبادل المعلومات لصالح البشرية، فإنها تحتوي أيضًا على طبقات هيكلية مشابهة للأبيض والأسود في المجتمع، مما أدى إلى ولادة ثلاثة أشقاء يُطلق عليهم اسم الشبكة الواضحة، والشبكة العميقة، والشبكة المظلمة.
أصل الويب المظلم
إذن، متى بدأت هذه المواقع في التطور؟ ومن عجيب المفارقات، كما هو الحال مع مصدر معظم التقنيات، أنه لا بد من ذكر البادئ هنا: الجيش الأمريكي.
في عام 1996، قدم علماء من معهد الأبحاث البحرية الأمريكية ورقة بحثية بعنوان “معلومات المسار المخفي” واقترحوا فكرة بناء نظام خفي يسمح لأي مستخدم بالبقاء مجهول الهوية في الوقت الفعلي عند الاتصال بالإنترنت دون الكشف عن هويته للخادم. بناء هذا النظام ضروري جدا. أولاً، يمكنها حماية المنشقين السياسيين في مختلف البلدان، والهروب من الاضطهاد الاستبدادي في مختلف البلدان، ونشر الديمقراطية العالمية في عيون الأميركيين؛ ثانيًا، يمكن أن يوفر مكانًا آمنًا لأفراد المخابرات الأمريكية لتبادل المعلومات.
في أكتوبر 2003، بدأ تنفيذ هذه الفكرة رسميًا لتزويد المستخدمين بمكان مجهول على الإنترنت مجانًا. نظرًا لأن كلمات المرور التي تحمي البيانات كانت ملفوفة مثل طبقات البصل، فقد تم تسمية النظام في النهاية باسم Tor (جهاز التوجيه البصلي). https://www.ufochn.com/article-205-1.html
https://www.aqniu.com/industry/37816.html
https://parrotsec-cn.org/t/topic/50
http://blog.sina.com.cn/s/blog_63296ead0102x95x.html
http://www.theonionrouter.com/about/torusers.html.en#normalusers
المواقع التالية هي بعض من مواقع الويب المظلم التي عثر عليها Rocket على موقع thehiddenwiki.org/ الشهير. تأكد من استخدام Tor للوصول إلى الويب المظلم (مواقع الويب التي تنتهي بـ .onion) تأكد من استخدام https لا تستخدم Tor لتسجيل الدخول إلى أي موقع ويب (مثل Baidu Netdisk وWeibo وZhihu وما إلى ذلك) لا ترسل أي معلومات شخصية غير مرغوب فيها عن نفسك
What to read next
Want more posts about ARTS?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home