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

لغز الأرقام المتقاطعة

بدأه kenham في 4 يناير 2014 · 8 رد · 9,066 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

 

هذا اللغز عبارة عن لعبة أرقام متقاطعة يعني مثل لعبة الكلمات المتقاطعة لكن أرقام بدل كلمات

 

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

 

 

أترككم مع اللعبة في الصورة المرفقة

post-280298-0-86060200-1388848950_thumb.

1
#2

لست أدري لما لم أتلقي ردود بخصوص هذا اللغز أهو صعب لهذه الدرجة

 

أم ممل و متعب

 

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

 

أرجو منكم  مشاهدته بهذا الرابط  لغز الأرقام المتقاطعة

 

و ذلك لمنحكم المزيد من الأفكار حول كيفية الحل

 

أنتظر مشاركاتكم و تعليقاتكم و من لم يفهم اللغز بعد فليتصل بي علي الخاص و سأفهمه إن شاء الله.

#3

فكرة الحل :

 

إذا اعتبرنا كل مربع فارغ هو مجهول فيكون لدينا 5*5-3 = 22 مجهول

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

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

فيكون لدينا 10 معادلات كل معادلة ب 5 مجاهيل على الأكثر أو 4 مجاهيل على الأقل

يجب اختصارها مستفيدين من المعطيات أعلاه

ومن ثم نحاول إيجاد الاحتمالات المتبقية

أما أننا نجرب الاحتمالات بتقنية تقليب الأرقام فإنه لدينا احتمالات كثيرة جدا قد تصل إلى البلايين

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

لذا يفضل ايجاد قوانين يتم اخضاعها لعدادات قليلة ومحددة

 

بقي التنفيذ :ph34r:

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#4

أخي الكريم

وأنا أقوم بمحاولة إيجاد الحل يدويا لأتحقق من وجود حل واحد على الأقل صحيح حتى لا أقوم بإيجاد خوارزمية لمسألة مستحيلة الحل

ظهر لي التباس

 

ففي العمودي

مربع تام مجموع أرقامه 3024

وهذا مستحيل

لأن العدد خمس خانات وأقصى رقم يستوعبه هو 99999 ومجموعها 9*5=45 فكيف سيكون المجموع 3024 ؟!! هل من توضيح لأني توقفت عند هذا الشرط

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 16 يناير 2014 في 09:03

1

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#5

استفسار آخر للتوضيح

عموديا كيف يبدأ الرقم

بمعنى الآحاد في الأسفل والعشرات في الأعلى

أم المربع الأعلى يعتبر الآحاد؟

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#6
اقتباس

 

مربع تام مجموع أرقامه 3024

وهذا مستحيل

لأن العدد خمس خانات وأقصى رقم يستوعبه هو 99999 ومجموعها 9*5=45 فكيف سيكون المجموع 3024 ؟!! هل من توضيح لأني توقفت عند هذا الشرط

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

 

اقتباس

 

وأنا أقوم بمحاولة إيجاد الحل يدويا لأتحقق من وجود حل واحد على الأقل صحيح حتى لا أقوم بإيجاد خوارزمية لمسألة مستحيلة الحل

ظهر لي التباس

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

 

صحيح لدينا 22 مجهول لكن عدد المعادلات هو: 15  (لكل سؤال معادلة)  مثلا أفقي 3 مكون من سؤالين سؤال لما قبل المربع الأسود و سؤال لما بعده

اقتباس

 

أما أننا نجرب الاحتمالات بتقنية تقليب الأرقام فإنه لدينا احتمالات كثيرة جدا قد تصل إلى البلايين

 

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

 

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

اقتباس

 

بمعنى الآحاد في الأسفل والعشرات في الأعلى

الآحاد في الأسفل و العشرات في الأعلي

post-280298-0-23929900-1389872706_thumb.

#7

شكرا لك أخي الكريم

 

لي عليك عتبين والعتب لا يكون إلا بين الإخوة :)

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

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

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

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

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

 

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

 

وأخيرا كيف عرفت أني مشرف ؟!!

فأنا لست كذلك :huh:

 

كما أني توصلت لأحد الحلول يدويا

أما عن كتابة برنامج فلا أظن أني سأفعل لأن الوقت لا يسمح

وبهذه المناسبة أريد أن أطرح تساؤل :

 

