Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.Map;
- public class Forward {
- HashMap<String, Zmienna> zmienne;
- String[] nazwy_zmiennych;
- public Forward(Map<String, Zmienna> zmienne, String[] nazwy_zmiennych) {
- this.zmienne = (HashMap<String, Zmienna>) zmienne;
- this.nazwy_zmiennych = nazwy_zmiennych;
- }
- public boolean sprawdzOgraniczenia(Zmienna zmienna) {
- for (Ograniczenie o : (ArrayList<Ograniczenie>) zmienna.ograniczenia) {
- if (o.sprawdz_ograniczenie(zmienne) != true) {
- return false;
- }
- }
- return true;
- }
- LinkedList<String> forward(boolean czyWszystkie) {
- LinkedList<String> rozwiazania = new LinkedList<String>();
- int[] wartosci_id = new int[nazwy_zmiennych.length];
- int dir = 1;
- int iv = 0;
- HashMap<String, Zmienna> tmp = zmienne;
- while (iv >= 0) {
- if (iv < nazwy_zmiennych.length) {
- if (zmienne.get(nazwy_zmiennych[iv]).wartosc != null) {
- iv += dir;
- } else {
- Zmienna z = tmp.get(nazwy_zmiennych[iv]);
- boolean nextVal = (wartosci_id[iv] < z.dziedzina.size());
- boolean ok = true;
- if (nextVal) {
- z.ustawWartosc(wartosci_id[iv]);
- Iterator<Zmienna> iterator = new ArrayList().iterator();
- while (iterator.hasNext()) {
- ok = iterator.next().aktualizujDziedzine(zmienne);
- }
- if (ok) {
- iv++;
- } else {
- wartosci_id[iv]++;
- for (int i = (iv + 1); i < nazwy_zmiennych.length; i++) {
- wartosci_id[i] = 0;
- tmp.replace(nazwy_zmiennych[i],
- tmp.get(nazwy_zmiennych[i]),
- zmienne.get(nazwy_zmiennych[i]));
- }
- }
- dir = 1;
- } else {
- wartosci_id[--iv]++;
- dir = -1;
- for (int i = (iv + 1); i < nazwy_zmiennych.length; i++) {
- wartosci_id[i] = 0;
- tmp.replace(nazwy_zmiennych[i],
- tmp.get(nazwy_zmiennych[i]),
- zmienne.get(nazwy_zmiennych[i]));
- }
- }
- }
- } else {
- rozwiazania.add(zmienne.toString());
- if (!czyWszystkie)
- iv = -1;
- else
- wartosci_id[--iv]++;
- }
- }
- return rozwiazania;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement