Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.16 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.LinkedList;
  5. import java.util.Map;
  6.  
  7. public class Forward {
  8.     HashMap<String, Zmienna> zmienne;
  9.     String[] nazwy_zmiennych;
  10.  
  11.     public Forward(Map<String, Zmienna> zmienne, String[] nazwy_zmiennych) {
  12.         this.zmienne = (HashMap<String, Zmienna>) zmienne;
  13.         this.nazwy_zmiennych = nazwy_zmiennych;
  14.     }
  15.  
  16.     public boolean sprawdzOgraniczenia(Zmienna zmienna) {
  17.         for (Ograniczenie o : (ArrayList<Ograniczenie>) zmienna.ograniczenia) {
  18.             if (o.sprawdz_ograniczenie(zmienne) != true) {
  19.                 return false;
  20.             }
  21.         }
  22.         return true;
  23.     }
  24.  
  25.     LinkedList<String> forward(boolean czyWszystkie) {
  26.         LinkedList<String> rozwiazania = new LinkedList<String>();
  27.         int[] wartosci_id = new int[nazwy_zmiennych.length];
  28.         int dir = 1;
  29.         int iv = 0;
  30.         HashMap<String, Zmienna> tmp = zmienne;
  31.         while (iv >= 0) {
  32.             if (iv < nazwy_zmiennych.length) {
  33.                 if (zmienne.get(nazwy_zmiennych[iv]).wartosc != null) {
  34.                     iv += dir;
  35.                 } else {
  36.                     Zmienna z = tmp.get(nazwy_zmiennych[iv]);
  37.                     boolean nextVal = (wartosci_id[iv] < z.dziedzina.size());
  38.                     boolean ok = true;
  39.                     if (nextVal) {
  40.                         z.ustawWartosc(wartosci_id[iv]);
  41.                         Iterator<Zmienna> iterator = new ArrayList().iterator();
  42.                         while (iterator.hasNext()) {
  43.                             ok = iterator.next().aktualizujDziedzine(zmienne);
  44.                         }
  45.                         if (ok) {
  46.                             iv++;
  47.                         } else {
  48.                             wartosci_id[iv]++;
  49.  
  50.                             for (int i = (iv + 1); i < nazwy_zmiennych.length; i++) {
  51.                                 wartosci_id[i] = 0;
  52.                                 tmp.replace(nazwy_zmiennych[i],
  53.                                         tmp.get(nazwy_zmiennych[i]),
  54.                                         zmienne.get(nazwy_zmiennych[i]));
  55.                             }
  56.                         }
  57.                         dir = 1;
  58.                     } else {
  59.                         wartosci_id[--iv]++;
  60.                         dir = -1;
  61.                         for (int i = (iv + 1); i < nazwy_zmiennych.length; i++) {
  62.                             wartosci_id[i] = 0;
  63.                             tmp.replace(nazwy_zmiennych[i],
  64.                                     tmp.get(nazwy_zmiennych[i]),
  65.                                     zmienne.get(nazwy_zmiennych[i]));
  66.                         }
  67.  
  68.                     }
  69.                 }
  70.             } else {
  71.                 rozwiazania.add(zmienne.toString());
  72.                 if (!czyWszystkie)
  73.                     iv = -1;
  74.                 else
  75.                     wartosci_id[--iv]++;
  76.             }
  77.         }
  78.         return rozwiazania;
  79.     }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement