code-neon

Java Permütasyon Bulma

Kullanıcının girdiği sayı dizisinin tüm olası permütasyonlarını bulan Java programı.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("Sayıları virgülle ayırarak girin: ");
        String input = scanner.nextLine();

        int[] numbers = parseInput(input);

        List < List < Integer >> permutations = findPermutations(numbers);

        System.out.println("Tüm permütasyonlar:");
        for (var perm : permutations) {
            System.out.println(stringJoin(perm));
        }
        scanner.close();
    }

    private static int[] parseInput(String input) {
        String[] numberStrings = input.split(",");
        int[] numbers = new int[numberStrings.length];
        for (int i = 0; i < numberStrings.length; i++) {
            numbers[i] = Integer.parseInt(numberStrings[i].trim());
        }
        return numbers;
    }

    private static List < List < Integer >> findPermutations(int[] numbers) {
        List < List < Integer >> permutations = new ArrayList<>();
        List < Integer > currentPerm = new ArrayList<>();
        boolean[] used = new boolean[numbers.length];
        generatePermutations(numbers, currentPerm, used, permutations);
        return permutations;
    }

    private static void generatePermutations(int[] numbers, List < Integer > currentPerm, boolean[] used,
            List < List < Integer >> permutations) {
        if (currentPerm.size() == numbers.length) {
            permutations.add(new ArrayList <> (currentPerm));
            return;
        }
        for (int i = 0; i < numbers.length; i++) {
            if (!used[i]) {
                used[i] = true;
                currentPerm.add(numbers[i]);
                generatePermutations(numbers, currentPerm, used, permutations);
                currentPerm.remove(currentPerm.size() - 1);
                used[i] = false;
            }
        }
    }

    private static String stringJoin(List < Integer > list) {
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            result.append(list.get(i));
            if (i < list.size() - 1) {
                result.append(", ");
            }
        }
        return result.toString();
    }
}

Kullanıcıdan sayıları virgülle ayırarak al

        System.out.println("Sayıları virgülle ayırarak girin: ");
        String input = scanner.nextLine();

Kullanıcı girdisini ayrıştırarak int dizisine dönüştür

        int[] numbers = parseInput(input);

Permütasyonları bul ve listeye ekle

        List < List < Integer >> permutations = findPermutations(numbers);

Bulunan tüm permütasyonları ekrana yazdır

        System.out.println("Tüm permütasyonlar:");
        for (var perm : permutations) {
            System.out.println(stringJoin(perm));
        }
        scanner.close();
    }

Kullanıcıdan alınan girdiyi virgüllere göre ayrıştıran yardımcı metot

    private static int[] parseInput(String input) {
        String[] numberStrings = input.split(",");
        int[] numbers = new int[numberStrings.length];
        for (int i = 0; i < numberStrings.length; i++) {
            numbers[i] = Integer.parseInt(numberStrings[i].trim());
        }
        return numbers;
    }

Permütasyonları bulan yardımcı metot

    private static List < List < Integer >> findPermutations(int[] numbers) {
        List < List < Integer >> permutations = new ArrayList<>();
        List < Integer > currentPerm = new ArrayList<>();
        boolean[] used = new boolean[numbers.length];
        generatePermutations(numbers, currentPerm, used, permutations);
        return permutations;
    }

Permütasyonları oluşturan yardımcı metot

    private static void generatePermutations(int[] numbers, List < Integer > currentPerm, boolean[] used,
            List < List < Integer >> permutations) {
        // Tüm elemanlar kullanıldıysa, permütasyonu listeye ekle ve dön
        if (currentPerm.size() == numbers.length) {
            permutations.add(new ArrayList <> (currentPerm));
            return;
        }
        // Permütasyonları oluştur
        for (int i = 0; i < numbers.length; i++) {
            if (!used[i]) {
                used[i] = true;
                currentPerm.add(numbers[i]);
                generatePermutations(numbers, currentPerm, used, permutations);
                currentPerm.remove(currentPerm.size() - 1);
                used[i] = false;
            }
        }
    }