package sk.upjs.paz.cvicenie06;
import java.util.Arrays;
public class NepriatelskeCisla {
public static void main(String[] args) {
int[] input = {2, 3, 5, 8, 25};
boolean chcemVypis = true;
int pocetRieseni = vyries(input, chcemVypis);
System.out.println("Pocet rieseni je " + pocetRieseni);
}
private static int vyries(int[] input, boolean chcemVypis) {
int[] output = new int[input.length];
boolean[] pouzite = new boolean[output.length];
return generuj(0, input, output, pouzite);
}
private static int generuj(int odIdx, int[] input, int[] output, boolean[] pouzite) {
if (odIdx == output.length) {
return spracuj(output);
}
int pocetRieseni = 0;
for (int i = 0; i < input.length; i++) {
if (!pouzite[i]) {
pouzite[i] = true;
output[odIdx] = input[i];
pocetRieseni += generuj(odIdx + 1, input, output, pouzite);
pouzite[i] = false;
}
}
return pocetRieseni;
}
private static int spracuj(int[] output) {
for (int i = 1; i < output.length; i++) {
if (suNepriatelske(output[i], output[i - 1])) {
return 0;
}
}
// je to korektne
System.out.println(Arrays.toString(output));
//pocitadlo++;
return 1;
}
private static boolean suNepriatelske(int a, int b) {
return (a % b == 0) || (b % a == 0);
}
}