كيف حالكم أيها الكرام؟
أسأل الله تعالى أن تكونوا بخير جميعكم ^.^
حقيقة ما شاء الله أعجبني طريقة كتابة الكود للعديد من المشاركين هنا، كانت أكثر من رائعة وطريقة تصرفهم في المشاكل التي قد تواجههم وحلهم لها
لم أصحح للكل بعد بالرغم من اطلاعي على أغلب ما تم ارساله حتى الان، لكن سأقول بانه اعجبتني طريقة معالجة الأخت سوس تشان للأرقام الكبيرة ^.^ وطريقتها تلك حدت من طول الوقت المطلوب لحساب العملية عند استخدام أرقام كبيرة جدا ^.^
كما اعجبتني طريقة الأخ shekoforever أيضا في جعل برنامجه يقوم بحساب الأرقام الكبيرة مهما كان كبرها دون ضرب الناتج في 10 مرفوع إلى أس معين أظن ان احدا اخر هنا قام بالمعالجة بنفس الطريقة وهو الأخ Maaaaaaaan وإن كنت لم أضع له درجة بعد << أرجو ألا أكون قد أخطأت في عدد حروف الـ a
<<سوس تشان وشيكو فور ايفر، لا تفرحا فبالرغم من ذلك لم تحرزا الدرجة الكاملة بسبب طريقة خاطئة في معالجة خطأ ما وإن كنتم تقريبا قد أحرزتم الدرجة الكاملة رغم ذلك فالدرجة الناقصة بسيطة جدا XD
الأخت ض.س كتبت بأن نسخة البرنامج نسخة trial لذا لا يمكنها حساب أكثر من عدد معين، فكرة مبتكرة وعذر مقنع
كما قامت أيضا بإضافة جزئية زائدة في وظائف البرنامج غير مطلوبة في أصل السؤال، أحييها على ذلك
عموما قررت لهذا السبب أن اقوم بوضع درجة زائدة (إسمها درجة تفاضلية) بدءا من المرحلة الثانية، ليست من أصل المجموع لكن ستضاف للدرجة النهائية أيضا بحيث لو قلنا ان مجموع الثلاث مراحل سيكون 30 درجة فمع الدرجتين الإضافيتين تلك (واحدة للمرحلة الثانية وواحدة للمرحلة الثالثة) ستكون الدرجة النهائية 32 من 30
اذن فسوف تضاف لمجموع النهائي بعكس درجة الواجهة التي تضاف لتحسين المجموع فقط ^.^
وهذه الدرجة ستضاف لمن يقوم بعمل شيئ مبهر وغير معتاد وأيضا ستكون درجة تفاضلية بحيث لن يأخذها كاملة إلا افضل واحد قام بعمل مميز أو فكرة مبتكرة والباقين سيأخذون منها جزءا فقط، كما يمكن تخصيص جزء منها لمطلوب زائد في المرحلتين أي انه غير مهم وليس من أصل الدرجة لكن لمن يريد عمله فقط ^.^
وطبعا بما انني لم انبه في المرحلة الاولى فقد تم وضع هذه الدرجة للمرحلة الثانية والثالثة فقط وها انا ذا انبه لهذا الأمر الان
هذا ما لدي الان وقد ذكرته كمثال فقط فكما قلت لم أقم بتصحيح جميع الإجابات بعد
ستكون هذه المرحلة أصعب من السابقة كما قلت سابقا كما أن المطلوب في هذه المرحلة سيأخذ وقتا اطول في التنفيذ والشرح
حاولت أن تكون المرحلتين الثانية والثالثة قويتا الأسئلة لزيادة متعة التنافس ووضع المتسابقين أمام مشكلة تحتاج منهم للتفكير الجدي في كيفية حل المشلكة
بالنسبة لهذه المرحلة فرأيي فيها يختلف مع حسامز، فهو يرى أنها يجب أن تكون هي الثالثة بما ان الثالثة هي الأصعب وأنا ارى أن هذه المرحلة أسهل من الثالثة، لكنها ربما تحتاج لوقت أطول من الثالثة لكتابة الكود
لذا سأترك لكم الحكم، وفي النهاية أرى بأن إحداهما ستكون أسهل من الأخرى وبذلك أكون قد وفيت بوعدي بشأن تفاوت صعوبة الأسئلة
أظن أنني تكلمت كثيرا لذا فلنبدأ الان مع:
لدينا رسالة مشفرة هذه هي:
oTenThArAeiAilaelKhSlirrtzoirHitprmoZPvs
ونحتاج إلى فكها هي وأي رسائل أخرى شبيهة لها
ونظام التشفير هنا لا يعتمد على تغيير الأحرف وإستبدالها بأحرف أخرى، بل هو يعتمد على تغيير ترتيب الأحرف فقط داخل الرسالة بالطريقة التالية:
لو أردنا تشفير الجملة التالية مثلا:
I love msoms anime very much
فسيتم عمل التالي:
أولا: نقوم باستبدال الحرف الأول في كل كلمة موجودة في الجملة بحرف كابيتال فتصبح الجملة هكذا:
I Love Msoms Anime Very Much
ثانيا: يتم حذف المسافات الموجودة بين الكلمات لتصبح الجملة:
ILoveMsomsAnimeVeryMuch
ثالثا: يتم تجزيء الجملة كل ثمانية حروف تحت بعضها ليصبح لدينا التالي:
ILoveMso
msAnimeV
eryMuch
بحيث يجب أن تكون عدد الأعمدة لدينا 8 (هي نفسها عدد الأحرف في كل صف) ويجب أن يحتوي كل صف على ثماني أعمدة (حروف) وكما نرى فالصف الأخير لا يحتوي إلا على 7 أعمدة (حروف) فقط لذا يجب إكماله الى 8 بإضافة اخر حرف في الترتيب الأبجدي الإنجليزي وهو الحرف Z ليصبح الشكل هكذا:
ILoveMso
msAnimeV
eryMuchZ
وأي جملة أخرى غير المثال السابق لو افترضنا انه ينقصها عدد 3 حروف في اخر صف فيتم اضافة الاتي : Xyz ولو كان ينقصها 5 حروف يتم إضافة الاتي Vwxyz وهكذا بحيث يكون أول حرف من تلك الحروف دائما كابيتال (capital) والبقية small
رابعا: يتم ترتيب أعمدة الشكل السابق عشوائيا بالأرقام من 1 الى 8 ويرجى حفظ هذا الترتيب العشوائي جيدا فهو ما سيتم استخدامه في فك الشيفرة:
87341256
ILoveMso
msAnimeV
eryMuchZ
كما ترون تم وضع الترتيب فوق كل عمود بحيث يصبح ترتيب كل عمود على حسب الرقم الموجود فوقه فالعمود الخامس من اليسار أصبح حاليا هو العمود الاول والعمود السادس أصبع حاليا هو العمود الثاني وهكذا
خامسا: يتم كتابة الأعمدة بالترتيب الجديد بجانب بعضها لتشكل سطرا واحدا كالاتي:
العمود المكتوب فوقه 1 يكتب هكذا:
eiu
ثم يكتب جانبه العمود المكتوب فوقه رقم 2 فتصبح الجملة هكذا:
eiuMmc
وهكذا حتى يتم كتابة الجملة كاملة بنفس ترتيب الأرقام المكتوبة أعلى الاعمدة فتصبح الجملة كلها هكذا:
eiuMmcoAyvnMsehoVZLsrIme
بعدها يتم تقسيم هذه الجملة الجديدة مرة أخرى بنفس الطريقة المذكورة في الخطوة الرابعة فتصبح بهذا الشكل:
87341256
eiuMmcoA
yvnMseho
VZLsrIme
ويتم ترتيبها عشوائيا أيضا بنفس الترتيب العشوائي السابق تماما كما هو موضح بالأعلى
ثم يتم كتابتها بجانب بعضها مرة أخرى بنفس الترتيب العشوائي الموضوعة به لتصبح الجملة هكذا:
msrceIunLMMsohmAoeivZeyV
بعدها يتم تقسيم هذه الجملة الجديدة مرة ثالثة بنفس الطريقة لتصبح:
87341256
msrceIun
LMMsohmA
oeivZeyV
بعدها يتم رص الأحرف بجانب بعضها مرة أخرى بالترتيب العشوائي السابق نفسه لتصبح الجملة الجديدة:
eoZIherMicsvumynAVsMemLo
وهذه الجملة الجديدة ستكون هي الرسالة المشفرة ^^" << (شكلي بنقتل منكم اليوم )
إذن المطلوب منكم أيها السادة الفاضلون برنامج يقوم بأخذ الرسائل المشفرة مثل تلك الرسالة الأخيرة التي هي:
eoZIherMicsvumynAVsMemLo
ويقوم بتحويلها إلى أصلها كما في المثال بحيث يصبح
ILoveMsomsAnimeVeryMuchZ
وإخبارنا أيضا في ملف txt عن ترجمة الرسالة الأصلية المطلوب قراءتها والمذكورة في أول السؤال والتي هي:
oTenThArAeiAilaelKhSlirrtzoirHitprmoZPvs
بعد فك فحواها باستخدام البرنامج الذي ستقومون ببرمجته
فقط << هل رأيتم السهولة XDDD
* مطلوب إضافي للمفاضلة فقط وليس مهما:
كما ذكرت سابقا في أول الموضوع سيتم وضع درجة (الدرجة التفاضلية) لمن يقوم بعمل مميز يختلف عن البقية، لذا سأقوم هنا باعتماد نصف هذه الدرجة الواحدة (شوف الكرم ) لمن يقوم بعمل هذه الإضافة التالية في البرنامج:
أن يقوم البرنامج في النهاية بفصل الجملة التالية:
ILoveMsomsAnimeVeryMuchZ
الى أصلها بحيث تصبح هكذا:
I Love Msoms Anime Very Much Z
اعتمادا على الأحرف الكابيتال التي تفصل بين كل كلمة
والأمر ليس صعبا، فلا تحتاجون لاستخدام أمر switch او الى استخدام العديد من أمر if ...... else if
بل يمكنكم عملها بالإعتماد على الأسكي كود (ASCII CODE) الخاص بتلك الأحرف فقط ووقتها تستطيعون عملها بأمر if .... else وحيد فقط ^_^
وها أنذا قد وضعت لكم تلميحا P: فلتروني مهاراتكم ^_^
سيتم نسخ الملاحظات السابقة وإضافة ملاحظات جديدة استجدت في الامر بعد الملاحظات الأصلية:
12 - تم وضع درجتين إضافيتين على التزام الشروط المطلوبة عند ارسال الإجابة كما هي لأن البعض لم يلتزم بها واتعبني سواء في معرفة صاحب الكود من خلال عنوان رسالة الإيميل او بعدم كتابته لإسمه على الملف المضغوط أو اي شيئ شبيه آخر لذا وجب التنبيه
1 - يمنع ارسال الإجابات على الخاص، بل يتم ارسالها على الإيميل التالي:
msoms.programming.solutions@gmail.com
ويكون عنوان الإيميل المرسل هو اسم العضو واسم المرحلة هكذا (إسلام 2006 - المرحلة الثانية)
وأي إجابات ترسل على الخاص لن يلتفت لها
2 - عند وجود استفسار معين عن المسابقة أرجو سؤاله هاهنا وليس على الخاص أيضا
3 - تم وضع استفتاء عن المدة التي تريدونها كفترة للمرحلة الاولى وما إذا كانت أسبوعا أو أسبوعين وإن كنت أفضل شخصيا أن تكون لمدة أسبوع واحد لاعتقادي بأنكم ستحتاجون إلى أسبوعين في الأسئلة القادمة لذا الأفضل ان تكون أسبوعا واحدا حتى لا يؤثر ذلك على دراستكم فيما بعد اذا ما جدت اكثر او حتى لا تكون قريبة من اختباراتكم لمن يدرس ^_^
4 - سيتم اعتماد نتيجة الإستفتاء نهاية يوم الأربعاء القادم ووضع آخر موعد للتسليم بناء على نتيجته
5 - يتم إرسال الإجابات على الإيميل السابق في ملف مضغوط بصيغة rar واسم الملف المضغوط هو نفسه اسم العضو ويشمل الملف الملفات الاتية:
- ملف txt يكتب فيه الاتي:
أ - إسم العضو في أعلى الملف
ب - رقم المرحلة
ج - تم عمل البرنامج بواسطة (اسم اللغة وإصدارها) (visual basic .net 2003) مثلا
د - تحتاج لؤية الكود برنامج visual studio dotnet 2003 مثلا
هـ - تحتاج لتشغيل البرنامج حزمة dotnet framework 1.1
- الملفات التي تم كتابة الكود فيها
- ملفات البرنامج الذي قمت ببرمجته بصيغة قابلة للتنفيذ (exe مثلا)
6 - يمنع الغش بالطبع في كتابة الكود وتذكروا ان المسابقة للإرتقاء بمستواكم الى الأعلى وليس للمفاضلة بينكم لذا اجعل هدفك اسمى من ذلك ^_^
7 - يمنع استخدام اكواد جاهزة او مكتبات جاهزة لعمل الوظيفة المطلوبة في البرنامج، بل يجب عمل الكود من برمجتك الخاصة ^_^
8 - في حالة لم تكمل كتابة الكود او لم يعمل معك البرنامج الذي برمجته قم بإرسال ما تم انجازه مع ذلك ولا تمتنع عن الإرسال وسوف يتم وضع درجة لك على ما تم انجازه
9 - في حالة نوى احد الإنسحاب او انه يفكر في هذا الأمر فالأفضل ان يقول ذلك الان لأن هناك من تم منعهم من المسابقة بسبب اكتمال العدد، فإن كنت لا تنوي الإكمال فنرجو ترك الفرصة لغيرك ممن كانوا يتمنون الإشتراك ولم يستطيعوا لذلك
10 - اجعل برنامجك متقنا جدا وخالٍِ من الأخطاء قدر الإمكان وضع في حسبانك أنه يمكن أن يتم اختبار برنامجك بأي معطيات ممكنة (واللبيب بالإشراة يفهم ) فاجعل برنامجك كأنما ستقوم ببيعه لتقوم بالإرتقاء ببرامجك إلى اقصى درجة ممكنة في المستقبل بحيث تضاهي بها البرامج الكبرى
11 - يمنع على غير المشاركين الذي قاموا بتسجيل أسماءهم في موضوع التسجيل السابق الموجود هنا والذين تم قبولهم فقط وكتابة أسماءهم المشاركة هنا إلا بشرط واحد وهو أن يقوم أحد المتسابقين بالإنسحاب من المسابقة سواء بعدم إرسال الأجوبة أو بإخبارنا بالإنسحاب شفهيا ليتم استبداله بأحد الأعضاء غير المشاركين
وسيتم قبول البديلون بترتيب من قام بعمل البرنامج وأرسل الإجابة أولا إلى الإيميل أعلاه
وقد حصل الجميع على الدرجتين كالمة غير منقوصة في المرحلة الاولى حيث لم يتم التنبيه على الامر لكن سيتم المحاسبة الان، أرجو منكم مراعاة أن عدد المتسابقين كبير والبحث في هذه الأمور متعب جدا لذا رفقا باللجنة المصححة
13 - أرجو قراءة هذه الأسطر من المقدمة لمن لم يقرأها
قررت أن اقوم بوضع درجة زائدة (إسمها درجة تفاضلية) ليست من أصل المجموع لكن ستضاف للدرجة النهائية أيضا بحيث لو قلنا ان مجموع الثلاث مراحل سيكون 30 درجة فمع الدرجتين الإضافيتين تلك (واحدة للمرحلة الثانية وواحدة للمرحلة الثالثة) ستكون الدرجة النهائية 32 من 30
اذن فسوف تضاف لمجموع النهائي بعكس درجة الواجهة التي تضاف لتحسين المجموع فقط ^.^
14 - بالنسبة لواجهة البرنامج والدرجتين المعتمدتين عليها: أنا لم أقصد أن يقوم البعض بعمل واجهات خرافية حيث ظن البعض أني طلبت ذلك، لا أبدا، يمكنكم عمل اشياء بسيطة دون جهد يذكر لتحسين الواجهة
الأخ wahdain مثلا استخدم مكتبة لتحسين شكل البرنامج وقام بوضع أيقونة للبرنامج وأخرى للأزرار وأعطيته درجة الواجهة كاملة
الأخ m_a_s_gp لم يقم بعمل شيئ في واجهة البرنامج غير انه قام بعمل رسالة خطأ خاصة بكل خطأ يظهر بدلا من عمل رسالة واحدة عامة لجميع الأخطاء وأعطيته درجة الواجهة كاملة
بعض الأشخاص كالأخت ض.س والأخ Maaaaaaaan قاموا بوضع قوائم لواجهة البرنامج ولو مجرد قائمة عن البرنامج او about تعطي مظهرا جميلا للبرنامج
الاخ ridamax قام بوضع صورة كخلفية ذات لون جميل متدرجة الألوان لواجهة البرنامج وأيضا وضع اخرى للأزرار
الأخ BLACK STAR قام ببرمجة برنامجه ليعمل في الشاشة السوداء (الشاشة الشبيهة بالدوس) لكنه قام بعمل بعض البراويز وتعديد الخيارات في البرنامج بشكل يشعرني معه أنه قد بذل جهدا ولو بسيطا في تحسين شكل البرنامج وقد أخذ درجة الواجهة كاملة
أشياء بسيطة قد تعني الكثير وتعطيك درجة الواجهة كاملة، فكل هدفي هو أن اشعر باهتمام المتسابق بشكل الواجهة
لكن الأمر ليس مهما على كل حال فكما قلت سابقا الهدف من ذلك تحسين المجموع، فإن كنت متأكد بأنك ستأخذ الدرجة كاملة فلا يهم عندئذ هذا الأمر
هذا مالدي الان وأرجو منكم التصويت في الإستطلاع ^.^
بناء على الإستطلاع سيكون آخر موعد للتسليم هو يوم الأحد الموافق 22/11/2009 م والموافق 5/12/1430 هـ إن شاء الله تعالى
ويرجى من الجميع إخبارنا هنا في هذا الموضوع عن الموعد المناسب في رأيهم لوضع المرحلة الثالثة إن شاء الله تعالى بعد التاريخ المذكور لتسليم آخر موعد للمرحلة الثانية
اعتذر كثيرا عن الموضوع الطويل وأتمنى لكم وقتا ممتعا في برمجة المطلوب في هذه المرحلة على أمل أن ألقاكم إن شاء الله تعالى في المرحلة الثالثة إن أحيانا الله تعالى والله أسأل أن يجعل هذا العمل خالصا له وحده سبحانه إنه ولي ذلك والقادر عليه
ألقاكم على خير إن شاء الله تعالى
في أمان الله تعالى
المفضلات