Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package algorytmy;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- /**
- *
- * @author patrykd
- */
- public class Algorytmy {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- //1,3 ^ 4,5 to są możliwe rozwiązania
- startGeneruj();
- }
- public static void generuj(List<Character> listaBrakujacychUmiejetnosci, char[][] listaPosiadanychUmiejetnosci,
- int ktoryKosmonauta, int pierwszySprawdzanyKosmonauta, boolean znalezionoRozwiazanie){
- //TODO Poprawić działanie, pewne jeszcze jeden if żeby sprawdził czy istnieje rozwiązanie, jeśli nie to zacząć od kolejnego
- if ( listaBrakujacychUmiejetnosci.size() > 0 ) {
- if ( ktoryKosmonauta==4 && znalezionoRozwiazanie==false){
- System.out.println("Nie znaleziono rozwiązania");
- listaBrakujacychUmiejetnosci = new ArrayList<>();
- listaBrakujacychUmiejetnosci.add('a');
- listaBrakujacychUmiejetnosci.add('b');
- listaBrakujacychUmiejetnosci.add('c');
- listaBrakujacychUmiejetnosci.add('d');
- ktoryKosmonauta = ++pierwszySprawdzanyKosmonauta;
- pierwszySprawdzanyKosmonauta = ktoryKosmonauta;
- generuj(listaBrakujacychUmiejetnosci , listaPosiadanychUmiejetnosci, ktoryKosmonauta, pierwszySprawdzanyKosmonauta, znalezionoRozwiazanie);
- }
- else if ( znalezionoRozwiazanie == true ) {
- System.out.println("Koniec");
- }
- else if ( ktoryKosmonauta<5 && znalezionoRozwiazanie==false ) {
- if ( listaBrakujacychUmiejetnosci.contains( listaPosiadanychUmiejetnosci[ktoryKosmonauta][0] ) && listaBrakujacychUmiejetnosci.contains( listaPosiadanychUmiejetnosci[ktoryKosmonauta][1]) ) {
- int indexKtoryKosmonauta = ktoryKosmonauta+1;
- System.out.println( "Kosmonauta k" + indexKtoryKosmonauta + " posiada umiętności: " + listaPosiadanychUmiejetnosci[ktoryKosmonauta][0] );
- listaBrakujacychUmiejetnosci.remove( listaBrakujacychUmiejetnosci.indexOf( listaPosiadanychUmiejetnosci[ktoryKosmonauta][0] ) );
- System.out.println( "Kosmonauta k" + indexKtoryKosmonauta + " posiada umiętności: " + listaPosiadanychUmiejetnosci[ktoryKosmonauta][1] );
- listaBrakujacychUmiejetnosci.remove( listaBrakujacychUmiejetnosci.indexOf( listaPosiadanychUmiejetnosci[ktoryKosmonauta][1] ) );
- if ( listaBrakujacychUmiejetnosci.isEmpty() ) { znalezionoRozwiazanie = true; }
- }
- generuj(listaBrakujacychUmiejetnosci, listaPosiadanychUmiejetnosci, ++ktoryKosmonauta, pierwszySprawdzanyKosmonauta, znalezionoRozwiazanie);
- }
- }
- else {
- System.out.println("Koniec");
- }
- }
- public static void startGeneruj() { // przygotowanie do generowania opcji, ustawienie jak w brutalnej sile
- char[][] tabKosmonautow = { { 'a', 'd' }, { 'b', 'd' }, { 'b', 'c' }, { 'a', 'b' }, { 'c', 'd' } };
- List<Character> listaUmiejetnosci = new ArrayList<>();
- listaUmiejetnosci.add('a');
- listaUmiejetnosci.add('b');
- listaUmiejetnosci.add('c');
- listaUmiejetnosci.add('d');
- boolean znalezionoRozwiazanie = false;
- int numerKosmonauty = 0;
- int pierwszySprawdzanyKosmonauta = numerKosmonauty;
- generuj(listaUmiejetnosci, tabKosmonautow, numerKosmonauty, pierwszySprawdzanyKosmonauta, znalezionoRozwiazanie); // wywołanie rekurencyjnej metody
- }
- public void brutalna() {
- 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
- List<Character> listaUmiejetnosci = new ArrayList<>(); // lista wymaganych przez misje umiejętności
- listaUmiejetnosci.add('a'); // kolejne 4 linie to dodanie do listy wymaganych umiejętności
- listaUmiejetnosci.add('b'); // jest opcja przy deklaracji .toList ale cholera wie czemu nie działa na moim kompilatorze
- listaUmiejetnosci.add('c'); //
- listaUmiejetnosci.add('d'); //
- do { // pętla która się powtarza dopóki są jakieś miejsca do obsadzenia
- for (int i = 0; i < tab_k.length; i++) { // pętla iterująca po kolejnych kandydatach do umiejętności
- 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
- int index = i+1;
- System.out.println( "k" + index ); // wypisanie kandydata który się nadaje
- for (int j = 0; j < listaUmiejetnosci.size(); j++) { // pętla która iteruje po arrayList żeby znaleźć element który ma kosmonauta
- if ( listaUmiejetnosci.get( j ) == tab_k[i][0] ) {
- listaUmiejetnosci.remove( j );
- }
- else if ( listaUmiejetnosci.get( j ) == tab_k[i][1] ) { // dokładnie to samo co poprzedni if tylko dla drugiej umiejki
- listaUmiejetnosci.remove( j );
- }
- }
- }
- else if( !listaUmiejetnosci.contains( tab_k[i][0] ) && !listaUmiejetnosci.contains( tab_k[i][1] ) ){
- }
- }
- } while ( listaUmiejetnosci.size()>0 );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement