سؤال

لدي الأبجدية مجموعة 24 حرف:"أ ب ج د ه و ز ح ط ي ك ل م ن س ف ص ق ر ش ت ث س"

أريد جمع كل حالة مع:3 شخصيات فريدة من نوعها.

الحالة الأولى:أبك ، ديف، غي، جكل ، منو، بور، ستو ، فولكس فاجن

هل كانت مفيدة؟

المحلول

هناك علاقة 1:1 بين التباديل من الحروف الأبجدية وقوائم المجموعات الخاصة بك.في الأساس ، وبمجرد الانتهاء من التقليب من الأبجدية ، لديك فقط للاتصال array_chunk للحصول على مجموعات.

الآن ، 24!من أي شيء (أي 620448401733239439360000) لن يتناسب أبدا مع الذاكرة (سواء كانت ذاكرة الوصول العشوائي أو القرص) ، لذا فإن أفضل ما يمكنك فعله هو إنشاء رقم n بين 1 و 24! (رقم التقليب) ومن ثم توليد مثل هذا التقليب.لهذه الخطوة الأخيرة ، انظر على سبيل المثال جيل من التباديل بعد ليمر وهويل واستشهد الأوراق هناك.

نصائح أخرى

giveacodicetagpre.

آمل أن أفهم سؤالك الصحيح.هذه واحدة تشككن على الأبجدية في ثلاث حلقات وتتخطي دائما الأحرف المستخدمة بالفعل.ثم دفع النتيجة إلى نتيجة $.

ولكن أفضل تجربة البرنامج النصي مع خمسة أحرف فقط؛) باستخدام Alls Strlen (Alphabet $) (لا تريد الاعتماد الآن ...) تحتاج إلى الكثير من الذاكرة بشكل لا يصدق.

(أنا متأكد من أن هناك بعض النسخة المخربلة التي هي أسرع من ذلك، ولكن هذا أكثر صرامة على ما أعتقد.)

هذا هو وقت متأخر قليلا القادمة ، ولكن لأي شخص آخر قراءة أكثر من هذا:إذا كنت تبحث لتقسيم سلسلة إلى قطع 3 أحرف ، حاول فب بنيت في ستر_سبليت() وظيفة.فإنه يأخذ في $string و $split_length حجة.على سبيل المثال:

$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWX';
$grouped  = str_split($alphabet, 3);

var_export( $grouped );

هذا يخرج المصفوفة التالية:

array ( 0 => 'ABC', 1 => 'DEF', 2 => 'GHI', 
        3 => 'JKL', 4 => 'MNO', 5 => 'PQR', 
        6 => 'STU', 7 => 'VWX', )

هذا يعمل على سبيل المثال الوارد في السؤال.إذا كنت تريد أن يكون كل مزيج ممكن من تلك الرسائل 24 ، الجواب أرتفاكطو أكثر منطقية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top