home *** CD-ROM | disk | FTP | other *** search
- package COM.objectspace.jgl;
-
- public final class Permuting {
- private Permuting() {
- }
-
- public static boolean nextPermutation(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
- if (!(var0.getContainer() instanceof Sequence)) {
- throw new IllegalArgumentException("iterator containers must be a Sequence");
- } else if (var0.equals(var1)) {
- return false;
- } else {
- BidirectionalIterator var3 = (BidirectionalIterator)var0.clone();
- var3.advance();
- if (var3.equals(var1)) {
- return false;
- } else {
- var3 = (BidirectionalIterator)var1.clone();
- var3.retreat();
-
- do {
- BidirectionalIterator var4 = (BidirectionalIterator)var3.clone();
- var3.retreat();
- if (var2.execute(var3.get(), var4.get())) {
- BidirectionalIterator var5 = (BidirectionalIterator)var1.clone();
- var5.retreat();
-
- while(!var2.execute(var3.get(), var5.get())) {
- var5.retreat();
- }
-
- Swapping.iterSwap(var3, var5);
- Reversing.reverse(var4, var1);
- return true;
- }
- } while(!var3.equals(var0));
-
- Reversing.reverse(var0, var1);
- return false;
- }
- }
- }
-
- public static boolean nextPermutation(Container var0, BinaryPredicate var1) {
- return nextPermutation((BidirectionalIterator)var0.start(), (BidirectionalIterator)var0.finish(), var1);
- }
-
- public static boolean prevPermutation(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
- if (!(var0.getContainer() instanceof Sequence)) {
- throw new IllegalArgumentException("iterator containers must be a Sequence");
- } else if (var0.equals(var1)) {
- return false;
- } else {
- BidirectionalIterator var3 = (BidirectionalIterator)var0.clone();
- var3.advance();
- if (var3.equals(var1)) {
- return false;
- } else {
- var3 = (BidirectionalIterator)var1.clone();
- var3.retreat();
-
- do {
- BidirectionalIterator var4 = (BidirectionalIterator)var3.clone();
- var3.retreat();
- if (var2.execute(var4.get(), var3.get())) {
- BidirectionalIterator var5 = (BidirectionalIterator)var1.clone();
- var5.retreat();
-
- while(!var2.execute(var5.get(), var3.get())) {
- var5.retreat();
- }
-
- Swapping.iterSwap(var3, var5);
- Reversing.reverse(var4, var1);
- return true;
- }
- } while(!var3.equals(var0));
-
- Reversing.reverse(var0, var1);
- return false;
- }
- }
- }
-
- public static boolean prevPermutation(Container var0, BinaryPredicate var1) {
- return prevPermutation((BidirectionalIterator)var0.start(), (BidirectionalIterator)var0.finish(), var1);
- }
- }
-