لماذا الاشتراط بعدم استخدام الدوال الجاهزة طالما أنها موجودة للانتفاع بها

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

 

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

 

إن كان الهدف تنشيط الدماغ إذا فالأولى إيجاد حل اللغز بالقلم والورقة وليس برنامج

^_^

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 16 يناير 2014 في 15:28

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#8

لقد كتبت اللغز هنا قبل أن أتشف الخطأ في قسم البايثون و بما أنني لم أتلقي ردود هنا طلبت من أحد المشرفين التعديل علي المشاركة و لكنه لم يفعل.

 

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

 

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

 

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

 

إعتماد المبرمجين الدائم علي الدوال يجعلهم غير قادريم علي الإستغناء عنها.

 

لكن علي المبرمج أن يكون قادر علي صنع تلك الدوال ثم يستعملها جاهزة لإختصار الوقت.

اقتباس

 

إن كان الهدف تنشيط الدماغ إذا فالأولى إيجاد حل اللغز بالقلم والورقة وليس برنامج

صحيح لكن اللغز صعب و يأخذ وقت لذا من الأفضل استعمال برنامج للتأكد من الحلول و لإختصار الوقت.

كما أنني أهدف لعمل مشروع برنامج  لتوليد ألعاب أرقام متقاطعة. و هذا اللغز هو بداية الطريق.

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

#9

حل اللغز بلغة البايثون:

def VZ2T25():
    a=0
    z=a**2
    while z<100000:
        a+=1
        z=a**2
        if  z<100000:
            Z2.append(z)
    c=len(Z2)
    n=0
    while c>0:
        x='%d'%(Z2[n])
        r=len(x)
        v=0
        while r>0:
           d=x[r-1]
           r-=1
           v+=dic[d]
        if v==25:
            d=x[len(x)-1]
            if len(x)-1<0:
                d='0'
            if d not in E1:
               E1.append(d)
            d=x[len(x)-2]
            if len(x)-2<0:
                d='0'
            if d not in D1:
              D1.append(d)
            d=x[len(x)-3]
            if len(x)-3<0:
                d='0'
            if d not in C1:
              C1.append(d)
            d=x[len(x)-4]
            if len(x)-4<0:
                d='0'
            if d not in B1:
             B1.append(d)
            d=x[len(x)-5]
            if len(x)-5<0:
                d='0'
            if d not in A1:
               A1.append(d)
            T25.append(x)
            r-=1
        c-=1
        n+=1
def VD11():
    a=11
    z=1
    x=0
    while x<100000:
        x=a*z
        r='%d'%(x)
        v=len(r)
        if  x<100000:
            d=r[v-1]
            if v-1<0:
                d='0'
            if d not in E2:
               E2.append(d)
            d=r[v-2]
            if v-2<0:
                d='0'
            if d not in D2:
              D2.append(d)
            d=r[v-3]
            if v-3<0:
                d='0'
            if d not in C2:
              C2.append(d)
            d=r[v-4]
            if v-4<0:
                d='0'
            if d not in B2:
             B2.append(d)
            d=r[v-4]
            if v-5<0:
                d='0'
            if d not in A2:
               A2.append(d)
            v-=1
            D11.append(z)

        z+=1
def VD87():
    a=87
    x=0
    z=1
    while x<1000:
      x=a*z
      if  x<1000:
          r='%d'%(x)
          v=len(r)
          if v<1:
                d='0'
          else:
              d=r[len(r)-1]
          C3.append(d)
          if v<2:
                d='0'
          else:
              d=r[len(r)-2]
          B3.append(d)
          if v<3:
              d='0'
          else:
              d=r[len(r)-3]
          A3.append(d)
          D87.append(x)
      z+=1
    c=len(D87)
def VD887():
    a=88%7
    D887.append
    E3.append(a)
    A5.append(a)
def VNINI():
    a=0
    while a<100:
        a+=1
        if a%2==0 and a!=2:
            continue
        elif a%3==0 and a!=3:
            continue
        elif a%5==0 and a!=5:
            continue
        elif a%7==0 and a!=7:
            continue
        elif a%11==0 and a!=11:
            continue
        else:
            r='%d'%(a)
            v=len(r)
            if v<4:
                d='0'
            else:
              d=r[len(r)-4]
            A4.append(d)
            D4.append(d)
            if v<5:
                d='0'
            else:
              d=r[len(r)-5]
              B4.append(d)
              E4.append(d)
            NINI .append(a)
