Ich erstelle ein Spiel, in dem Spieler Objekte auf dem Bildschirm an den richtigen Zielorten sortieren müssen. Ich suche nach einer Möglichkeit, die Objekte so zu mischen, dass kein Objekt an einem korrekten Ort beginnt. Wir werden also nicht in eine verrückte Welt von doppelten Negativen verfallen, ich werde die Orte mit der "richtigen Antwort" "vermeiden" und die Orte mit der "falschen Antwort" "gültige" Orte für diese Art nennen.Wie werden die Elemente eines Arrays zufällig denen eines anderen Arrays zugeordnet, wenn bestimmte Objekte nicht miteinander verknüpft werden sollen?
Die Arrays könnte wie folgt aussehen:
var sort_items = [
{"avoid": ["target1", "target2"]},
{"avoid": ["target1", "target2"]},
{"avoid": ["target3"]},
{"avoid": ["target4", "target5"]},
{"avoid": ["target4", "target5"]},
];
var sort_locations = [
{"id": "target1"},
{"id": "target2"},
{"id": "target3"},
{"id": "target4"},
{"id": "target5"},
];
So zum Beispiel werden die ersten und zweiten Objekte in sort_items auf target3
, target4
platziert könnte, oder , aber nicht target1
oder target2
.
Ich habe eine Reihe von verschiedenen Methoden ausprobiert, aber alle haben das Problem, dass am Ende der Sortierung die verbleibenden Positionen für die verbleibenden sort_items häufig ungültig sind. Zum Beispiel:
sort_items[0] placed on target3,
sort_items[1] placed on target5,
sort_items[2] placed on target2,
sort_items[3] placed on target1,
Error: sort_items[4] cannot be placed on target4
Auch in diesem Beispiel einer anderen zufällig Kommissionierung und Austausch mit ihm wie eine schlechten Idee scheint, weil die Hälfte des andere wäre auch ein ungültiges Spiel auf einem Swap führen.
Gibt es eine gute Methode, um dies zu tun?
Ein interessantes technisches Problem, aber so weit wie tatsächliches Spiel geht es wäre wirklich wichtig, wenn einige Objekte in der richtigen Position zu starten? Es wäre sicherlich einfacher, einfach einen Shuffle zu machen und es dabei zu belassen ... In Bezug auf den Algorithmus, nach dem Sie suchen, sollte es davon ausgehen, dass die Eingabedaten gültig sind? (Das heißt, dass "sort_items" keine unmögliche Kombination angibt?) – nnnnnn
Interessant. In einem realen Fall, wie groß sind Ihre Listen? – Arnauld
Sind vermieden Ziele immer konsequent ..? – Redu