Python « مغامرات برمجية

وسوم: Python

Light Table – أداة تطوير كود بشكل مختلف

نّشر في: 2012/05/15
تصنيفات: أخبار تقنية
وسوم: ,
تعليقات: 9 تعليق

أدوات تطوير الكود (أو IDE) كثيرة جداً هذه الأيام. من البالغة البساطة مثل Notepad++ إلى الأكثر تعقيداً مثل Visual Studio وEclipse. لكنها كلها في النهاية لها مبدأ مشترك: التعامل مع الكود على أنه مجموعة من الملفات. ولكن هذه مجرد طريقة التخزين. بينما عندما تنظر إلى الكود من وجهة نظر برمجية بحتة، ستجد أن الكود في الواقع هو مجموعة من الدوال والكلاسات وما إلى ذلك. ورغم أن العادة جرت على أن يكون كل كلاس في ملف منفصل، تبقى هذه ناحية تنظيمية بحتة تعتمد على المبرمج. وماذا عن الدوال؟ تقسيمها إلى ملفات منفصلة موضوع شائك هو الآخر. من هذا المنطلق قام مبرمج يدعى Chris Granger بطرح فكرة مشروع IDE جديد سماه Light Table، تكون وحدة الكود ليست تخزينية الاتجاه بل برمجية. و هنا فيديو عن المشروع:

(اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 17: خوارزمية التفقيط

نّشر في: 2011/11/28
تعليقات: لا تعليقات

Project Euler Problem 17

نص السؤال:

إذا كتبنا الأعداد 1 إلى 5 بالإنجليزية: five، four، three، two، one، فإننا سوف نستخدم 3 + 3 + 5 + 4 + 4 = 19 حرفاً.

إذا كتبنا جميع الأعداد من 1 إلى 1000 ضمنياً، كم حرفاً سنستخدم؟

ملاحظة: لا تحسب الفراغات أو الشرطات. مثلاً 342 (three hundred and forty-two) تحوي 23 حرفاً و 115 (one hundred and fifteen) تحوي 20 حرفاً. استخدام and في كتابة الأعداد سيكون حسب نظام الاستخدام البريطاني.
(اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 16: الأعداد الصحيحة الضخمة جداً

نّشر في: 2011/11/11
تعليقات: 2 تعليق

Project Euler Problem 16

نص السؤال:

215 = 32768 و مجموع خانات هذا الرقم هو 3 + 2 + 7 + 6 + 8 = 26

ما هو مجموع خانات 21000؟

(اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 15: الـGraph والتصميم المفتوح باستخدام الـOOP

Project Euler Problem 15

نص السؤال:

إذا بدأنا من الركن الأيسر الأعلى من شبكة ذات حجم 2 × 2، فهناك 6 طرق (دون تراجع) للوصول إلى الركن الأيمن السفلي.

Euler 15كم طريقاً هنالك للمرور خلال شبكة 20 × 20؟
 
(اقرأ المزيد …)

Post to Twitter

المبرمج الرحّالة!

نّشر في: 2011/09/21
تعليقات: 4 تعليق

عندما تكون هاوياً للبرمجة فإنك غالباً ما ستجد نفسك تقحم التفكير البرمجي في كل شئ. عندما تكون في السوق وتخرج ورقة “المقاضي” وتكتشف انك نسيتها، أول شئ تفكر فيه هو “لازم أطور برنامج جوال يوصل للسيرفر الموجود في البيت ويعمل جرد لقاعدة بيانات المطبخ”. وأحياناً تجد نفسك أمام مسألة حسابية أعقد قليلاً من أن تحلها بسهولة في آلة حاسبة، مثل ما حدث لي قبل بضعة أيام.

في الفترة الأخيرة أدمنت على لعبة Minecraft، بالذات أن صديق لي فتح للشلة سيرفر خاص لنفرغ ابداعاتنا فيه. لطالما كنت مهووساً بالتاريخ المصري الفرعوني، لذا بطبيعة الحال فكرت ببناء هرم خوفو بالحجم الطبيعي (ارتفاعه 138 مكعب). وكنت أتناقش مع صديقي هذا حول كمية المكعبات التي ستحتاجها لبناء نسخة مفرغة منه. لم تسعفنا القوانين الرياضية التي نعرفها، ولكنني كنت أعرف كيف أحسبها برمجياً ولكن لم يكن بقربي (وقتها) أي جهاز حاسوبي سوى جوالي!

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

ما الحل؟! كيف يستطيع المبرمج الرحّال أن يمارس برمجته في أي مكان؟

(اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 14: الـMemoization والبرمجة “الناشفة”

نّشر في: 2011/09/12
تعليقات: لا تعليقات

Project Euler Problem 14

نص السؤال:
المتسلسلة التكرارية التالية معرفة على مجموعة الأعداد الصحيحة الموجبة:

n → n/2

(في حالة n عدد زوجي)

n → 3n + 1

(في حالة n عدد فردي)

باستخدام القاعدة الموجودة بالأعلى، وبدايةً بالعدد 13، نحصل على المتسلسلة التالية:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

يمكننا أن نرى أن هذه المتسلسلة (بدايةً بـ13 ونهايةً بـ1) تحتوي على 10 عناصر. رغم أنه لم يتم إثبات هذا بعد (حدسية كولاتز)، إلا أنه يعتقد أن جميع الأعداد البادئة ستنتهي إلى العدد 1.

ما هو العدد البادئ، تحت المليون، الذي يولد أكبر عدد من العناصر؟

ملاحظة: عندما تبدأ المتسلسلة فإنه مسموح لها بأن تولد أكثر من مليون عنصر.

(اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 13: سحب البيانات باستخدام الـWeb Scraping

نّشر في: 2011/09/01
تعليقات: لا تعليقات

Project Euler Problem 13

نص السؤال:

احسب العشر خانات الأولى من مجموع المائة الرقم ذو الخمسين خانة التالية:

37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
74324986199524741059474233309513058123726617309629
91942213363574161572522430563301811072406154908250
23067588207539346171171980310421047513778063246676 (اقرأ المزيد …)

Post to Twitter

Python Tools for Visual Studio: سلاحي الجديد ضد مشروع أويلر!

أولاً وقبل كل شئ: عيد مبارك وكل عامٍ وأنتم بخير!

والآن لنعد إلى موضوعنا. ربما لاحظ بعض متابعي التويتر الخاص بي بأن هناك فترة زمنية هائلة بين إعلاني لحل مسألة أويلر رقم 76 ورقم 77. هناك عدة أسباب في الواقع. إجازتي السنوية والخمول المصاحب لها، المسألة 76 كانت فعلاً صعبة واستهلكت الكثير من طاقتي (ولو أنني تعلمت بضعة أشياء رياضية جميلة)، والمسألة 77 كانت أصعب. ولو أن نظرة سريعة عليها أخبرتني أن حل 77 يعتمد على 76 وأشياء أخرى. النقطة الهامة هنا هي عبارة “أشياء أخرى”. كنت وقتها لدي أرشيف حلول 76 مسألة سابقة كلها بالبايثون. المنهك في الموضوع سيكون البحث فيها عما يفيد. وخمولي الطبيعي يأبى هذا!

ولكن قبل بضعة أيام جائني خبر عن طريق موقع Slashdot بإصدار مايكروسوفت لما يدعى بـPython Tools for Visual Studio. كلمتان رنانتان أحبهما في عبارة واحدة!

Python Tools for Visual Studio (اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 12: الأعداد المثلثة والـGenerator Functions

Project Euler Problem 12

نص السؤال:

متسلسلة الأعداد المثلثة يتم توليدها عن طريق تجميع الأعداد الطبيعية. لذا سيكون العدد المثلث السابع هو 1+2+3+4+5+6+7 = 28. أول عشرة أعداد مثلثة هي:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …

دعنا نسرد جميع قواسم أول سبعة أعداد مثلثة:

1: 1
3: 1,3
6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

نلاحظ أن العدد 28 هو أول عدد له أكثر من خمسة قواسم.

ما هي قيمة أول عدد مثلث له أكثر من 500 قاسم؟

(اقرأ المزيد …)

Post to Twitter

مسألة أويلر رقم 11: المصفوفات المتعددة الأبعاد

نّشر في: 2011/06/10
وسوم: ,
تعليقات: تعليق واحد

Project Euler Problem 11

نص السؤال:

في الشبكة 20 × 20 بالأسفل علّمنا على أربعة أرقام تمثل خطاً قطرياً باللون الأحمر.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

حاصل ضرب هذه الأعداد هو: 26 × 63 × 78 × 14 = 1788696.

ما هو أكبر حاصل ضرب لأربعة أرقام متتالية في أي اتجاه (فوق، تحت، يمين، يسار، قطرياً) في هذه الشبكة؟

 

(اقرأ المزيد …)

Post to Twitter

page 1 of 3 »
Project Euler
أحدث التدوينات
تصنيفات
الأرشيف
منوعات
System Down على Twitter

مرحباً , تاريخ اليوم هو الخميس, 2017/03/23