import java.util.*;
/**
* To investigate a suggested game theory KotH.
* For all six-sided dice which are partitions of 21, draw up a "who beats whom" graph.
*/
class NonTransitiveDice {
private static String BASE22
= "0123456789ABCDEFGHIJKL"; private static int MIN = 1;
private static int MAX = 6;
public static void main
(String[] args
) { Set<String> dice = new HashSet<String>();
for (int a = MIN; a <= MAX; a++) {
for (int b = a; b <= MAX; b++) {
for (int c = b; c <= MAX; c++) {
for (int d = c; d <= MAX; d++) {
for (int e = d; e <= MAX; e++) {
int f = 21 - a - b - c - d - e;
if (f >= e && f <= MAX) {
dice.add(BASE22.charAt(a) + "" +
BASE22.charAt(b) + "" +
BASE22.charAt(c) + "" +
BASE22.charAt(d) + "" +
BASE22.charAt(e) + "" +
BASE22.charAt(f));
}
}
}
}
}
}
System.
out.
println("WW\tWD\tWL\tDW\tDD\tDL\tLW\tLD\tLL\tDie"); int ww = 0, wd = 0, wl = 0, dw = 0, dd = 0, dl = 0, lw = 0, ld = 0, ll = 0;
int c1 = cmp(d1, d2); // 1 => win
int c2 = cmp2(d1, d2);
switch (3 * c1 + c2) {
case -4: ll++; break;
case -3: ld++; break;
case -2: lw++; break;
case -1: dl++; break;
case 0: dd++; break;
case 1: dw++; break;
case 2: wl++; break;
case 3: wd++; break;
case 4: ww++; break;
}
}
System.
out.
format("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s\n", ww,wd,wl, dw,dd,dl, lw,ld,ll , d1
); }
}
int w1 = 0, w2 = 0;
for (char c1 : d1.toCharArray()) {
for (char c2 : d2.toCharArray()) {
if (c1 > c2) w1++;
if (c2 > c1) w2++;
}
}
return w1 > w2 ? 1 : w1 == w2 ? 0 : -1;
}
int[] pair1 = new int[d1.length() * d1.length()];
int[] pair2 = new int[d2.length() * d2.length()];
int i = 0;
for (char c1 : d1.toCharArray()) {
for (char c2 : d1.toCharArray()) {
pair1[i++] = BASE22.indexOf(c1) + BASE22.indexOf(c2);
}
}
i = 0;
for (char c1 : d2.toCharArray()) {
for (char c2 : d2.toCharArray()) {
pair2[i++] = BASE22.indexOf(c1) + BASE22.indexOf(c2);
}
}
int w1 = 0, w2 = 0;
for (int p1 : pair1) {
for (int p2 : pair2) {
if (p1 > p2) w1++;
if (p2 > p1) w2++;
}
}
return w1 > w2 ? 1 : w1 == w2 ? 0 : -1;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKLyoqCiAqIFRvIGludmVzdGlnYXRlIGEgc3VnZ2VzdGVkIGdhbWUgdGhlb3J5IEtvdEguCiAqIEZvciBhbGwgc2l4LXNpZGVkIGRpY2Ugd2hpY2ggYXJlIHBhcnRpdGlvbnMgb2YgMjEsIGRyYXcgdXAgYSAid2hvIGJlYXRzIHdob20iIGdyYXBoLgogKi8KY2xhc3MgTm9uVHJhbnNpdGl2ZURpY2UgewoJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIEJBU0UyMiA9ICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMIjsKCXByaXZhdGUgc3RhdGljIGludCBNSU4gPSAxOwoJcHJpdmF0ZSBzdGF0aWMgaW50IE1BWCA9IDY7CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCVNldDxTdHJpbmc+IGRpY2UgPSBuZXcgSGFzaFNldDxTdHJpbmc+KCk7CgkJZm9yIChpbnQgYSA9IE1JTjsgYSA8PSBNQVg7IGErKykgewoJCQlmb3IgKGludCBiID0gYTsgYiA8PSBNQVg7IGIrKykgewoJCQkJZm9yIChpbnQgYyA9IGI7IGMgPD0gTUFYOyBjKyspIHsKCQkJCQlmb3IgKGludCBkID0gYzsgZCA8PSBNQVg7IGQrKykgewoJCQkJCQlmb3IgKGludCBlID0gZDsgZSA8PSBNQVg7IGUrKykgewoJCQkJCQkJaW50IGYgPSAyMSAtIGEgLSBiIC0gYyAtIGQgLSBlOwoJCQkJCQkJaWYgKGYgPj0gZSAmJiBmIDw9IE1BWCkgewoJCQkJCQkJCWRpY2UuYWRkKEJBU0UyMi5jaGFyQXQoYSkgKyAiIiArCgkJCQkJCQkJICAgICAgICAgQkFTRTIyLmNoYXJBdChiKSArICIiICsKCQkJCQkJCQkgICAgICAgICBCQVNFMjIuY2hhckF0KGMpICsgIiIgKwoJCQkJCQkJCSAgICAgICAgIEJBU0UyMi5jaGFyQXQoZCkgKyAiIiArCgkJCQkJCQkJICAgICAgICAgQkFTRTIyLmNoYXJBdChlKSArICIiICsKCQkJCQkJCQkgICAgICAgICBCQVNFMjIuY2hhckF0KGYpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJU3lzdGVtLm91dC5wcmludGxuKCJXV1x0V0RcdFdMXHREV1x0RERcdERMXHRMV1x0TERcdExMXHREaWUiKTsKCQlmb3IgKFN0cmluZyBkMSA6IGRpY2UpIHsKCQkJaW50IHd3ID0gMCwgd2QgPSAwLCB3bCA9IDAsIGR3ID0gMCwgZGQgPSAwLCBkbCA9IDAsIGx3ID0gMCwgbGQgPSAwLCBsbCA9IDA7CgkJCWZvciAoU3RyaW5nIGQyIDogZGljZSkgewoJCQkJaW50IGMxID0gY21wKGQxLCBkMik7IC8vIDEgPT4gd2luCgkJCQlpbnQgYzIgPSBjbXAyKGQxLCBkMik7CgoJCQkJc3dpdGNoICgzICogYzEgKyBjMikgewoJCQkJCWNhc2UgLTQ6IGxsKys7IGJyZWFrOwoJCQkJCWNhc2UgLTM6IGxkKys7IGJyZWFrOwoJCQkJCWNhc2UgLTI6IGx3Kys7IGJyZWFrOwoKCQkJCQljYXNlIC0xOiBkbCsrOyBicmVhazsKCQkJCQljYXNlIDA6IGRkKys7IGJyZWFrOwoJCQkJCWNhc2UgMTogZHcrKzsgYnJlYWs7CgoJCQkJCWNhc2UgMjogd2wrKzsgYnJlYWs7CgkJCQkJY2FzZSAzOiB3ZCsrOyBicmVhazsKCQkJCQljYXNlIDQ6IHd3Kys7IGJyZWFrOwoJCQkJfQoJCQl9CgkJCVN5c3RlbS5vdXQuZm9ybWF0KCIlZFx0JWRcdCVkXHQlZFx0JWRcdCVkXHQlZFx0JWRcdCVkXHQlc1xuIiwgd3csd2Qsd2wsIGR3LGRkLGRsLCBsdyxsZCxsbCAsIGQxKTsKCQl9Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgaW50IGNtcChTdHJpbmcgZDEsIFN0cmluZyBkMikgewoJCWludCB3MSA9IDAsIHcyID0gMDsKCQlmb3IgKGNoYXIgYzEgOiBkMS50b0NoYXJBcnJheSgpKSB7CgkJCWZvciAoY2hhciBjMiA6IGQyLnRvQ2hhckFycmF5KCkpIHsKCQkJCWlmIChjMSA+IGMyKSB3MSsrOwoJCQkJaWYgKGMyID4gYzEpIHcyKys7CgkJCX0KCQl9CgkJcmV0dXJuIHcxID4gdzIgPyAxIDogdzEgPT0gdzIgPyAwIDogLTE7Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgaW50IGNtcDIoU3RyaW5nIGQxLCBTdHJpbmcgZDIpIHsKCQlpbnRbXSBwYWlyMSA9IG5ldyBpbnRbZDEubGVuZ3RoKCkgKiBkMS5sZW5ndGgoKV07CgkJaW50W10gcGFpcjIgPSBuZXcgaW50W2QyLmxlbmd0aCgpICogZDIubGVuZ3RoKCldOwoJCQoJCWludCBpID0gMDsKCQlmb3IgKGNoYXIgYzEgOiBkMS50b0NoYXJBcnJheSgpKSB7CgkJCWZvciAoY2hhciBjMiA6IGQxLnRvQ2hhckFycmF5KCkpIHsKCQkJCXBhaXIxW2krK10gPSBCQVNFMjIuaW5kZXhPZihjMSkgKyBCQVNFMjIuaW5kZXhPZihjMik7CgkJCX0KCQl9CgkJaSA9IDA7CgkJZm9yIChjaGFyIGMxIDogZDIudG9DaGFyQXJyYXkoKSkgewoJCQlmb3IgKGNoYXIgYzIgOiBkMi50b0NoYXJBcnJheSgpKSB7CgkJCQlwYWlyMltpKytdID0gQkFTRTIyLmluZGV4T2YoYzEpICsgQkFTRTIyLmluZGV4T2YoYzIpOwoJCQl9CgkJfQoKCQlpbnQgdzEgPSAwLCB3MiA9IDA7CgkJZm9yIChpbnQgcDEgOiBwYWlyMSkgewoJCQlmb3IgKGludCBwMiA6IHBhaXIyKSB7CgkJCQlpZiAocDEgPiBwMikgdzErKzsKCQkJCWlmIChwMiA+IHAxKSB3MisrOwoJCQl9CgkJfQoJCXJldHVybiB3MSA+IHcyID8gMSA6IHcxID09IHcyID8gMCA6IC0xOwoJfQp9