النتائج 1 إلى 5 من 5

الموضوع: اصحاب الخبرة في المصفوفات والتعابير القياسية ارجو المساعدة في حل الخوارزمية

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    36

    اصحاب الخبرة في المصفوفات والتعابير القياسية ارجو المساعدة في حل الخوارزمية



    السلام عليكم ورحمة الله وبركاته
    اخواني الكرام ارجو من كل من لديه خبرة في التعامل مع المصفوفات والتعابير القياسية (regex) بلغة php ان يشارك معنا في حل هذا التمرين وان لا يبخل علينا ولو باقتراح او فكرة تساعد في حل التمرين الذي هو عبارة عن خوارزمية التوحيد (Unification Algorithm) المشهورة في لغة prolog
    تعتمد الخوارزمية في حلها على اربع قواعد
    1- تبديل X=t الى t=X اذا كان X متغير و t ثابت
    2- اذا كان X=X تحذف المعادلة
    3- مساوات كل قيمة من الدالة بما يقابلها في الطرف الاخر ’(x1 ’,x2 ’, …xn ’) = f(x1 ’ ’, x2 ’ ’, xn ’ ’) تصبح x1 =x1
    x2 =x2
    …………
    xn = xn
    4-تبديل المتغير بالدالة التي يساويها

    مثال


    قوس يسبقه حرف كبير تعتبر دالة
    الاحرف الكبيرة تمثل المتغيرات
    الاحرف الصغيرة تمثل الثوابت
    وهذا نموذج الادخال والتحقق من الثوابت والدوال والمنغيرات
    كود PHP:
    <form method="POST" action="index.php">
               <table border="1" width="40%" align="center">
                    <tr>
                        <td><b>&nbsp;<span lang="ar-eg">fun 01</span></b></td>
                        <td>
                        <p align="center">
        <input name="function01" type ="text" size="60" ></td>
                    </tr>
                    <tr>
                    <tr>
                        <td><b>&nbsp;<span lang="ar-eg">fun 02</span></b></td>
                        <td>
                        <p align="center">
        <input name="function02" type ="text" size="60" ></td>
                    </tr>
                  
                </table>
                <p align="center">
            <input type="submit" value="submit" name="submit" ><input type="reset" value="clear" name="B1" ></p>
            </form>
        
    <?
    $function01 
    $_POST['function01'] ;
    $fun1 preg_match("/^([A-Z])+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\)|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\))+\)$/",$function01);
    $var1 preg_match("/^[A-Z]+([0-9]+)?$/",$function01);
    $cst1 preg_match("/^([a-z]+([0-9]+)?|(\+|\-|\*|\/)[a-z]+([0-9]+)?|[0-9]+|(\+|\-|\*|\/)[0-9]+)+$/",$function01);
    if(
    preg_match("/([A-Z])+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\)|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\))+\)$/",$function01))
        {
       
        
    $a1 explode (","$function01);
    print_r($a1); 
        }
        else
        {
        echo 
    "no";
        } 
    $function02 $_POST['function02'] ;
    $fun2 preg_match("/^([A-Z])+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\)|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\))+\)$/",$function02);
    $var2 preg_match("/^[A-Z]+([0-9]+)?$/",$function02);
    $cst2 preg_match("/^([a-z]+([0-9]+)?|(\+|\-|\*|\/)[a-z]+([0-9]+)?|[0-9]+|(\+|\-|\*|\/)[0-9]+)+$/",$function02);
    if(
    preg_match("/([A-Z])+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\)|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+|,[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\)|[A-Z]+([0-9]?)+\(([A-Z]+([0-9]?)+|,[A-Z]+([0-9]?)+|[a-z|0-9]+|,[a-z|0-9]+)+\))+\))+\)$/",$function02))
        {
        
    $a2 explode (","$function02);
    print_r($a2); 
        }
        else
        {
        echo 
    "no";
        }






    التعديل الأخير تم بواسطة عبد الرزاق ; 24-12-2011 الساعة 05:00 PM


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    36


    لنبسط المسألة
    لدي مصفوفة كالاتي وارغب في تقسيمها
    كود PHP:
    <?php
    $A1  
    "F(X,G(e,L),a)";
    $A1 explode(","$A1);
    print_r($A1);
    ?>
    تظهر النتيجة كالتالي
    Array
    (
        [0] => F(X
        [1] => G(e
        [2] => L)
        [3] => a) 
    )
    وانا ارغب ان تكون النتيجة كالاتي
    Array
    (
        [0] => X
        [1] => G(e,L)
        [2] => a 
    )
    فهل من دلة غير explode تفي بالغرض






  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    309


    regular expressions تفي بالغرض
    -------------------------

    http://www.php.net/manual/en/function.preg-split.php
    --------------------------
    او يمكن استعمال preg_match بدون تقسيم فقط للبحث داخل السترينق واستخدام المصفوفه الناتجه

    سلام





    __________________
    Bruce - مدونة شديدة التخصص في PHP وتطبيقات الويب

  4. #4
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    63


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

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


    كود PHP:
    $A1  "F(X,G(e,L),a)";
    $pattern '@[A-Z]\(@';
    preg_match($pattern,$A1,$r);
    $pattern '@\([A-Z],@';
    preg_match($pattern,$A1,$r1);
    $pattern '@[A-Z]\([a-z],[A-Z]\)@';
    preg_match($pattern,$A1,$r2);
    $pattern '@\),[a-z]\)@';
    preg_match($pattern,$A1,$r3);
    $r str_replace('(','',$r);
    $r1 str_replace(',','',$r1);
    $r1 str_replace('(','',$r1);
    $r3 str_replace(')','',$r3);
    $r3 str_replace(',','',$r3);
    $r array_merge($r,$r1,$r2,$r3);
    print_r($r); 







  5. #5
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    هل الفورمات متكرر ومتداخل ؟ ام ثابت ؟

    لو ثابت يكون الموضوع سهل جدا

    لو متكرر يكون الموضوع محتاج شوية تفكير .. بمعنى انه لو من الممكن ان يكون بهذا الشكل
    F(X,G(e,L),a)

    او

    F(X,G(e,L, Y(i,o) , O(r,p)),a)

    حينها اتوقع الحل يكمن في 3 اشياء :
    1- Loop
    2- Regular Expression
    3- String functions usage, and mainly would be www.php.net/substr and www.php.net/strpos

    هذه محاولة سريعة مني ( فاشلة ! ) الموضوع محتاج تفكير اطول .. وهذا المثال كنت مفترض ان الفورمات لن يكون بهذا الشكل دائما بل من الممكن ان تكون هناك عدة اقواس :
    كود PHP:
    $A1  "F(X,G(e,L),a)";

    echo 
    substr($A1strpos($A1'(')-1  strpos($A1')')+);exit;

    $x=0;
    while(
    true){
        
    preg_match("/[A-Za-z]\([A-Za-z,\(\)]+\)/"$A1$r[$x]);
        if (!empty(
    $r[$x][0][0]))
        
    $found[$x] = $r[$x][0][0];
        else
        break;
        
    $x++;
    }
    print_r($found); 






    __________________
    SWF Thumbnail - tweet me





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض