Re: Игра в кости без ничьи
От: Tan4ik Россия  
Дата: 29.05.15 19:38
Оценка: 12 (2)
Здравствуйте, Caracrist, Вы писали:

C>Вопрос: какие числа нужно написать на кубиках так, чтобы игра оставалась честной.

C>Бонус: решить задачу используя только 13 разных чисел.

Решение с 10 числами:
{5, 5, 5, 8, 16, 16}
{2, 2, 9, 14, 14, 14}
{0, 7, 7, 11, 11, 17}}

Proof:
    public static void main(String[] args) {
        int[][] a = new int[][] {{5, 5, 5, 8, 16, 16}, {2, 2, 9, 14, 14, 14}, {0, 7, 7, 11, 11, 17}};

        int m0=0,m1=0,m2=0;
        for (int a0=0; a0<6; a0++)
            for (int a1=0; a1<6; a1++)
                for (int a2=0; a2<6; a2++) {
                    if (a[0][a0] > Math.max(a[1][a1], a[2][a2])) m0++;
                    if (a[1][a1] > Math.max(a[0][a0], a[2][a2])) m1++;
                    if (a[2][a2] > Math.max(a[1][a1], a[0][a0])) m2++;
                }
        System.out.println(m0 + " " + m1 + " " + m2);

        m0=0;m1=0;m2=0;
        for (int a0=0; a0<6; a0++)
            for (int a1=0; a1<6; a1++)
                for (int a2=0; a2<6; a2++) {
                    if (a[0][a0] < Math.min(a[1][a1], a[2][a2])) {
                        for (int b1=0; b1<6; b1++)
                            for (int b2=0; b2<6; b2++) {
                                if (a[1][b1]>a[2][b2]) m1++;
                                else m2++;
                            }
                    }
                    if (a[1][a1] < Math.min(a[0][a0], a[2][a2])) {
                        for (int b0=0; b0<6; b0++)
                            for (int b2=0; b2<6; b2++) {
                                if (a[0][b0]>a[2][b2]) m0++;
                                else m2++;
                            }
                    }
                    if (a[2][a2] < Math.min(a[1][a1], a[0][a0])) {
                        for (int b0=0; b0<6; b0++)
                            for (int b1=0; b1<6; b1++) {
                                if (a[0][b0]>a[1][b1]) m0++;
                                else m1++;
                            }
                    }
                }
        System.out.println(m0 + " " + m1 + " " + m2);
    }


Вывод:
72 72 72
2592 2592 2592


Забавно, что такими кубиками честно играть только втроем. Вдвоем уже не получится.
---
С уважением,
Лазарев Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.