Skip to content

Instantly share code, notes, and snippets.

@skeeto
Created June 24, 2017 19:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skeeto/5be5ccae3b45b62f372b370568eb4f3b to your computer and use it in GitHub Desktop.
Save skeeto/5be5ccae3b45b62f372b370568eb4f3b to your computer and use it in GitHub Desktop.
Dice roll table
/* https://possiblywrong.wordpress.com/2017/06/24/dice-puzzle/ */
#include <stdio.h>
static void
fill_table(short *table, int n, long r)
{
if (n == 6)
table[r]++;
else
for (int i = 0; i < 6; i++)
fill_table(table, n + 1, r + (1L << (i * 3)));
}
int
main(void)
{
static short table[1L << 18];
fill_table(table, 0, 0);
for (long r = 0; r < 1L << 18; r++) {
if (table[r]) {
for (int i = 0; i < 6; i++) {
int d = 7 & (r >> (i * 3));
for (int j = 0; j < d; j++)
printf("%d ", i + 1);
}
printf("%d\n", table[r]);
}
}
}
import itertools
table = {}
faces = [1, 2, 3, 4, 5, 6]
for roll in itertools.product(*([faces] * 6)):
canonical = tuple(sorted(roll))
table[canonical] = table.get(canonical, 0) + 1
for k in table:
print(' '.join(str(i) for i in k), table[k])
1 1 1 1 1 1 1
1 1 1 1 1 2 6
1 1 1 1 1 3 6
1 1 1 1 1 4 6
1 1 1 1 1 5 6
1 1 1 1 1 6 6
1 1 1 1 2 2 15
1 1 1 1 2 3 30
1 1 1 1 2 4 30
1 1 1 1 2 5 30
1 1 1 1 2 6 30
1 1 1 1 3 3 15
1 1 1 1 3 4 30
1 1 1 1 3 5 30
1 1 1 1 3 6 30
1 1 1 1 4 4 15
1 1 1 1 4 5 30
1 1 1 1 4 6 30
1 1 1 1 5 5 15
1 1 1 1 5 6 30
1 1 1 1 6 6 15
1 1 1 2 2 2 20
1 1 1 2 2 3 60
1 1 1 2 2 4 60
1 1 1 2 2 5 60
1 1 1 2 2 6 60
1 1 1 2 3 3 60
1 1 1 2 3 4 120
1 1 1 2 3 5 120
1 1 1 2 3 6 120
1 1 1 2 4 4 60
1 1 1 2 4 5 120
1 1 1 2 4 6 120
1 1 1 2 5 5 60
1 1 1 2 5 6 120
1 1 1 2 6 6 60
1 1 1 3 3 3 20
1 1 1 3 3 4 60
1 1 1 3 3 5 60
1 1 1 3 3 6 60
1 1 1 3 4 4 60
1 1 1 3 4 5 120
1 1 1 3 4 6 120
1 1 1 3 5 5 60
1 1 1 3 5 6 120
1 1 1 3 6 6 60
1 1 1 4 4 4 20
1 1 1 4 4 5 60
1 1 1 4 4 6 60
1 1 1 4 5 5 60
1 1 1 4 5 6 120
1 1 1 4 6 6 60
1 1 1 5 5 5 20
1 1 1 5 5 6 60
1 1 1 5 6 6 60
1 1 1 6 6 6 20
1 1 2 2 2 2 15
1 1 2 2 2 3 60
1 1 2 2 2 4 60
1 1 2 2 2 5 60
1 1 2 2 2 6 60
1 1 2 2 3 3 90
1 1 2 2 3 4 180
1 1 2 2 3 5 180
1 1 2 2 3 6 180
1 1 2 2 4 4 90
1 1 2 2 4 5 180
1 1 2 2 4 6 180
1 1 2 2 5 5 90
1 1 2 2 5 6 180
1 1 2 2 6 6 90
1 1 2 3 3 3 60
1 1 2 3 3 4 180
1 1 2 3 3 5 180
1 1 2 3 3 6 180
1 1 2 3 4 4 180
1 1 2 3 4 5 360
1 1 2 3 4 6 360
1 1 2 3 5 5 180
1 1 2 3 5 6 360
1 1 2 3 6 6 180
1 1 2 4 4 4 60
1 1 2 4 4 5 180
1 1 2 4 4 6 180
1 1 2 4 5 5 180
1 1 2 4 5 6 360
1 1 2 4 6 6 180
1 1 2 5 5 5 60
1 1 2 5 5 6 180
1 1 2 5 6 6 180
1 1 2 6 6 6 60
1 1 3 3 3 3 15
1 1 3 3 3 4 60
1 1 3 3 3 5 60
1 1 3 3 3 6 60
1 1 3 3 4 4 90
1 1 3 3 4 5 180
1 1 3 3 4 6 180
1 1 3 3 5 5 90
1 1 3 3 5 6 180
1 1 3 3 6 6 90
1 1 3 4 4 4 60
1 1 3 4 4 5 180
1 1 3 4 4 6 180
1 1 3 4 5 5 180
1 1 3 4 5 6 360
1 1 3 4 6 6 180
1 1 3 5 5 5 60
1 1 3 5 5 6 180
1 1 3 5 6 6 180
1 1 3 6 6 6 60
1 1 4 4 4 4 15
1 1 4 4 4 5 60
1 1 4 4 4 6 60
1 1 4 4 5 5 90
1 1 4 4 5 6 180
1 1 4 4 6 6 90
1 1 4 5 5 5 60
1 1 4 5 5 6 180
1 1 4 5 6 6 180
1 1 4 6 6 6 60
1 1 5 5 5 5 15
1 1 5 5 5 6 60
1 1 5 5 6 6 90
1 1 5 6 6 6 60
1 1 6 6 6 6 15
1 2 2 2 2 2 6
1 2 2 2 2 3 30
1 2 2 2 2 4 30
1 2 2 2 2 5 30
1 2 2 2 2 6 30
1 2 2 2 3 3 60
1 2 2 2 3 4 120
1 2 2 2 3 5 120
1 2 2 2 3 6 120
1 2 2 2 4 4 60
1 2 2 2 4 5 120
1 2 2 2 4 6 120
1 2 2 2 5 5 60
1 2 2 2 5 6 120
1 2 2 2 6 6 60
1 2 2 3 3 3 60
1 2 2 3 3 4 180
1 2 2 3 3 5 180
1 2 2 3 3 6 180
1 2 2 3 4 4 180
1 2 2 3 4 5 360
1 2 2 3 4 6 360
1 2 2 3 5 5 180
1 2 2 3 5 6 360
1 2 2 3 6 6 180
1 2 2 4 4 4 60
1 2 2 4 4 5 180
1 2 2 4 4 6 180
1 2 2 4 5 5 180
1 2 2 4 5 6 360
1 2 2 4 6 6 180
1 2 2 5 5 5 60
1 2 2 5 5 6 180
1 2 2 5 6 6 180
1 2 2 6 6 6 60
1 2 3 3 3 3 30
1 2 3 3 3 4 120
1 2 3 3 3 5 120
1 2 3 3 3 6 120
1 2 3 3 4 4 180
1 2 3 3 4 5 360
1 2 3 3 4 6 360
1 2 3 3 5 5 180
1 2 3 3 5 6 360
1 2 3 3 6 6 180
1 2 3 4 4 4 120
1 2 3 4 4 5 360
1 2 3 4 4 6 360
1 2 3 4 5 5 360
1 2 3 4 5 6 720
1 2 3 4 6 6 360
1 2 3 5 5 5 120
1 2 3 5 5 6 360
1 2 3 5 6 6 360
1 2 3 6 6 6 120
1 2 4 4 4 4 30
1 2 4 4 4 5 120
1 2 4 4 4 6 120
1 2 4 4 5 5 180
1 2 4 4 5 6 360
1 2 4 4 6 6 180
1 2 4 5 5 5 120
1 2 4 5 5 6 360
1 2 4 5 6 6 360
1 2 4 6 6 6 120
1 2 5 5 5 5 30
1 2 5 5 5 6 120
1 2 5 5 6 6 180
1 2 5 6 6 6 120
1 2 6 6 6 6 30
1 3 3 3 3 3 6
1 3 3 3 3 4 30
1 3 3 3 3 5 30
1 3 3 3 3 6 30
1 3 3 3 4 4 60
1 3 3 3 4 5 120
1 3 3 3 4 6 120
1 3 3 3 5 5 60
1 3 3 3 5 6 120
1 3 3 3 6 6 60
1 3 3 4 4 4 60
1 3 3 4 4 5 180
1 3 3 4 4 6 180
1 3 3 4 5 5 180
1 3 3 4 5 6 360
1 3 3 4 6 6 180
1 3 3 5 5 5 60
1 3 3 5 5 6 180
1 3 3 5 6 6 180
1 3 3 6 6 6 60
1 3 4 4 4 4 30
1 3 4 4 4 5 120
1 3 4 4 4 6 120
1 3 4 4 5 5 180
1 3 4 4 5 6 360
1 3 4 4 6 6 180
1 3 4 5 5 5 120
1 3 4 5 5 6 360
1 3 4 5 6 6 360
1 3 4 6 6 6 120
1 3 5 5 5 5 30
1 3 5 5 5 6 120
1 3 5 5 6 6 180
1 3 5 6 6 6 120
1 3 6 6 6 6 30
1 4 4 4 4 4 6
1 4 4 4 4 5 30
1 4 4 4 4 6 30
1 4 4 4 5 5 60
1 4 4 4 5 6 120
1 4 4 4 6 6 60
1 4 4 5 5 5 60
1 4 4 5 5 6 180
1 4 4 5 6 6 180
1 4 4 6 6 6 60
1 4 5 5 5 5 30
1 4 5 5 5 6 120
1 4 5 5 6 6 180
1 4 5 6 6 6 120
1 4 6 6 6 6 30
1 5 5 5 5 5 6
1 5 5 5 5 6 30
1 5 5 5 6 6 60
1 5 5 6 6 6 60
1 5 6 6 6 6 30
1 6 6 6 6 6 6
2 2 2 2 2 2 1
2 2 2 2 2 3 6
2 2 2 2 2 4 6
2 2 2 2 2 5 6
2 2 2 2 2 6 6
2 2 2 2 3 3 15
2 2 2 2 3 4 30
2 2 2 2 3 5 30
2 2 2 2 3 6 30
2 2 2 2 4 4 15
2 2 2 2 4 5 30
2 2 2 2 4 6 30
2 2 2 2 5 5 15
2 2 2 2 5 6 30
2 2 2 2 6 6 15
2 2 2 3 3 3 20
2 2 2 3 3 4 60
2 2 2 3 3 5 60
2 2 2 3 3 6 60
2 2 2 3 4 4 60
2 2 2 3 4 5 120
2 2 2 3 4 6 120
2 2 2 3 5 5 60
2 2 2 3 5 6 120
2 2 2 3 6 6 60
2 2 2 4 4 4 20
2 2 2 4 4 5 60
2 2 2 4 4 6 60
2 2 2 4 5 5 60
2 2 2 4 5 6 120
2 2 2 4 6 6 60
2 2 2 5 5 5 20
2 2 2 5 5 6 60
2 2 2 5 6 6 60
2 2 2 6 6 6 20
2 2 3 3 3 3 15
2 2 3 3 3 4 60
2 2 3 3 3 5 60
2 2 3 3 3 6 60
2 2 3 3 4 4 90
2 2 3 3 4 5 180
2 2 3 3 4 6 180
2 2 3 3 5 5 90
2 2 3 3 5 6 180
2 2 3 3 6 6 90
2 2 3 4 4 4 60
2 2 3 4 4 5 180
2 2 3 4 4 6 180
2 2 3 4 5 5 180
2 2 3 4 5 6 360
2 2 3 4 6 6 180
2 2 3 5 5 5 60
2 2 3 5 5 6 180
2 2 3 5 6 6 180
2 2 3 6 6 6 60
2 2 4 4 4 4 15
2 2 4 4 4 5 60
2 2 4 4 4 6 60
2 2 4 4 5 5 90
2 2 4 4 5 6 180
2 2 4 4 6 6 90
2 2 4 5 5 5 60
2 2 4 5 5 6 180
2 2 4 5 6 6 180
2 2 4 6 6 6 60
2 2 5 5 5 5 15
2 2 5 5 5 6 60
2 2 5 5 6 6 90
2 2 5 6 6 6 60
2 2 6 6 6 6 15
2 3 3 3 3 3 6
2 3 3 3 3 4 30
2 3 3 3 3 5 30
2 3 3 3 3 6 30
2 3 3 3 4 4 60
2 3 3 3 4 5 120
2 3 3 3 4 6 120
2 3 3 3 5 5 60
2 3 3 3 5 6 120
2 3 3 3 6 6 60
2 3 3 4 4 4 60
2 3 3 4 4 5 180
2 3 3 4 4 6 180
2 3 3 4 5 5 180
2 3 3 4 5 6 360
2 3 3 4 6 6 180
2 3 3 5 5 5 60
2 3 3 5 5 6 180
2 3 3 5 6 6 180
2 3 3 6 6 6 60
2 3 4 4 4 4 30
2 3 4 4 4 5 120
2 3 4 4 4 6 120
2 3 4 4 5 5 180
2 3 4 4 5 6 360
2 3 4 4 6 6 180
2 3 4 5 5 5 120
2 3 4 5 5 6 360
2 3 4 5 6 6 360
2 3 4 6 6 6 120
2 3 5 5 5 5 30
2 3 5 5 5 6 120
2 3 5 5 6 6 180
2 3 5 6 6 6 120
2 3 6 6 6 6 30
2 4 4 4 4 4 6
2 4 4 4 4 5 30
2 4 4 4 4 6 30
2 4 4 4 5 5 60
2 4 4 4 5 6 120
2 4 4 4 6 6 60
2 4 4 5 5 5 60
2 4 4 5 5 6 180
2 4 4 5 6 6 180
2 4 4 6 6 6 60
2 4 5 5 5 5 30
2 4 5 5 5 6 120
2 4 5 5 6 6 180
2 4 5 6 6 6 120
2 4 6 6 6 6 30
2 5 5 5 5 5 6
2 5 5 5 5 6 30
2 5 5 5 6 6 60
2 5 5 6 6 6 60
2 5 6 6 6 6 30
2 6 6 6 6 6 6
3 3 3 3 3 3 1
3 3 3 3 3 4 6
3 3 3 3 3 5 6
3 3 3 3 3 6 6
3 3 3 3 4 4 15
3 3 3 3 4 5 30
3 3 3 3 4 6 30
3 3 3 3 5 5 15
3 3 3 3 5 6 30
3 3 3 3 6 6 15
3 3 3 4 4 4 20
3 3 3 4 4 5 60
3 3 3 4 4 6 60
3 3 3 4 5 5 60
3 3 3 4 5 6 120
3 3 3 4 6 6 60
3 3 3 5 5 5 20
3 3 3 5 5 6 60
3 3 3 5 6 6 60
3 3 3 6 6 6 20
3 3 4 4 4 4 15
3 3 4 4 4 5 60
3 3 4 4 4 6 60
3 3 4 4 5 5 90
3 3 4 4 5 6 180
3 3 4 4 6 6 90
3 3 4 5 5 5 60
3 3 4 5 5 6 180
3 3 4 5 6 6 180
3 3 4 6 6 6 60
3 3 5 5 5 5 15
3 3 5 5 5 6 60
3 3 5 5 6 6 90
3 3 5 6 6 6 60
3 3 6 6 6 6 15
3 4 4 4 4 4 6
3 4 4 4 4 5 30
3 4 4 4 4 6 30
3 4 4 4 5 5 60
3 4 4 4 5 6 120
3 4 4 4 6 6 60
3 4 4 5 5 5 60
3 4 4 5 5 6 180
3 4 4 5 6 6 180
3 4 4 6 6 6 60
3 4 5 5 5 5 30
3 4 5 5 5 6 120
3 4 5 5 6 6 180
3 4 5 6 6 6 120
3 4 6 6 6 6 30
3 5 5 5 5 5 6
3 5 5 5 5 6 30
3 5 5 5 6 6 60
3 5 5 6 6 6 60
3 5 6 6 6 6 30
3 6 6 6 6 6 6
4 4 4 4 4 4 1
4 4 4 4 4 5 6
4 4 4 4 4 6 6
4 4 4 4 5 5 15
4 4 4 4 5 6 30
4 4 4 4 6 6 15
4 4 4 5 5 5 20
4 4 4 5 5 6 60
4 4 4 5 6 6 60
4 4 4 6 6 6 20
4 4 5 5 5 5 15
4 4 5 5 5 6 60
4 4 5 5 6 6 90
4 4 5 6 6 6 60
4 4 6 6 6 6 15
4 5 5 5 5 5 6
4 5 5 5 5 6 30
4 5 5 5 6 6 60
4 5 5 6 6 6 60
4 5 6 6 6 6 30
4 6 6 6 6 6 6
5 5 5 5 5 5 1
5 5 5 5 5 6 6
5 5 5 5 6 6 15
5 5 5 6 6 6 20
5 5 6 6 6 6 15
5 6 6 6 6 6 6
6 6 6 6 6 6 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment