PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پیدا کردن نزدیک ترین آرایه در آرایه ای از آرایه ها



esi20
September 12th, 2020, 13:40
سلام و درود

یه آرایه ای دارم به شکل زیر:



[
[20, 70, 10, 1]
[50, 10, 40, 0]
[80, 0, 20, -1]
]


آرایه فوق حدود 100 هزار آرایه با فرمتی که بالا گفتم داخلش هست.

حالا یه آرایه دیگه دارم با به طور مثال با مقادیر زیر:



[30, 50, 20, 1]


هدفم اینه که با روشی بفهمم که آرایه ای که به عنوان ورودی میدم از توی اون لیست 100 هزار تایی بیشتر شباهت رو با کدوم آیتم داره؟






سپاس

hoka
September 12th, 2020, 20:15
سلام و درود

یه آرایه ای دارم به شکل زیر:



[
[20, 70, 10, 1]
[50, 10, 40, 0]
[80, 0, 20, -1]
]


آرایه فوق حدود 100 هزار آرایه با فرمتی که بالا گفتم داخلش هست.

حالا یه آرایه دیگه دارم با به طور مثال با مقادیر زیر:



[30, 50, 20, 1]


هدفم اینه که با روشی بفهمم که آرایه ای که به عنوان ورودی میدم از توی اون لیست 100 هزار تایی بیشتر شباهت رو با کدوم آیتم داره؟






سپاس





<?php
$first_array = [
[20, 70, 10, 1],
[50, 10, 40, 0],
[80, 0, 20, -1],
[20, 71, 10, 1]
];

$sec_array = [30, 50, 20, 1];

$res = array();

foreach($first_array as $key=>$value){
$res_sum = 0;
foreach($value as $key_2 => $value_2){
$res_sum += abs($sec_array[$key_2] - $value_2);
}

$res[$key] = $res_sum;
}

asort($res);
$value = reset($res);
$key = key($res);





به نظر این جواب بده تست کنید باز

arash_fa
September 18th, 2020, 15:42
$main_array ; ////////آرایه بزرگ که قرار است در آن جستجو شود///////////
$search_for = array(30,50,20,1);
$i = -1;
foreach($main_array as $k=>$v){
if($v[0] == $search_for[0] && $v[1] == $search_for[1] && $v[2] == $search_for[2] && $v[3] == $search_for[3] & ){
$i = $k
break;
}

}


در مثال بالا $i اندیس مورد نظر را بر میگرداند . اگر -1 باشد یعنی چیزی پیدا نشد. و اگر هم مقداری داشت که به راحتی میتوان در آرایه اصلی مقدار را پیدا کرد

nevergotme
September 18th, 2020, 15:51
$main_array ; ////////آرایه بزرگ که قرار است در آن جستجو شود///////////
$search_for = array(30,50,20,1);
$i = -1;
foreach($main_array as $k=>$v){
if($v[0] == $search_for[0] && $v[1] == $search_for[1] && $v[2] == $search_for[2] && $v[3] == $search_for[3] & ){
$i = $k
break;
}

}


در مثال بالا $i اندیس مورد نظر را بر میگرداند . اگر -1 باشد یعنی چیزی پیدا نشد. و اگر هم مقداری داشت که به راحتی میتوان در آرایه اصلی مقدار را پیدا کرد

گفتی اگه فقط مساوی بود بریز تو آرایه، اگه مساوی وجود نداشت چی ؟ نوشته امکان داره نزدیک به عدد اصلی باشه.

arash_fa
September 18th, 2020, 15:55
گفتی اگه فقط مساوی بود بریز تو آرایه، اگه مساوی وجود نداشت چی ؟ نوشته امکان داره نزدیک به عدد اصلی باشه.

من مساوی گذاشتم شما میتونی مثلا بگی بین این عدد و اون عدد بود یا مثلا اینقدر بیشتر یا کمتر بود و ........