में एक सरणी में बाइनरी खोज मेरे पास हेक्स संख्याओं की एक सरणी है, और मुझे अन्य नंबरों पर जाना होगा और जांचें कि वे उस सरणी में दिखाई देते हैं या नहीं। अभी मैं foreach
लूप का उपयोग कर रहा हूं जो हर बार पूरे सरणी पर जाता है। पहले सरणी को सॉर्ट करके और फिर उस पर बाइनरी खोज को कार्यान्वित करके इसे तेज बनाने का कोई तरीका है।पर्ल
इस समय कोड:
sub is_bad_str{
my ($str, @keys) = @_;
my $flag = 0;
my ($key, $hex_num);
if ($str =~ m/14'h([0-9a-f][0-9a-f][0-9a-f][0-9a-f])/;){ #'# fixes bad highlighting
$hex_num = $1;
}
if (defined $hex_num){
foreach $key (@keys){
if ($hex_num =~ /\Q$key\E/i){
$flag = 1;
last;
}
}
}
if (($flag == 0) && (defined $hex_num)){
return 1;#Bad str
}else{
return 0;#Good str
}
}
आप में एक बहुत ही सूक्ष्म बग है। मिलान चर '$ 1' * रीसेट नहीं है, इसलिए इसे परिभाषित करने के बाद, यह परिभाषित रहेगा, भले ही कोई रेगेक्सपी मैच हो। यह जांचना चाहिए कि क्या 'x = ~ y' परिभाषित किया गया है, यह निर्धारित करने के लिए कि कोई मिलान – Dancrumb
क्या यह होमवर्क है? यदि हां, तो यह एक बात है ... यदि नहीं, तो आपको ऐसा करने के लिए एक सीपीएएन मॉड्यूल का उपयोग करना चाहिए। – Dancrumb
यह होमवर्क नहीं है। वास्तव में क्या मॉडल? मैंने मॉडल सूची की जांच की और ऐसा प्रतीत नहीं होता कि वहां एक बाइनरी खोज मॉडल है। – SIMEL