def VD30():
    a=30
    x=1
    z=0
    while z<999:
      z=a*x
      x+=1
      if  z<1000:
          r='%d'%(x)
          v=len(r)
          if v<3:
                d='0'
          else:
              d=r[len(r)-3]
          C5.append(d)
          if v<4:
                d='0'
          else:
              d=r[len(r)-4]
          D5.append(d)
          if v<5:
              d='0'
          else:
              d=r[len(r)-5]
          E5.append(d)
          D30.append(z)
    print len(D30),D30
def HZ2T3024():
    c=len(Z2)
    n=0
    while c>0:
     x='%d'%(Z2[n])
     r=len(x)
     v=1
     while r>0:
         d=x[r-1]
         v=dic[d]*v
         if v==3024:
                 M3024.append(x)
         r-=1
     c-=1
     n+=1
    print '"""',A1,A12,A22,A32,A42,A52,M3024
def HD7T19():
    a=7
    x=0
    z=0
    n=0
    while z<10000:
        z=a*x
        x+=1
        D7.append(z)
    c=len(D7)
    while c>0:
       x='%d'%(D7[n])
       r=len(x)
       v=0
       while r>0:
           d=x[r-1]
           r-=1
           v+=dic[d]
       if v==19:
           D7T19.append(x)
       c-=1
       n+=1
def HD187():
    a=187
    x=0
    z=0
    while z<1000:
        z=a*x
        x+=1
        D187.append(z)
def HD7625():
    a=762%5
    D7625.append
def HZ3():
    a=0
    z=a**3
    while z<100:
        a+=1
        z=a**3
        Z3.append(z)
def HD10():
    a=10
    x=0
    z=0
    D10=[]
    while z<100000:
        z=a*x
        x+=1
        D10.append(z)
def _Main_():
    dic={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
    Z2=[]
    T25=[]
    D11=[]
    D87=[]
    D887=[]
    D30=[]
    NINI=[]
    M3024=[]
    D7=[]
    D7T19=[]
    D187=[]
    D7625=[]
    Z3=[]
    A1=[]
    A2=[]
    A3=[]
    A4=[]
    A5=[]
    B1=[]
    B2=[]
    B3=[]
    B4=[]
    B5=[]
    C1=[]
    C2=[]
    C3=[]
    C4=[]
    C5=[]
    D1=[]
    D2=[]
    D3=[]
    D4=[]
    D5=[]
    E1=[]
    E2=[]
    E3=[]
    E4=[]
    E5=[]
    A12=[]
    A22=[]
    A32=[]
    A42=[]
    A52=[]
    B12=[]
    B22=[]
    B32=[]
    B42=[]
    B52=[]
    C12=[]
    C22=[]
    C32=[]
    C42=[]
    C52=[]
    D12=[]
    D22=[]
    D32=[]
    D42=[]
    D52=[]
    E12=[]
    E22=[]
    E32=[]
    E42=[]
    E52=[]
    global Z2,T25,D11,D87,D887,D30,NINI,M3024,D7,D7T19,D187,D7625,Z3
    global A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,C1,C2,C3,C4,C5,D1,D2,D3,D4,D5,E1,E2,E3,E4,E5
    global A12,A22,A32,A42,A52,B12,B22,B32,B42,B52,C12,C22,C32,C42,C52,D12,D22,D32,D42,D52,E12,E22,E32,E42,E52
    global dic
    VZ2T25()
    VD11()
    VD87()
    VNINI()
    VD30()
    HZ2T3024()
    HD7T19()
    HD187()
    HD7625()
    HZ3()
    HD10()
def graph():
    print'______________________________________________________________'
    print'|', A1 ,'|', B1 ,'|', C1 ,'|', D1 ,'|', E1 ,'|'
    print'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______','|','______'
    print'|', A2 ,'|', B2 ,'|', C2 ,'|', D2 ,'|', E2 ,'|'
    print'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______'
    print'|', A3 ,'|', B3 ,'|', C3 ,'|' ,'*','|', E3 ,'|'
    print'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______'
    print'|', A4 ,'|', B4 ,'|','*', '|', D4 ,'|', E4 ,'|'
    print'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______'+'|'+'______'
    print'|', A5 ,'|','*','|', C5 , '|', D5 ,'|', E5 ,'|'
    print'______________________________________________________________'
_Main_()

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