لمن لا يعرفها: لعبة Code Golf هي لعبة موجهة للمبرمجين تهدف إلى تشغيل الدماغ وتساعد على فهم خفايا لغات البرمجة. ملخصها هو أن يتم تحديد مشكلة ما ومعطياتها ومخرجاتها بشكل جيد وأي شروط أخرى. يقوم اللاعبين بعمل برنامج يقوم بحل المشكلة بطريقة صحيحة. ثم يتم حساب عدد الحروف المستخدمة في الحل. الفائز هو من يستطيع برمجة حل بأقل عدد ممكن من الحروف. قد يبدو هذا سخيفاً لأول وهلة، ولكنه في الواقع طريقة ممتازة لتعلم الاختصارات البرمجية التي تترجم أحياناً إلى أداء أفضل. دوال البرمجة الـfunctional والـRegeEx وما شابهها يتم استخدامها كثيراً في Code Golf. بما أنني أشعر بالملل في العمل رأيت أنها فكرة ممتازة للتمرن على البايثون التي تناسبها هذه اللعبة تماماً. لذا شرط اللعبة الوحيد هو استخدام البايثون (من يريد استخدام لغة أحرى يمكنه بدأ موضوع منفصل في القسم المخصص لهذه اللغة).
جاهزين؟ نبدأ!!
السؤال:
لغز Euler رقم 6. جد الفرق بين مربع المجموع ومجموع المربعات لمتسلسة أرقام. كمثال نأخذ الأرقام من 1-10.
مجموع المربعات:
12 + 22 + ... + 102 = 385
مربع المجموع:
(1 + 2 + ... + 10)2 = 552 = 3025
يصبح الفرق هو:
3025 − 385 = 2640
التحدي هو: اكتب برنامجاً بالبايثون بأقل عدد ممكن من الحروف يحل نفس المسألة ولكن للأرقام من 1-100.
مثال من عندي (سأضع حلاً حقيقياً فيما بعد):
numbers=list(range(1,101)) sqrsum=sum(numbers)**2 sumsqr=0 for i in numbers:sumsqr+=i**2 print(sqrsum-sumsqr)
عدد الحروف 110
ملاحظات:
* الحل الصحيح الذي يجب على البرنامج إنتاجه هو 25164150
*أداة لعد الحروف: http://allworldphone.com/count-words-characters.htm



