الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحدي:لغز برمجي بالبايثون

بدأه kenham في 3 يناير 2014 · 42 رد · 3,764 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مثل الكلمات المتقاطعة لكن أرقام بدل كلمات

 

المطلوب صنع برنامج لحل هاته اللعبة من دون استعمال أي من المكتبات يعني كتابة برنامج لا يستدعي أي من المكتباب(لا يحتوي علي كلمة import)

و لا حتي إستعمال دوال اللغة الجاهزة عليك كتابة كل شيء من عندك

 

 

الملف المرفق عبارة عن صورة بها لعبة الأرقام المتقاطعة

1
#2

عفوا نسيت أن أرفق الملف

 

الملف هنا

post-280298-0-63256000-1388767148_thumb.

#3

ماذا هناك يا جماعة لماذا لا يتفاعل أي أحد معي

 

اللغز ليس صعبا لهذه الدرجة 

 

أبدو بتعليقاتكم علي الأقل

#4

السلام عليكم و رحمة الله و براكاته

 

 

اخي

 

ليس هناك رابط لتحميل الملف

#5

لقد ضغطت الصورة و رفعتها الملف المرفر(winrar)   يحوي الصورة  بالتوفيق لك في الحل.

 

و أرجو منك  أن تحاول جاهدا حل هذا اللغز

 

تحياتي لك

الأرقام المتقاطعة.rar

#6

شكرا لك اخي

 

لكني مازلت مبتدئا

#7

ليست أدري لماذا لا أجد تقاعلا معي المغزى من مشاركتكم بهذا اللغز هو أنني كنت أفكر بعمل برنامج يقوم بإعطاء الحل  بحث يكتب مستعمل البرنامج أبعاد المربع(في مثالنا هذا 5 غلي 5)

و يكتب العلاقات(يعني ما هو مكتوب تحت المربع (أفقي و عمودي))

 

و البرنامج يقوم بالحل,

 

المهم أنا سأعطيكم فكرة عن حل هذا اللغز و من هو مهتم بمشروعي فليتصل بي,

 

فكرة الحل هي أن نضع جميع الإحتمالات في مصفوفات مثلا الأعداد الأولية التي تتكون من رقمين هي(2 3 5 7 11 13 17 19 ,,,,,,,,,97) نضه هذه الحلول في مصفوفة و نكمل مع البقية

 

و كما هو ملاحظ هذه الحلول تتقاطع مع بعضها فالرقم الأول من A  هو نفسه الرقم الأول من  1 و الرقم الثاني من A هو نقسه الرقم الأول من 2  و بذلك نقوم بمقارنة النتائج المحقوضة في المصفوفات

 

و نحذف جميع الأعداد من المصفوفة A التي رقمها الأول  غير موجود في أول رقم من الأعداد المحتوات في المصفوفة 1  

 

أرجو أن تكون الفكرة ثد توضحت و إن لم تكن كذلك سأرفق شرح بالصور لتتضح الفكرة

 

في انتضار تقاعلكم

تم تعديل هذه المشاركة بواسطة kenham في 9 يناير 2014 في 20:38

#8

مشروعك يا عزيزي غير مفهوم أشرح بأمثلة,وسأساعدك في برمجته


وقل لماذا ذكرت الاعداد الاولية؟


Untitled-18.jpg

#9

أنا لا أريد مساعدة في برمجة الحل فقد قمت بحله قبل أن أكتبه هنا,

 

حاول أنت حله بطربقنك الخاصة ة إن لم تفلح فشأشرح لك و للأعضاء طريقتي بالأمثلة غدا بإذن الله

 

لكن سأشرح بطريفة مبسطة و الباقي عليكم

 

 

ذكرت الأعداد الأولية لأنها مذكورة في اللغز أنظر للصورة المرفقة فوق,

 

إنتضروني غدا

 

سلام

#10

يا أخي إفهمني

لغزك غير مفهوم ماذا تريد ان تفعل بالضبط

Untitled-18.jpg

#11

هل قمت بحل لعبة الكلمات المتقاطعة من قبل؟؟؟؟

 

نفس اللعبة لكن هنا حل الأسئلة العمودية و الأفقية عبارة عن أرقام بدل كلمات.

 

المطلوب هو صنع برنامج أو خوارزمية تقوم بإعطاء حل.

 

أرجو أنك فهمت الآن و إن لم تفهمني اتصل بي علي الخاص و سنتافهم ان شاء الله 

تم تعديل هذه المشاركة بواسطة kenham في 11 يناير 2014 في 01:20

#12

بالنسبة ل A كيف يعني مربع تام مجموع ارقامه 3024؟؟؟

تم تعديل هذه المشاركة بواسطة eng.ahmadshalabi في 11 يناير 2014 في 05:10

#13

المربع التام هو عدد جذره التربيعي عدد طبيعي   مثلا 9 مربع تام لأن جذره 3

و أما بالنسبة لعدد الأرقام مثلا 32146 عدد أرقامه هو 3+2+1+4+6=16

 

