Permutationen

Aus MimiPedia
Version vom 29. September 2022, 07:41 Uhr von Ullrich (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „public class Perm<T> { public Consumer<List<T>> verbraucher; void laufe(List<T> p, Set<T> rSet) { if (rSet.isEmpty()) { verbraucher.accept(p); }…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

public class Perm<T> {

public Consumer<List<T>> verbraucher;

void laufe(List<T> p, Set<T> rSet) { if (rSet.isEmpty()) { verbraucher.accept(p); }

for (T r : rSet) { laufe(add(p, r), ohne(rSet, r)); } }

private List<T> add(List<T> p, T r) { if (p == null) { return List.of(r); } var copy = new ArrayList<T>(); copy.addAll(p); copy.add(r); return copy; }

private Set<T> ohne(Set<T> rSet, T r) { var copy = new HashSet<T>(); copy.addAll(rSet); copy.remove(r); return copy; } }