احصل على الموضع الأكثر متوسطًا لكائنات X على المسار باستخدام المواضع Y المتاحة

StackOverflow https://stackoverflow.com/questions/839801

سؤال

إنه يوم الجمعة، والساعة بالتوقيت المحلي هي 3.22 مساءً، لذلك لن يقدم لي عقلي حلاً، لذلك أسأل:

أحاول كتابة دالة/خوارزمية في Actionscript 3.0 تمنحني متوسط ​​المواضع لعدد x من المواضع على طول مسار لعدد y من المواضع المتاحة.

Y دائمًا أكبر من X بالطبع.

الخلفية هي أنني حصلت على خريطة، تحتوي على سبيل المثال على 50 موضعًا محتملاً للأشياء (على طول المسار).لكن لدي 32 كائنًا فقط لوضعها على طول هذا المسار، ولكنني أريد أن تكون مواضعها متوسطة/حتى على طول هذا المسار قدر الإمكان.بحيث لا تكون هناك فجوة كبيرة في النهاية على سبيل المثال.يتم حاليًا تخزين مواضعي المتاحة في مصفوفة ذات قيم نقطية.

إذا قمت فقط بإجراء TotalPos/wantedPos ووضعها على الأرض، فستكون فجوة "قبيحة" في النهاية، هل لديك أي أفكار؟

يحرر:

أردت إضافة الوظيفة إذا أرادها أي شخص آخر:

function place (x : uint, y : uint ) : Array
{
    var a : Array = new Array();
    var s : Number = y / x;
    var c : Number = 0;

    for (var i : Number = 0; i<x; i++) {
        c++;
        var pos : Number = Math.round(i * s);
        a.push(posArray[pos]);
    }
    return a;
}

يفترض أن لديك صفيف posArray مع المواضع المحتملة بالفعل ...

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

المحلول

إذا قمت بإجراء TotalPos/wantedPos، فستحصل على رقم من المحتمل ألا يكون موجودًا في int.

على سبيل المثال 32/7 = 4.57...

إذا قمت بوضعها على الأرض واخترت 4، فستحصل على فجوة كبيرة في النهاية.ومع ذلك، إذا قمت بتجميع 4.57 وهذا الحد الأدنى، فسوف تضيق الفجوة.

مرة أخرى على سبيل المثال 32/7 = 4.57...لذا في البداية اخترت 4.للرقم التالي تحصل على 2*4.57...= 9.14... فاختر 9.ثم 3*4.57...= 13.71 فاختر 13.إلخ ...

ربما سيكون من الأفضل لو قمت بالتقريب بدلاً من الأرضية.

حظ سعيد :)

نصائح أخرى

إذا فهمت بشكل صحيح، أعتقد أن هناك خوارزمية أساسية لهذا النوع من الأشياء (ولكن مضى وقت طويل جدًا منذ المدرسة!).في الأساس، إنها مكالمة متكررة بحيث تقوم بتمرير نقاط النهاية وتضع كائنًا في النقطة الوسطى.ثم تتكرر مع البداية إلى المنتصف كنقطة النهاية الأولى، ومن المنتصف إلى النهاية باعتبارها الثانية.لذلك تستمر في تقسيم الفجوات إلى النصف.

عندما أكتب هذا، أدركت أن هذا لن ينجح إلا إذا كان عدد الكائنات المراد توزيعها مربعًا.ومع ذلك، سأترك الإجابة في حالة أنها تعطي فكرة أفضل لشخص آخر.

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