صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 16

الموضوع: لغز برمجي معرفة عدد الحروف......

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

    لغز برمجي معرفة عدد الحروف......



    السلام عليكم ورحمة الله وبركاته
    كيف يمكننا معرفة عدد الحروف مثلا في كلمة mohamed
    7احرف
    بدون استخدام دوال string function واقصد بالضبط strlen وبدون حلقات مباشرة
    وعدم استخدام اي دالة اخري جاهزة لمثل هذا الغرض

    بالملخص المفيد نريد محكاة للدالة strlen مدة اللغز قبل ان اجيب علية 2 يوم
    انتظركم





    التعديل الأخير تم بواسطة Bruce ; 13-07-2008 الساعة 01:50 AM
    __________________
    Bruce - مدونة شديدة التخصص في PHP وتطبيقات الويب


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    108


    مفتاح حل :
    نستطيع تعامل مع كل حرف كأنه قيمه في مصفوفه ما , مثلا
    كود PHP:
    $str="swalif" 
    نجد
    echo $str[0]
    قيمه ناتجه s
    كود PHP:
    echo $str[1
    القيمه ناتج w
    وهكذا ..
    وبتالي يمكن حل لغز عن طريق كود تالي
    كود PHP:
       function strlen2($str)
       {
         
    $count=0;
         while(
    $str)
         {
            if(
    $str[$count] == "")
              return 
    $count;
              
              
    $count++;
         }
      }
        
           
    $str="Hello World";
      echo  
    strlen2($str); 
    yield 11...
    تحياتي ..





    التعديل الأخير تم بواسطة احمد شكر ; 12-07-2008 الساعة 11:13 PM

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    604




    كلام احمد صحيح

    يالله اعطيه الجائزة





    __________________

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


    النحات
    لاتستعجل....
    احمد شكر
    عذرا نسيت بدون استخدام حلقات while , do , for , foreach , do-while الخ...
    بالمناسبة اجابتك صحيحه لكن بدون حلقات نريدها





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

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    320


    بدون strlen و الحلقات ..
    هذي دالتين .. ةةضعت رابط للداله الاساسيه المستخدمه لكل منهم

    كود PHP:
    //php4 + php5
    //http://www.php.net/preg_split
    function else_strlen($str
    {
        if(empty(
    $str)) return 0;
        
    $chars preg_split('//'$str, -1PREG_SPLIT_NO_EMPTY);
        return (
    is_array($chars)) ? sizeof($chars) : 0;


    و
    كود PHP:
    //php5
    //http://www.php.net/str_split
    function else_strlen2 ($str)
    {
        if(empty(
    $str)) return 0;
        
    $chars str_split($str);
        return (
    is_array($chars)) ? sizeof($chars) : 0;


    للتجريب

    كود PHP:
    $str 'string';

    print 
    else_strlen($str);
    print 
    else_strlen2($str); 

    دمتم بود





    __________________
    إلى اللقاء سوالف , وآسف على الإزعاج...
    moffed.com , kleeja.com/tour/ar ,phpbbarabia.com

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    108


    لا اعرف ما فائده من عدم استخدام حلقات هذه حل اخر باستخدام الاستدعاء الذاتيRecursive
    كود PHP:
    <? 
      
        
       
    function strlen2($str,$count)
       {
            if(
    $str[$count] == "")
              return  
    $count ;
              
              return 
    strlen2($str,$count+1);
         
      }
        
           
    $str="Hello World";
      echo  
    strlen2($str,0);
      
    ?>







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


    saanina
    فكرة جميلة جدا لم تخطر ببالي سابقا مشكور
    احمد شكر
    الفائدة ايجاد اكبر الحلول للغز
    نعم هذا ماقصدته من البداية الاستدعاء الذاتي
    كود PHP:
    function strlen2($str,$count=0) {
        return (empty(
    $str[$count]))? $count strlen2($str,$count+1);
    }
        
    $str 'mohamed';
        echo  
    strlen2($str); 






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

  8. #8
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    69


    حل آخر

    كود PHP:
    function myStrlen($string)
    {
        
    ob_start();
        
    var_dump($string);
        
    preg_match('#\d+#'ob_get_clean(), $matches);
        return 
    $matches[0];

    كود PHP:
    $string str_repeat('سوالف'10000); // length = 50,000

    echo myStrlen($string); 






    __________________
    كود PHP:
    <?php live('free') OR die('hard'); ?>

  9. #9
    عضو جديد
    تاريخ التسجيل
    Jul 2008
    المشاركات
    3


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





    التعديل الأخير تم بواسطة GhMe ; 13-07-2008 الساعة 10:13 PM

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


    التصميم
    جميل جدا اخي التصميم مع انك استخدمت التعبيرات القياسية
    GhMe
    نعم اخي الفراغ يحتسب كحرف حتي في الدالة strlen
    يمكنك تجاهلها هنا بهذا الكود المعدل
    كود PHP:
       function strlen2($str)
       {
         
    $count=0;
         while(
    $str)
         {
            if(
    $str[$count] == "") return $count;
            if(!
    $str[$count] == " "$count++;// if the value eq space don't add 1
         
    }
      }
        
           
    $str="Hello World";
      echo  
    strlen2($str); 
    :nice:





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

  11. #11
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    69


    Bruce
    فهمت أنك تريد Algorithm معين لاحتساب طول النص, ولكنني أحببت توضيح فكرة أخري و في حدود شروط اللغز رغم أني أعرف أنها ليست ما تريده. وبالنسبة للـ RE يمكنني الاستغناء عنها بسهولة ولكن استخدمتها لعدم التشويش علي الفكرة الرئيسية

    بالنسبة لأخونا GhMe
    طبعاً المسافة ليست حرفاً ولكن ذلك لا يمنع احتسابها في دالة strlen، لأن دالة strlen فائدتها احتساب "طول النص" وليس "عدد الحروف"





    __________________
    كود PHP:
    <?php live('free') OR die('hard'); ?>

  12. #12
    عضو جديد
    تاريخ التسجيل
    Jul 2008
    المشاركات
    3


    مشكورين حبيت إسأل لأنو كان لازمني عدد الحروف و ليس طول النص
    و المطلوب أيضا عدد الحروف بظن هيك صار الحل مظبوط مية مية






  13. #13
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    49


    طيب لو كانت الجملة ( hello all )

    السطر ما بين hello و all رح يكون فارغ مما رح يقوم بإيقاف الحلقة التكرارية ولا يأخذ الكلمة الثانية

    لكن الاخ bruce قام بحل المشكلة جزاه الله خير





    التعديل الأخير تم بواسطة PHP.Ajax ; 15-07-2008 الساعة 12:22 AM

  14. #14
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    عذرا نسيت بدون استخدام حلقات while , do , for , foreach , do-while الخ...
    بتغاضي هذه النقطة ، ولأن الحلول قد كثرت ..

    هذا حلي:
    كود PHP:
    <?php
     
    $str 
    'my string';
    $str = (string)$str;
    for (
    $i 0; isset($str[$i]); $i++);
    echo 
    $i;
     
    ?>
    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  15. #15
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    حل آخر:

    كود PHP:
    echo count(str_split($str)); 






    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!





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

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

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