Мне нужна помощь в начале этой дискретной математики с использованием Java. Я в полной растерянности - PullRequest
0 голосов
/ 17 октября 2019

Ваша задача - сгенерировать все возможные функции из X = {a, b, c} в набор Y. Набор Y содержит целые числа 1,…, n для некоторого целого числа n≥1. Значение n предоставляется пользователем. Чтобы определить функцию, вам нужно указать, что она выводит для каждого элемента X. Например, если Y = {1, 2}, то f (a) = 1, f (b) = 2, f (c) = 2определяет функцию f от X до Y

Значение n предоставляется пользователем. Чтобы определить функцию, вам нужно указать, что она выводит для каждого элемента X. Например, если Y = {1, 2}, то f (a) = 1, f (b) = 2, f (c) = 2определяет функцию f от X до Y.

Напишите программу, которая предлагает пользователю ввести размер Y, затем генерирует, перечисляет и распечатывает в аккуратном формате все возможные функции от X до Y. Ваша программадолжны ли сгенерировать сгенерированные функции f1, f2, f3, f4 и т. д. Для каждой сгенерированной функции укажите, является ли она взаимно-однозначной, на или биекцией. Вычислите общее количество сгенерированных функций, сколько из них один-к-одному, сколько из них включено и сколько из них являются биекциями.

Программа сгенерирует все функции из X = {a, b, c} к Y = {1,…, n}.

Пожалуйста, введите значение n: 2

f1 (a) = 1 f1 (b) = 1 f1 (c) = 1

f1 не является однозначнымодин, не на и не биекция

f2 (a) = 1 f2 (b) = 1 f2 (c) = 2

f2 не один-к-одному, наи не биекция.

f3 (a) = 1 f3 (b) = 2 f3 (c) = 1

f3 не является взаимно-однозначным и неbijection.

f4 (a) = 1 f4 (b) = 2 f4 (c) = 2

f4 не является взаимно-однозначным и не является биекцией.

f5 (a) = 2 f5 (b) = 1 f5 (c) = 1

f5 не является взаимно-однозначным и не является биекцией.

f6 (a) = 2 f6 (b) = 1 f6 (c) = 2

f6 не является взаимно-однозначным и не является биекцией.

f7 (a)= 2 f7 (b) = 2 f7 (c) = 1

f7 не является взаимно-однозначным и не является биекцией.

f8 (a) = 2 f8 (b) = 2 f8 (c) = 2

f8 - это не один-к-одному, не на и не биекция.

Всего 8 функций.

0 из них один-к-одному.

6 из них на.

0 из них - биекции.

1 Ответ

0 голосов
/ 18 октября 2019
public class Main {

    public static void main(String[] args) {
        Set<Integer> yGroup = new HashSet<>();
        int n;

        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter value of n:");
        n = Integer.parseInt(scanner.nextLine());
        scanner.close();

        for (int i = 1; i <= n; i++) {
            yGroup.add(i);
        }

        int nf = 1;
        int oneToneCounter = 0;
        int ontoCounter = 0;
        int bijectCounter = 0;

        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                for (int k = 1; k <= n; k++) {
                    System.out.print("f" + nf + "(a)=" + i + " ");
                    System.out.print("f" + nf + "(b)=" + j + " ");
                    System.out.print("f" + nf + "(c)=" + k + " ");
                    System.out.println();

                    boolean injective = false;
                    if ((i == j) || (i == k) || (j == k)) {
                        System.out.print("f" + nf + " is not a one to one. ");
                    } else {
                        System.out.print("f" + nf + " is a one to one. ");
                        oneToneCounter++;
                        injective = true;
                    }

                    yGroup.remove((Integer) i);
                    yGroup.remove((Integer) j);
                    yGroup.remove((Integer) k);

                    boolean onto = false;
                    if (yGroup.isEmpty()) {
                        System.out.print("Is an onto. ");
                        onto = true;
                        ontoCounter++;
                    } else {
                        System.out.print("Is not an onto. ");
                    }

                    yGroup.add((Integer) i);
                    yGroup.add((Integer) j);
                    yGroup.add((Integer) k);

                    if (injective && onto) {
                        System.out.print("Is bijective. ");
                        bijectCounter++;
                    } else {
                        System.out.print("Is not bijective. ");
                    }

                    System.out.println();
                    System.out.println();
                    nf++;
                }
            }
        }

        System.out.println();
        System.out.println("There are " + nf + " functions total");
        System.out.println(oneToneCounter + " of them are one-to-one");
        System.out.println(ontoCounter + " of them are onto");
        System.out.println(bijectCounter + " of them are bijections");
    }

}
...