أرجو أن تكون الفكرة قد وصلتك

#14

اعلم ان المربع التام ما هو

 

ولكن عدد مكون من خمس خانات من المستحيل ان تجمع ارقامه ويطلع معك 3024
فلنرض ان اقصى عدد مكون من خمس خانات هو 99999 اذن مجموع ارقامه 45
فكيف مشترط ان تكون مجموع ارقامه 3024

تم تعديل هذه المشاركة بواسطة eng.ahmadshalabi في 11 يناير 2014 في 06:25

#15

آسف يبدو أني أخطأت و كتبت مجموع بدل كتابة جداء   فعلا لا يمكن لعدد مكون من 5 أرقام أن يكون مجموع أرقامة 3024   و الأصح هو جداء و ليس مجموع

 

و تم تصحيح d   أيضا   مكعب تام و ليس مربع تام

 

آسف جدا علي تقصيري أرجو أن يغير أحد المشرفين مشاركتي الأولي و ذلك بغيير تلك الصورة بهذه الصورة و أيضا تغيير ملف الوينرار الذي يحتوي علي الصورة

 

و ذلك لتحميل الصورة

post-280298-0-94861600-1389441957_thumb.

تم تعديل هذه المشاركة بواسطة kenham في 11 يناير 2014 في 15:07

#16

حسب ما فهمت السكربت سيقوم بما يلي:

يأخذ الحلول ويضعها على جنب وبعدها السكربت يتفاعل مع المستخدم ويأخذ المدخلات(الحلول)وبعدها يقوم بالمقارنة ويرى إذا كانت الحلول تحتمل الصواب او الخطأ وفي أخير يطبع النتيجة إذا كانت صحيحة او خاطئة

XcwL3.jpg

 

هل هذا ما تقصده؟

تم تعديل هذه المشاركة بواسطة عامر الشابي في 11 يناير 2014 في 16:11

Untitled-18.jpg

#17

لا  أقصد أن يقوم المستخدم بوضع الحل ثم ينظر البرنامج إن كان الحل صحيحا

 

 

و إنما أقول بأن البرنامج هو من يجد الحل

 

هذا البرنامج لا يتفاعل مع المستخدم كل ما يفعله هو إيجاد الحلول فقط

#18

إذا أنت تقصد برمجة دوال اولها دوال تختبر أولية العدد والدوال تختبر الجذر التربيعي ودوال تقوم بعمليات القسمة وما إلى غير ذلك؟

كما هو موجود في دوال الجاهزة المكتبات math في البايثون

حسب ما فهمت المغزة من برنامجك أن تقوم بي برمجة دوال خاصة وليست دوال جاهزة

إن كان هذا ما تريد فهذا شيء إجابي وجميل وسلبي في الوقت نفسه

دعني ابدأ لماذا إجابي:

إيجابي لأنك ستقوم بتطبيق خواررميات رياضية برمجيا وبالتالي ستعتاد تطبيق الخوارزميات برمجيات وفي نفس الوقت تكتسب خبرة

ولماذا سلبي:

لأنه ستضيع وقت في برمج برنامج وتوجد مكتبات جاهزة لذلك

لكن لا بأس بذلك فهذ امر جيد وإيجابي منك

قل ماهي أول دوال التي تريد أن تبدا في برمجتها؟

Untitled-18.jpg

#19

كما هو مكتوب في اللغز نبدأ بالدوال الأفقية ثم العمودية

 

أي نبدأ من 1 2 3 4 5 ثم ننتقل للعمودي

 

 

و طبعا هناك طرائق أفضل و أسرع من هذه  لكن هذه هي الطريقة التي استعملتها في الحل علي العموم إن كانت عندك طريقة أفضل فلا بأس

 

المهم الآن نقوم بصنع دوال كما قلت و نبدأ بالأفقي ثم العمودي تحياتي لك

 

أي نبدأ ب مبربع تام مجموع أرقامه 25 ثم عدد مضاعف ل 11 و هكذا و صولا ل عدد يقبل القسمة علي 10

 

أن نصمم دوالنا بأنفسنا أفضل فالدوال الجاهزة تكون قياسية أما بهذه الطريقة فتكون مفصلة علي الحل.

تم تعديل هذه المشاركة بواسطة kenham في 11 يناير 2014 في 17:07

#20

إنسى أمر سطر العمودي والافقي وإنسى البرنامج الذي تكلمت عنه

انت وضعت لغز(مشكلة) لذلك عليك ان تمشي معنا خطوة بخطوة الى ننهي البرنامج وفي نهاية تضع برنامج ونرى الفكرة التي عملت بها فالبرنامج يكتب بعدة سورسات

اذكر العمليات التي سنستخدمها (إحتبار أولية عدد وماذا أيضا)

لكي نصمم كل عملية لها دالة على حدا 

Untitled-18.jpg

#21

حسنا أخي كما تريد  الدوال التي سنبرمجها هي كالتالي

 

دالة لتعيين مضاعفات (قواسم) عدد  حيث يدخل المستخدم العدد المراد حساب مضعفاته و يدخل عدد الحد الأعلي(أكبر رقم ممكن)

 

مثلا كما هو مكتوب   أفقي 3:  عدد مضاعف ل 87 و نلاحظ أن عدد الخانات هو 3 معناه أن الحد الأعلي هو 999

 

و الدالة تقوم بحساب جميع مضاعفات 87 و التي أصغر أو تساوي 999

 

و نحتاج أيضا لدالة المربعات التامة

و دالة المكعبات التامة

و داة الأعداد الأولية

 

أما بالنسبة لباقي القمسة  فهذا لا يحتاج لدالة(تتم بواسطة %)    و إن شأتم يمكننا صنع دالة له أيضا

 

و نفس الشيئ بالنسبة لدالة المضاعف حيث كل دالة لها مدخلان

المدخل الأول هو العدد و المدخل الثاني هو الحد الأكبر

 

و بعدها يتبقى علينا تصميم خوارزمية للمقارنة.
 

#22

في إنتضار مساهماتكم يا مبرمجي البايثون أرجو أن تشاركونا مع عامر الشابي لنقوم بحل هذا اللغز

#23

محاولتي غير كاملة بسبب الوقت

+

دالة الأعداد الأولية غير كاملة بها خطأ

game=[
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,1,0],
[0,0,1,0,0],
[0,1,0,0,0],
    ]


def carre(n,ncase):
    a=0
    while 1:
        a+=1
        s=a**2
        if len(str(s))==ncase:
            if int(str(s)[0])+int(str(s)[1])+int(str(s)[2])+int(str(s)[3])+int(str(s)[4])==n:
                return a**2
                break
def mul(a,ncase):
    while 1:
        if len(str(a))>=ncase:
            return a
        a=a*2

def rest(div,nbr):
    return div % nbr

def primary(ncase):
    i=0
    pri=True
    while 1:
        nbr=i//2
        for e in range(nbr):
            if i % (e+1) == 0 :
                pri=False
                break
        if len(str(i))== ncase and pri==True:
            return i
        i+=1
        pri=True
        print(i)
def divi(nbr,ncase):
    i=0
    while 1:
        if i%nbr==0 and len(str(i))==ncase:
            return i
        i+=1
#24

في برنامجك هذا الطثير من الأخطاء

 

 

أولا بالنسبة لجمع أرقام  أنت استعملت دوال لتحويل العدد لسلسلة حرفية ثم تحويل جميع عناصر السلسلة لأرقام و جمعهم  لكن قلت في اللغز من دون دوال جاهزة أو مكتبات

(في الواقع أول مرة قمت بحل هذا اللغز استعملت نفس طريقتك هذه لكني طورت البرنامج بعد ذلك (لقد قمت بعمل ثلاث نسخ من البرنامج و أهدف أن نصنع نسخة رابعة محسنة معا))

 

و بالرغم من ذلك توجد طريقة أفضل بكثير من ذلك و من دون استعمال أي من الدوال للجصول علي رقم معين من العدد و ذلك باستعمال  %   و //    أو بمعني آخر باقي القسمة و القسمة الصحيحة أدعك لتكاشف كيف تفعل ذلك بنفسك

( و إن رأيت بأن هذان الأمران يعتبران من الدوال الجاهزة يمكننا تصميم دالة بأنفسنا و هذا ليس بالشيئ العسير فقد صممت دالة لذلك من قبل)

 

و هناك شيئ آخر البرنامج الذي صنعته يعطينا أول الحلول فقط   فبعد أن يتحقق الشرط يتوقف عمل الدالة و هذا لا ينفع

يجب أخذ جميع الإحتمالات و وضعها في مصفوفة,

 

و أيضا  استعمال عدد الخانات لا ينفع  مثلا رقم 9 مكون من خانة واحدة لكن يمكن كتابته في خمس خانات يوضع أصفار أمام التسعة,

استعمل الحد الأكبر بدلا من ذلك مثلا لو أن ذاك العدد مكون من 4 أرقام تضع الشرط  9999=>S

و أن نقول عدد يقبل القسمة علي N   أو تقول عدد مضاعف ل N  نفس الشيئ لذا يكفي وضع دالة واحدة,

 

مبادرة جيدة منك و مشكور علي المشاركة لكن أرجو أن تبدأ الحل وفق الطريقة التي حددناها أنا و عامر الشابي و إن كانت لديك فكرة أفضل دلنا عليها

تم تعديل هذه المشاركة بواسطة kenham في 12 يناير 2014 في 00:29

#25

وهذه أول دالة لإختبار أولية عدد ما 

def TestPrimality(m):
    Newm = m - 1
    a = 2
    calcuD = a ** Newm
    Result = calcuD % m
    if Result == 1:
        return "Your number is Primary"
    else:
        return "your number is not Primary"

اتبعت في برمجة هذه الدالة على العلاقة a^m-1%m والتي تعطي الناتج واحد اذا كان العدد اولي غير ذلك فإن العدد مركب وليس اولي

1

Untitled-18.jpg

مواضيع مشابهة