Zuerst ist immer schön, diese Antwort ist eher ein Gedankengang als eine concete Lösung.
OK, Sie haben also eine Liste von 3 Elementen (A1, A2, A3), wo A1 in der ersten 1/3 der Zielliste, A2 in der zweiten 1/3 des Ziels sein soll Liste und A3 im dritten 1/3. Ebenso möchten Sie B1 in der ersten 1/2, usw. sein ...
Also Sie Ihre Liste von 10 als Array zuordnen, dann beginnen Sie mit der Liste mit den meisten Elementen, in diesem Fall C. Berechnen Sie den Punkt Wo C1 fallen sollte (1.5) C1 am nächsten Punkt fallen lassen (in diesem Fall entweder 1 oder 2), dann berechnen, wo C2 fallen sollte (3.5) und den Prozess fortsetzen, bis es keine C mehr gibt.
Dann gehen Sie mit der Liste mit der zweithöchsten Anzahl von Elementen. In diesem Fall A. Berechnen Sie, wo A1 geht (1.66), also versuchen Sie es zuerst mit 2. Wenn Sie C1 bereits dort eingeben, versuchen Sie 1. Tun Sie dasselbe für A2 (4.66) und A3 (7.66). Zum Schluss listen wir B auf. B1 sollte bei 2,5 gehen, also versuchen Sie es mit 2 oder 3. Wenn beide genommen werden, versuchen Sie 1 und 4 und bewegen Sie sich weiter radial nach außen, bis Sie eine leere Stelle finden. Machen Sie das Gleiche für B2.
Sie werden mit etwas so enden, wenn Sie die untere Nummer wählen:
C1 A1 C2 A2 C3 B1 C4 A3 C5 B2
oder dies, falls Sie die obere Nummer wählen:
A1 C1 B1 C2 A2 C3 A3 C4 B2 C5
Dies scheint für Ihre Beispiellisten ziemlich gut zu funktionieren, aber ich weiß nicht, wie gut es auf viele Listen mit vielen Elementen skalieren wird. Probieren Sie es aus und lassen Sie mich wissen, wie es geht.
I shoulda ein CS Grad bekam :-) –
Es sieht für mich, dass Sie don‘ Sie wollen sie einfach kombinieren, sie sollen sie zusammen wie einen Reißverschluss oder Autos, die höflich auf einer Autobahn zusammenführen, zusammengeführt werden. Hab ich recht? – sblundy
"Autos höflich auf einer Autobahn verschmelzen" - Ich bin verloren ... ??;) – GalacticCowboy