Question

Son vendredi et à l'heure locale, l'horloge est à 15h22, mon cerveau ne me donnera pas de solution, alors je demande:

J'essaie d'écrire une fonction / un algorithme dans Actionscript 3.0 qui me donne le plus grand nombre de positions moyennes d'un nombre x de positions le long d'un chemin de y un nombre de positions disponibles.

Y est toujours plus grand que X bien sûr.

L’arrière-plan est, j’ai une carte, avec par exemple 50 emplacements possibles d’objets (le long d’un chemin). Mais je n'ai que 32 objets à placer le long de ce chemin, mais je veux que leurs emplacements soient aussi moyens que possible le long de ce chemin. Pour que, par exemple, ce ne soit pas un gros écart à la fin. Mes positions disponibles sont pour le moment stockées dans un tableau avec des valeurs de points.

Si vous ne faites que totalPos / wantedPos et que vous le posez au sol, ce sera un "quotient moche". écart à la fin, des idées?

EDIT:

Je voulais ajouter la fonction au cas où quelqu'un d'autre le voudrait:

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;
}

Suppose que vous ayez déjà un tableau posArray avec les positions possibles ...

Était-ce utile?

La solution

Si vous utilisez TotalPos / wantedPos, vous obtenez un nombre qui ne figure probablement pas dans int.

Par exemple 32/7 = 4.57 ...

Si vous choisissez 4, vous obtenez un grand écart à la fin. Cependant, si vous accumulez la 4.57 et le plancher, vous réduirez l'écart.

Encore une fois, par exemple 32/7 = 4,57 ... Donc au départ, vous choisissez 4. Pour le numéro suivant, vous obtenez 2 * 4,57 ... = 9,14 ..., donc vous choisissez 9. Ensuite, 3 * 4,57 ... = 13.71 donc vous choisissez 13. Etc ...

Ce serait probablement mieux si vous arrondissiez au lieu de sol.

Bonne chance:)

Autres conseils

Si je comprends bien, je pense qu’il existe un algorithme de base pour ce genre de chose (mais c’est trop long depuis l’école!). Fondamentalement, c’est un appel récursif, vous passez donc aux points finaux et place un objet au milieu. Vous recourez ensuite avec le début-au-milieu comme premier point final et le milieu-fin comme le second. Donc, vous continuez à diviser les écarts de moitié.

En écrivant ceci, je réalise que cela ne fonctionnera que si le nombre d'objets à distribuer est un carré. Cependant, je laisserai la réponse au cas où cela donnerait à quelqu'un d'autre une meilleure idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top