Advertisement
dydziek

AiSD part 1

Oct 21st, 2019
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.78 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package algorytmy;
  7.  
  8. import java.util.ArrayList;
  9. import java.util.Arrays;
  10. import java.util.List;
  11.  
  12. /**
  13.  *
  14.  * @author patrykd
  15.  */
  16. public class Algorytmy {
  17.  
  18.     /**
  19.      * @param args the command line arguments
  20.      */
  21.     public static void main(String[] args) {
  22.  
  23.         //1,3 ^ 4,5 to są możliwe rozwiązania
  24.  
  25.         startGeneruj();
  26.  
  27.     }
  28.  
  29.     public static void generuj(List<Character> listaBrakujacychUmiejetnosci, char[][] listaPosiadanychUmiejetnosci,
  30.             int ktoryKosmonauta) {
  31.  
  32.         //TODO: dodać warunki początkowe i końcowe dla funkcji rekursywnej bo na razie leci w pizdu w ciul <- to dla mnie
  33.  
  34.         if( listaBrakujacychUmiejetnosci.size() > 0 ) { // jeśli są brakujące umiejętności to powtarzaj
  35.             if (listaBrakujacychUmiejetnosci.contains(listaPosiadanychUmiejetnosci[ktoryKosmonauta][0])
  36.                 && listaBrakujacychUmiejetnosci.contains(listaPosiadanychUmiejetnosci[ktoryKosmonauta][1])) { // jeśli są brakujące umiejętności któ©e posiada aktualnie sprawdzany kosmonauta to wykonaj
  37.  
  38.                 int k = ktoryKosmonauta + 1;
  39.  
  40.                 System.out.println("k" + k); // wypisz jeśli się zgadza
  41.  
  42.                 for (int i = 0; i < listaBrakujacychUmiejetnosci.size() ; i++) { // to samo co w brutalnej sile, to jest do poprawki żeby usuwało ze sprawdzania indeksy kosmonautów którzy mają umiejętności których nie ma na liście
  43.                     if (listaBrakujacychUmiejetnosci.equals(listaPosiadanychUmiejetnosci[ktoryKosmonauta][0])) {
  44.                         listaBrakujacychUmiejetnosci.remove( i );
  45.                     }
  46.  
  47.                     if (listaBrakujacychUmiejetnosci.equals(listaPosiadanychUmiejetnosci[ktoryKosmonauta][1])) {
  48.                         listaBrakujacychUmiejetnosci.remove( i );
  49.                     }    
  50.                 }
  51.  
  52.                 ++ktoryKosmonauta;
  53.  
  54.                 generuj(listaBrakujacychUmiejetnosci, listaPosiadanychUmiejetnosci, ktoryKosmonauta );
  55.             }
  56.         }
  57.     }
  58.  
  59.     public static void startGeneruj() { // przygotowanie do generowania opcji, ustawienie jak w brutalnej sile
  60.         char[][] tabKosmonautow = { { 'a', 'd' }, { 'b', 'd' }, { 'b', 'c' }, { 'a', 'b' }, { 'c', 'd' } };
  61.  
  62.         List<Character> listaUmiejetnosci = new ArrayList<>();
  63.  
  64.         listaUmiejetnosci.add('a');
  65.         listaUmiejetnosci.add('b');
  66.         listaUmiejetnosci.add('c');
  67.         listaUmiejetnosci.add('d');
  68.  
  69.         int numerKosmonauty = 0;
  70.  
  71.         generuj(listaUmiejetnosci, tabKosmonautow, numerKosmonauty); // wywołanie rekurencyjnej metody
  72.  
  73.     }
  74.  
  75.     public void brutalna() {
  76.         char[][] tab_k = { { 'a', 'd' }, { 'b', 'd' }, { 'b', 'c' }, { 'a', 'b' }, { 'c', 'd' } }; //tablica umiejętności kosmonautóœ k1-k5 gdzie numery to indeks + 1
  77.        
  78.         List<Character> listaUmiejetnosci = new ArrayList<>(); // lista wymaganych przez misje umiejętności
  79.  
  80.         listaUmiejetnosci.add('a'); // kolejne 4 linie to dodanie do listy wymaganych umiejętności
  81.         listaUmiejetnosci.add('b'); // jest opcja przy deklaracji .toList ale cholera wie czemu nie działa na moim kompilatorze
  82.         listaUmiejetnosci.add('c'); //
  83.         listaUmiejetnosci.add('d'); //
  84.  
  85.         do { // pętla która się powtarza dopóki są jakieś miejsca do obsadzenia
  86.            
  87.             for (int i = 0; i < tab_k.length; i++) { // pętla iterująca po kolejnych kandydatach do umiejętności
  88.                        
  89.                 if ( listaUmiejetnosci.contains( tab_k[i][0] ) && listaUmiejetnosci.contains( tab_k[i][1] ) ){ // sprawdzenie czy dany kandydat w swoich umiejętnościach ma parę która jest wymagana
  90.                            
  91.                     int index = i+1;
  92.                     System.out.println( "k" + index ); // wypisanie kandydata który się nadaje
  93.                    
  94.                     for (int j = 0; j < listaUmiejetnosci.size(); j++) { // pętla która iteruje po arrayList żeby znaleźć element który ma kosmonauta
  95.                                
  96.                         if ( listaUmiejetnosci.get( j ) == tab_k[i][0] ) {
  97.                                    
  98.                             listaUmiejetnosci.remove( j );
  99.  
  100.                         }
  101.                         else if ( listaUmiejetnosci.get( j ) == tab_k[i][1] ) { // dokładnie to samo co poprzedni if tylko dla drugiej umiejki
  102.                                
  103.                             listaUmiejetnosci.remove( j );
  104.  
  105.                         }
  106.                     }
  107.                 }      
  108.             }
  109.         } while ( listaUmiejetnosci.size()>0 );
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement