سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو نشيط
#1  
اصحاب الخبرة في المصفوفات والتعابير القياسية ارجو المساعدة في حل الخوارزمية

السلام عليكم ورحمة الله وبركاته
اخواني الكرام ارجو من كل من لديه خبرة في التعامل مع المصفوفات والتعابير القياسية (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 الساعة 02:00 PM.
عبد الرزاق is offline   قديم 24-12-2011, 01:14 PM
الرد مع إقتباس
عضو نشيط
#2  

لنبسط المسألة
لدي مصفوفة كالاتي وارغب في تقسيمها
كود 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 تفي بالغرض






عبد الرزاق is offline   قديم 25-12-2011, 09:24 AM
الرد مع إقتباس
عضو نشيط جدا
#3  

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

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

سلام






__________________
Bruce - مدونة شديدة التخصص في PHP وتطبيقات الويب
Bruce is offline   قديم 27-12-2011, 12:30 AM
الرد مع إقتباس
عضو نشيط
#4  

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

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


كود 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); 






محمد عقيلي is offline   قديم 15-01-2012, 06:45 PM
الرد مع إقتباس
عضو فعال
#5  

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

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

لو متكرر يكون الموضوع محتاج شوية تفكير .. بمعنى انه لو من الممكن ان يكون بهذا الشكل
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); 






__________________
Ahmed Ehab
أستاذ سوفت !
facebook me - tweet me
Egyptechno is offline   قديم 19-01-2012, 01:31 AM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

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

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
طلب فك تشفير هالملف من اهل الخبرة ارجو المساعدة Damas الويب والويب 2.0 والـ Semantic Web 0 25-08-2011 05:57 AM
ارجو الحل من اصحاب الخبرة بالترميز الصحيح arabpath تقنية محركات البحث Search Engine Optimization 7 01-12-2010 09:54 PM
ارجو المساعدة فى حل اخطاء صفحة html لملائمة المواصفات القياسية enmfg1 البرمجية القياسية Ajax +XML+ CSS+ JavaScript وغيرها 2 03-11-2008 02:15 AM
يا اصحاب الخبرة ارجو الدخول للضروره هادي جدا سوالف الاستضافة 2 21-07-2005 12:14 AM
الى الاخوة اصحاب الخبرة في سكربت vCards مشكلة بعد الترقية يرجا المساعدة elkaser الويب والويب 2.0 والـ Semantic Web 2 16-05-2005 10:20 AM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 10:24 PM.