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) {
- //TODO: dodać warunki początkowe i końcowe dla funkcji rekursywnej bo na razie leci w pizdu w ciul <- to dla mnie
- if( listaBrakujacychUmiejetnosci.size() > 0 ) { // jeśli są brakujące umiejętności to powtarzaj
- if (listaBrakujacychUmiejetnosci.contains(listaPosiadanychUmiejetnosci[ktoryKosmonauta][0])
- && listaBrakujacychUmiejetnosci.contains(listaPosiadanychUmiejetnosci[ktoryKosmonauta][1])) { // jeśli są brakujące umiejętności któ©e posiada aktualnie sprawdzany kosmonauta to wykonaj
- int k = ktoryKosmonauta + 1;
- System.out.println("k" + k); // wypisz jeśli się zgadza
- 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
- if (listaBrakujacychUmiejetnosci.equals(listaPosiadanychUmiejetnosci[ktoryKosmonauta][0])) {
- listaBrakujacychUmiejetnosci.remove( i );
- }
- if (listaBrakujacychUmiejetnosci.equals(listaPosiadanychUmiejetnosci[ktoryKosmonauta][1])) {
- listaBrakujacychUmiejetnosci.remove( i );
- }
- }
- ++ktoryKosmonauta;
- generuj(listaBrakujacychUmiejetnosci, listaPosiadanychUmiejetnosci, ktoryKosmonauta );
- }
- }
- }
- 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');
- int numerKosmonauty = 0;
- generuj(listaUmiejetnosci, tabKosmonautow, numerKosmonauty); // 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 );
- }
- }
- }
- }
- } while ( listaUmiejetnosci.size()>0 );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement