Создайте все возможные комбинации с 4 мастями в колоде карт - PullRequest
0 голосов
/ 04 мая 2019

Мне нужно создать цикл со всеми возможными комбинациями карт и мастей без повторения какой-либо карты. Например, из 52 карт, есть только 1 возможная комбинация - 13 червей, 13 булав, 13 бриллиантов, 13 пиков. Как мне сгенерировать это для всех возможных комбинаций?

Я пытался создать циклы:

int[] deck = new int[number];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
//initialize the cards
int i1 = 0, i2 = 0, i3 = 0, i4 = 0;
for(i1 = 0; i1< deck.length; i1++) {
    for(i2 = i1 + 1; i2< deck.length; i2++) {
        for(i3 = i2 + 1; i3< deck.length; i3++) {
            for(i4 = i3 + 1; i4< deck.length; i4++) {

                int spades = deck[i1];
                int hearts = deck[i2];
                int dimonds = deck[i3];
                int clubs = deck[i4];
                int total = spades + hearts + dimonds + clubs;
                //String s = spades + hearts + dimonds + clubs;
                if (total == number) {
                    if(i1 < 13)
                        System.out.println(spades +" "+suits[i1]+" " + hearts + suits[i2] + " " + dimonds + suits[i3] + " " + clubs + suits[i4]);

но я не думаю, что это работает.

import java.util.*;

public class Deck {

    public static void main(String[] args){

        //initialize everything
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();    
        int number = 0;
        System.out.print("Enter the sum of the combinations that you want: ");
        while (!scanner.hasNextInt()) {
              scanner.nextLine();
              System.out.print("Enter the sum of the combinations that you want: ");
        }
        number = scanner.nextInt();
        scanner.nextLine();
        while (number < 0) {
        }

        String[] deck = new String[number];
        String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
        String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};


        //initialize the cards
        for (int i = 0; i <deck.length; i++) {
        deck[i] = ranks[i%13] +" of "+ suits[i/13];
        System.out.println(deck[i]  +"\n");    
        }


    } //end main

} // end class    

Введите сумму комбинаций, которые вы хотите: 52 Вот список всех комбинаций: 13 13 13 13 Общее количество комбинаций: 270725 Количество пиков, которое дает сумму 52, равно 1 Вот список всех комбинаций: 12 13 13 13 12 13 13 13, 12 13 13 13, 12 13 13 13, 13 12 13 13, 13 12 13 13, 13 12 13 13, 13 13 12 13, 13 13 12 13 , 13 13 13 12, 13 13 12 13, 13 12 13 13, 13 13 12 13, 12 13 13 13, 13 12 13 13, 13 13 12 13, Общее количество комбинаций: 270725 Количество пиков, которые дают сумму из 51 16

...