ich eine Liste von variabler Größe haben, zum BeispielSplit eine Liste in zwei Teil-Listen auf alle möglichen Arten
[1, 2, 3, 4]
und ich möchte jeden möglichen Weg, um diese Liste in zwei Teile zu spalten:
([], [1, 2, 3, 4])
([1], [2, 3, 4])
([2], [1, 3, 4])
([3], [1, 2, 4])
([4], [1, 2, 3])
([1, 2], [3, 4])
([1, 3], [2, 4])
([1, 4], [2, 3])
([2, 3], [1, 4])
([2, 4], [1, 3])
([3, 4], [1, 2])
([1, 2, 3], [4])
([1, 2, 4], [3])
([1, 3, 4], [2])
([2, 3, 4], [1])
([1, 2, 3, 4], [])
Ich bin mir ziemlich sicher, dass dies kein unbekanntes Problem ist und es gibt wahrscheinlich einen Algorithmus dafür, aber ich konnte keinen finden. Außerdem sollte dies keine externen Bibliotheken verwenden, sondern mit einfachen Sprachfunktionen (Schleifen, Bedingungen, Methoden/Funktionen, Variablen, ...) arbeiten, die in den meisten Sprachen gefunden werden.
Ich habe eine hackish Lösung in Python geschrieben:
def get_all(objects):
for i in range(1, len(objects)):
for a in combinations(objects, i):
for b in combinations([obj for obj in objects if obj not in up], len(objects) - i):
yield State(up, down)
if objects:
yield State([], objects)
yield State(objects, [])
Allerdings verwendet er Bibliotheks-Features und ist nicht sehr schön im Allgemeinen suchen.
Wir schreiben hier keinen Code. Wir helfen Menschen, zu ihren Lösungen zu kommen. Sie müssen uns einige Anstrengungen dafür zeigen. –
Ich habe eine hackische Lösung in Python geschrieben. – LeoTietz
Sie sollten es posten. – Brionius