Advertisement
dydziek

AiSD part 1 - FINAL

Oct 21st, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.12 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, int pierwszySprawdzanyKosmonauta, boolean znalezionoRozwiazanie){
  31.  
  32.         //TODO  Poprawić działanie, pewne jeszcze jeden if żeby sprawdził czy istnieje rozwiązanie, jeśli nie to zacząć od kolejnego
  33.  
  34.         if ( listaBrakujacychUmiejetnosci.size() > 0 ) {
  35.            
  36.             if ( ktoryKosmonauta==4 && znalezionoRozwiazanie==false){
  37.  
  38.                 System.out.println("Nie znaleziono rozwiązania");
  39.  
  40.                 listaBrakujacychUmiejetnosci = new ArrayList<>();
  41.  
  42.                 listaBrakujacychUmiejetnosci.add('a');
  43.                 listaBrakujacychUmiejetnosci.add('b');
  44.                 listaBrakujacychUmiejetnosci.add('c');
  45.                 listaBrakujacychUmiejetnosci.add('d');
  46.  
  47.                 ktoryKosmonauta = ++pierwszySprawdzanyKosmonauta;
  48.                 pierwszySprawdzanyKosmonauta = ktoryKosmonauta;
  49.  
  50.                 generuj(listaBrakujacychUmiejetnosci , listaPosiadanychUmiejetnosci, ktoryKosmonauta, pierwszySprawdzanyKosmonauta, znalezionoRozwiazanie);
  51.  
  52.             }
  53.  
  54.             else if ( znalezionoRozwiazanie == true ) {
  55.                 System.out.println("Koniec");
  56.             }
  57.  
  58.             else if ( ktoryKosmonauta<5 && znalezionoRozwiazanie==false ) {
  59.                 if ( listaBrakujacychUmiejetnosci.contains( listaPosiadanychUmiejetnosci[ktoryKosmonauta][0] ) && listaBrakujacychUmiejetnosci.contains( listaPosiadanychUmiejetnosci[ktoryKosmonauta][1]) ) {
  60.                
  61.                     int indexKtoryKosmonauta = ktoryKosmonauta+1;
  62.  
  63.                     System.out.println( "Kosmonauta k" + indexKtoryKosmonauta + " posiada umiętności: " + listaPosiadanychUmiejetnosci[ktoryKosmonauta][0] );
  64.  
  65.                     listaBrakujacychUmiejetnosci.remove( listaBrakujacychUmiejetnosci.indexOf( listaPosiadanychUmiejetnosci[ktoryKosmonauta][0] ) );
  66.  
  67.                     System.out.println( "Kosmonauta k" + indexKtoryKosmonauta + " posiada umiętności: " + listaPosiadanychUmiejetnosci[ktoryKosmonauta][1] );
  68.  
  69.                     listaBrakujacychUmiejetnosci.remove( listaBrakujacychUmiejetnosci.indexOf( listaPosiadanychUmiejetnosci[ktoryKosmonauta][1] ) );
  70.  
  71.                     if ( listaBrakujacychUmiejetnosci.isEmpty() ) { znalezionoRozwiazanie = true; }
  72.  
  73.                 }
  74.  
  75.                 generuj(listaBrakujacychUmiejetnosci, listaPosiadanychUmiejetnosci, ++ktoryKosmonauta, pierwszySprawdzanyKosmonauta, znalezionoRozwiazanie);
  76.                
  77.             }
  78.                
  79.         }
  80.            
  81.         else {
  82.             System.out.println("Koniec");
  83.         }
  84.  
  85.     }
  86.  
  87.     public static void startGeneruj() { // przygotowanie do generowania opcji, ustawienie jak w brutalnej sile
  88.         char[][] tabKosmonautow = {  { 'a', 'd' }, { 'b', 'd' }, { 'b', 'c' }, { 'a', 'b' }, { 'c', 'd' } };
  89.  
  90.         List<Character> listaUmiejetnosci = new ArrayList<>();
  91.  
  92.         listaUmiejetnosci.add('a');
  93.         listaUmiejetnosci.add('b');
  94.         listaUmiejetnosci.add('c');
  95.         listaUmiejetnosci.add('d');
  96.  
  97.         boolean znalezionoRozwiazanie = false;
  98.  
  99.         int numerKosmonauty = 0;
  100.         int pierwszySprawdzanyKosmonauta = numerKosmonauty;
  101.  
  102.         generuj(listaUmiejetnosci, tabKosmonautow, numerKosmonauty, pierwszySprawdzanyKosmonauta, znalezionoRozwiazanie); // wywołanie rekurencyjnej metody
  103.  
  104.     }
  105.  
  106.     public void brutalna() {
  107.         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
  108.        
  109.         List<Character> listaUmiejetnosci = new ArrayList<>(); // lista wymaganych przez misje umiejętności
  110.  
  111.         listaUmiejetnosci.add('a'); // kolejne 4 linie to dodanie do listy wymaganych umiejętności
  112.         listaUmiejetnosci.add('b'); // jest opcja przy deklaracji .toList ale cholera wie czemu nie działa na moim kompilatorze
  113.         listaUmiejetnosci.add('c'); //
  114.         listaUmiejetnosci.add('d'); //
  115.  
  116.         do { // pętla która się powtarza dopóki są jakieś miejsca do obsadzenia
  117.            
  118.             for (int i = 0; i < tab_k.length; i++) { // pętla iterująca po kolejnych kandydatach do umiejętności
  119.                        
  120.                 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
  121.                            
  122.                     int index = i+1;
  123.                     System.out.println( "k" + index ); // wypisanie kandydata który się nadaje
  124.                    
  125.                     for (int j = 0; j < listaUmiejetnosci.size(); j++) { // pętla która iteruje po arrayList żeby znaleźć element który ma kosmonauta
  126.                                
  127.                         if ( listaUmiejetnosci.get( j ) == tab_k[i][0] ) {
  128.                                    
  129.                             listaUmiejetnosci.remove( j );
  130.  
  131.                         }
  132.                         else if ( listaUmiejetnosci.get( j ) == tab_k[i][1] ) { // dokładnie to samo co poprzedni if tylko dla drugiej umiejki
  133.                                
  134.                             listaUmiejetnosci.remove( j );
  135.  
  136.                         }
  137.                     }
  138.                 }
  139.                
  140.                 else if( !listaUmiejetnosci.contains( tab_k[i][0] ) && !listaUmiejetnosci.contains( tab_k[i][1] ) ){
  141.  
  142.                 }
  143.             }
  144.         } while ( listaUmiejetnosci.size()>0 );
  145.     }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement