Skip to content

Instantly share code, notes, and snippets.

@Mygod
Created February 28, 2017 08:33
Show Gist options
  • Save Mygod/bb19b0a29fe6c121f1050cd978be8993 to your computer and use it in GitHub Desktop.
Save Mygod/bb19b0a29fe6c121f1050cd978be8993 to your computer and use it in GitHub Desktop.
/**
* This program answers a fundamental question to life:
*
* Are there three dices A, B and C that satisfies P[A > B], P[B > C], P[C > A] > 5/9?
*
* It turns out there is.
*/
#include <cstdio>
int main() {
for (int a1 = 1; a1 < 6; ++a1) for (int a2 = a1 + 1; a2 <= 6; ++a2) for (int ar = 1; ar < 6; ++ar)
for (int b1 = 1; b1 < 6; ++b1) for (int b2 = b1 + 1; b2 <= 6; ++b2) for (int br = 1; br < 6; ++br)
if ((a1 > b1) * ar * br + (a1 > b2) * ar * (6 - br) + (a2 > b1) * (6 - ar) * br + (a2 > b2) * (6 - ar) * (6 - br) > 20)
for (int c1 = 1; c1 < 6; ++c1) for (int c2 = c1 + 1; c2 <= 6; ++c2) for (int cr = 1; cr < 6; ++cr)
if ((b1 > c1) * br * cr + (b1 > c2) * br * (6 - cr) + (b2 > c1) * (6 - br) * cr + (b2 > c2) * (6 - br) * (6 - cr) > 20 &&
(c1 > a1) * cr * ar + (c1 > a2) * cr * (6 - ar) + (c2 > a1) * (6 - cr) * ar + (c2 > a2) * (6 - cr) * (6 - ar) > 20) {
printf("A: ");
for (int i = 0; i < 6; ++i) printf("%d ", i < ar ? a1 : a2);
printf("\nB: ");
for (int i = 0; i < 6; ++i) printf("%d ", i < br ? b1 : b2);
printf("\nC: ");
for (int i = 0; i < 6; ++i) printf("%d ", i < cr ? c1 : c2);
printf("\nA > B: %d/36, B > C: %d/36, C > A: %d/36\n\n",
(a1 > b1) * ar * br + (a1 > b2) * ar * (6 - br) + (a2 > b1) * (6 - ar) * br + (a2 > b2) * (6 - ar) * (6 - br),
(b1 > c1) * br * cr + (b1 > c2) * br * (6 - cr) + (b2 > c1) * (6 - br) * cr + (b2 > c2) * (6 - br) * (6 - cr),
(c1 > a1) * cr * ar + (c1 > a2) * cr * (6 - ar) + (c2 > a1) * (6 - cr) * ar + (c2 > a2) * (6 - cr) * (6 - ar));
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment