как составить таблицу лиги чемпионов (заполнить 2D массив из числа списков массивов случайным образом) - PullRequest
0 голосов
/ 03 ноября 2018

для тех, кто не знает лигу чемпионов, она состоит из 32 команд, разделенных на 8 групп, в каждой группе по 4 команды, они играют между собой дома и в гостях, затем первые две команды из каждой группы идут на матчи плей-офф

примечание: я подумал о группах и о лучших вещах, которые я придумал, это о массиве 2D, если у вас есть другое решение, пожалуйста, скажите мне

У меня есть пять списков ArrayLists, содержащих 100 команд из разных лиг. PremireLeague, laLiga, ligue1, serieA, bundesliga

Теперь, как случайным образом заполнить каждую группу разными командами, помните, что в группе не должно быть двух команд одной лиги, а в каждой группе должны быть команды разных уровней

Я подумал создать временный список, чтобы я мог легко смешать их, чтобы потом передать их в 2D-массив

List<Team> temp = new ArrayList<>();

    Random r = new Random();
    int num = 0;
    internal:
    while (true) {
        num = r.nextInt(7);
        if (!temp.contains(premireLeague.getTeam(num))) {
            temp.add(premireLeague.getTeam(num));
            break internal;
        }
    }
    internal:
    while (true) {
        num = r.nextInt(7);
        if (!temp.contains(laLiga.getTeam(num))) {
            temp.add(laLiga.getTeam(num));
            break internal;
        }
    }

    for (int i = 0; i < 6; i++) {

        internal:
        while (true) {
            num = r.nextInt(7);
            if (!temp.contains(premireLeague.getTeam(num))) {
                temp.add(premireLeague.getTeam(num));
                break internal;
            }
        }
        internal:
        while (true) {
            num = r.nextInt(7);
            if (!temp.contains(laLiga.getTeam(num))) {
                temp.add(laLiga.getTeam(num));
                break internal;
            }
        }
        internal:
        while (true) {
            num = r.nextInt(6);
            if (!temp.contains(ligue1.getTeam(num))) {
                temp.add(ligue1.getTeam(num));
                break internal;
            }
        } internal:
        while (true) {
            num = r.nextInt(6);
            if (!temp.contains(serieA.getTeam(num))) {
                temp.add(serieA.getTeam(num));
                break internal;
            }
        } internal:
        while (true) {
            num = r.nextInt(6);
            if (!temp.contains(bundesliga.getTeam(num))) {
                temp.add(bundesliga.getTeam(num));
                break internal;
            }
        }
    }

    Team[][] groupsTable = new Team[8][4];
    int tempnum = 0;
    for (int i = 0; i < 8; i++) {
        for (int z = 0; z < 4; z++) {
            groupsTable[i][z] = temp.get(tempnum);
            tempnum++;
        }
    }

это то, что я придумал, но я думаю, что это скучно и не слишком умно

...