home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Extras / OSpace / jgl.exe / jgl_2_0 / COM / objectspace / jgl / Permuting.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-03-12  |  1.9 KB  |  89 lines

  1. package COM.objectspace.jgl;
  2.  
  3. public final class Permuting {
  4.    private Permuting() {
  5.    }
  6.  
  7.    public static boolean nextPermutation(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
  8.       if (!(var0.getContainer() instanceof Sequence)) {
  9.          throw new IllegalArgumentException("iterator containers must be a Sequence");
  10.       } else if (var0.equals(var1)) {
  11.          return false;
  12.       } else {
  13.          BidirectionalIterator var3 = (BidirectionalIterator)var0.clone();
  14.          var3.advance();
  15.          if (var3.equals(var1)) {
  16.             return false;
  17.          } else {
  18.             var3 = (BidirectionalIterator)var1.clone();
  19.             var3.retreat();
  20.  
  21.             do {
  22.                BidirectionalIterator var4 = (BidirectionalIterator)var3.clone();
  23.                var3.retreat();
  24.                if (var2.execute(var3.get(), var4.get())) {
  25.                   BidirectionalIterator var5 = (BidirectionalIterator)var1.clone();
  26.                   var5.retreat();
  27.  
  28.                   while(!var2.execute(var3.get(), var5.get())) {
  29.                      var5.retreat();
  30.                   }
  31.  
  32.                   Swapping.iterSwap(var3, var5);
  33.                   Reversing.reverse(var4, var1);
  34.                   return true;
  35.                }
  36.             } while(!var3.equals(var0));
  37.  
  38.             Reversing.reverse(var0, var1);
  39.             return false;
  40.          }
  41.       }
  42.    }
  43.  
  44.    public static boolean nextPermutation(Container var0, BinaryPredicate var1) {
  45.       return nextPermutation((BidirectionalIterator)var0.start(), (BidirectionalIterator)var0.finish(), var1);
  46.    }
  47.  
  48.    public static boolean prevPermutation(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
  49.       if (!(var0.getContainer() instanceof Sequence)) {
  50.          throw new IllegalArgumentException("iterator containers must be a Sequence");
  51.       } else if (var0.equals(var1)) {
  52.          return false;
  53.       } else {
  54.          BidirectionalIterator var3 = (BidirectionalIterator)var0.clone();
  55.          var3.advance();
  56.          if (var3.equals(var1)) {
  57.             return false;
  58.          } else {
  59.             var3 = (BidirectionalIterator)var1.clone();
  60.             var3.retreat();
  61.  
  62.             do {
  63.                BidirectionalIterator var4 = (BidirectionalIterator)var3.clone();
  64.                var3.retreat();
  65.                if (var2.execute(var4.get(), var3.get())) {
  66.                   BidirectionalIterator var5 = (BidirectionalIterator)var1.clone();
  67.                   var5.retreat();
  68.  
  69.                   while(!var2.execute(var5.get(), var3.get())) {
  70.                      var5.retreat();
  71.                   }
  72.  
  73.                   Swapping.iterSwap(var3, var5);
  74.                   Reversing.reverse(var4, var1);
  75.                   return true;
  76.                }
  77.             } while(!var3.equals(var0));
  78.  
  79.             Reversing.reverse(var0, var1);
  80.             return false;
  81.          }
  82.       }
  83.    }
  84.  
  85.    public static boolean prevPermutation(Container var0, BinaryPredicate var1) {
  86.       return prevPermutation((BidirectionalIterator)var0.start(), (BidirectionalIterator)var0.finish(), var1);
  87.    }
  88. }
  89.