PHP မှ stripuffle function ကိုမကြာခဏ strings ၏ sequence ကိုကျပန်းနှောင့်အယှက်ရန်နှင့်ကျပန်း permutations ထုတ်လုပ်ရန်အသုံးပြုသည်။ အသုံးပြုရန်အလွန်ရိုးရှင်းပါသည်။
<?php
$original = "abcdef";
$shuffled = str_shuffle($original);
echo $shuffled;
?>
ဒီကုဒ်ကိုကွပ်မျက်တဲ့အချိန်တိုင်းမှာဒါကမူလ string ကိုကျပန်း permutation ပေါင်းစပ်မှုကိုပြန်ပို့လိုက်တယ်။ သို့သော်အချို့သော application တစ်ခုတွင်ပြ cover ်ဌာန်းထားသောကုဒ်များ, ကျပန်းစကားဝှက်များ, ထီများများ,
သို့သော် Strt_Shuffle ၏ကျပန်းသဘောသဘာဝကြောင့်သင်ဖုန်းခေါ်သည့်အခါတိုင်းသင်ခေါ်ဆိုသည့်အချိန်တိုင်းတွင်အထူးသဖြင့်နမူနာအရွယ်အစားသေးငယ်သည်သို့မဟုတ်ခေါ်ဆိုမှုအရေအတွက်ကြီးမားသည်မှာသိသိသာသာတိုးပွားလာသည်။ ဒီတော့မိတ္တူပွားပေါင်းစပ်မှုတွေထုတ်လုပ်ခြင်းကိုဘယ်လိုရှောင်ရှားရမလဲ။ ဤတွင်အနည်းငယ်လက်တွေ့ကျတဲ့နည်းဗျူဟာအနည်းငယ်ရှိပါတယ်။
အလိုအလျောက်ဆုံးနည်းသည်ကျပန်းကြိုးအသစ်တစ်ခုထုတ်လုပ်ပြီး၎င်းကို Array သို့မဟုတ်စုဆောင်းခြင်းတွင်သိုလှောင်ရန်ဖြစ်သည်။ string အသစ်တစ်ခုကိုထုတ်လုပ်သည့်အခါ, ၎င်းသည်တည်ရှိပြီးဖြစ်သောရှိမရှိစစ်ဆေးပါ။
<?php
$original = "abcdef";
$generated = [];
function generateUniqueShuffle($str, &$history) {
do {
$shuffled = str_shuffle($str);
} while (in_array($shuffled, $history));
$history[] = $shuffled;
return $shuffled;
}
// နမူနာ:ဖြစ်ပါှးစေ10ထူးခွားတဲ့ကျပန်းပေါင်းစပ်
for ($i = 0; $i < 10; $i++) {
echo generateUniqueShuffle($original, $generated) . "\n";
}
?>
ဤနည်းလမ်းသည်ရိုးရှင်းပါသည်, သို့သော်မျိုးဆက်သစ်များတိုးပွားလာသည်နှင့်အမျှပုံတူစစ်ဆေးခြင်းသည်နှေးကွေးလာပြီးနောက်ဆုံးတွင်လိုချင်သောနံပါတ် (အကန့်အသတ်ဖြင့်ပေါင်းစပ်ခြင်း) ထက်လျော့နည်းစေနိုင်သည်။
ကြိုး၏ permutations permutations သည်အကန့်အသတ်ရှိပါသည်။ permutation အားလုံးကိုထုတ်လုပ်ရန်, ၎င်းတို့မှသူတို့ကိုကျပန်းဖြည်းပေးခြင်းနှင့်ကျပန်းဖြည်းပေးခြင်းနှင့်ကျပန်းဖြည်းပေးခြင်းနှင့်ကျပန်းဖြည်းပေးခြင်းနှင့်ကျပန်းဖြည်းပေးခြင်းနှင့်ကျပန်းဖြည်းပေးခြင်းနှင့်အလှဆင်ခြင်းနှင့်အစားထိုးခြင်းတို့ကိုသင်ပထမ ဦး ဆုံးအသုံးပြုနိုင်သည်။
ဥပမာအားဖြင့်စီစဉ်ထားသော core code ကိုဥပမာတစ်ခုထုတ်ပေးသည်။
<?php
function permute($str, $prefix = '') {
$result = [];
$len = strlen($str);
if ($len == 0) {
$result[] = $prefix;
} else {
for ($i = 0; $i < $len; $i++) {
$rem = substr($str, 0, $i) . substr($str, $i + 1);
$result = array_merge($result, permute($rem, $prefix . $str[$i]));
}
}
return $result;
}
$original = "abc";
$allPermutations = permute($original);
shuffle($allPermutations); // ကျပန်းနှောင့်အယှက်အမိန့်
foreach ($allPermutations as $perm) {
echo $perm . "\n";
}
?>
ဤနည်းလမ်းသည်တိုတောင်းသော string အရှည်များအတွက် (များသောအားဖြင့် 8 ထက်နည်းသော) အပြည့်အဝအပြည့်အဝ (8) ထက်ငယ်သည်) အပြည့်အဝပေါက်ကွဲခြင်း (8! = 40320) ပေါက်ကွဲခဲ့သောကြောင့်မှတ်ဉာဏ်နှင့်အချိန်အများကြီးစားသုံးသည်။
အကယ်. သင်သည်တောင်းဆိုမှုများကိုအနှံ့အပြားသို့မဟုတ်အချိန်ကြာမြင့်စွာမိတ္တူပွားခြင်းကိုရှောင်ရှားရန်လိုအပ်ပါက,
ဤနည်းလမ်းသည်အသုံးပြုသူပေါင်းစုံပတ်ဝန်းကျင်တွင်အလွန်လက်တွေ့ကျသည်သို့မဟုတ်ကျပန်းပေါင်းစပ်မှုအမြောက်အများကိုထုတ်လုပ်သည့်အခါအလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားခြင်းနှင့်ထူးခြားမှုကိုသေချာစေရန်။
ဥပမာ Pseudoode Ideas:
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ,လက်ရှိပေါင်းစပ်ရှိပြီးသားလျှင်စုံစမ်းမှု
// ရှိလျှင်,则重新ဖြစ်ပါှးစေ,直到ဖြစ်ပါှးစေ唯一组合
// သိမ်းဆည်းရန် database သို့ပေါင်းစပ်အသစ်ထည့်ပါ
?>
တိကျသောအကောင်အထည်ဖော်မှုသည်ဒေတာဘေ့စ်စနစ်နှင့်သင်အသုံးပြုသောစီးပွားရေးလိုအပ်ချက်များအပေါ်မူတည်သည်။
အကယ်. သင်သည်ရိုးရှင်းသောထပ်ခါတလဲလဲပြောဆိုခြင်းကိုရှောင်ရှားပါကကျပန်းနေရာကိုတိုးမြှင့်စေရန် strot_shuffle နှင့်ကျပန်းဇာတ်ကောင်အစားထိုးကိုလည်းပေါင်းစပ်နိုင်သည်။ ဥပမာအားဖြင့်, အနှောင့်အယှက်ဖြစ်စဉ်ပြီးနောက်အခြားခွင့်ပြုထားသောဇာတ်ကောင်အစုံရှိဇာတ်ကောင်အတော်များများကိုကျပန်းအစားထိုးလိုက်ပါ။
၎င်းသည်ထပ်ခါတလဲလဲပြောဆိုခြင်းဖြစ်နိုင်ခြေကိုလျော့နည်းစေသည်။ သို့သော်လုံးဝထူးခြားရန်အာမခံချက်မရှိပါ။
အသေးစားနှင့်ရိုးရှင်းသောအခြေအနေများ - ထုတ်လုပ်ထားသောရလဒ်များကို array ဖြင့်သိမ်းထားပါ။
အလယ်အလတ်အရွယ်နှင့်တိုတောင်းသောကြိုးများ - ကျပန်းရေးဆွဲခြင်း,
အကြီးစားနှင့်အမြဲတမ်းထူးခြားမှု - မှတ်တမ်းများကို datubles လုပ်ရန် databases သို့မဟုတ် caces ကိုသုံးပါ။
တိုးမြှင့်ကျပန်း - အခြားကျပန်းအသွင်ပြောင်းနည်းလမ်းများနှင့်ပေါင်းစပ်ကြ, အထပ်ထပ်၏ဖြစ်နိုင်ခြေကိုလျှော့ချ။
မဟာဗျူဟာတစ်ခုကိုရွေးချယ်ရာတွင်သင်သည် string အရှည်, မျိုးဆက်များ, စွမ်းဆောင်ရည်နှင့်မှတ်ဉာဏ်အသုံးပြုမှုကိုချိန်ညှိရန်လိုအပ်ပြီးကျိုးကြောင်းဆီလျော်သောဖြေရှင်းနည်းတစ်ခုကိုဒီဇိုင်းဆွဲရန်လိုအပ်သည်။