knotkit/knot_tables.cpp

908 lines
60 KiB
C++

#include <knotkit.h>
bool verbose = 0;
static const struct {
const char *name;
int crossing_ar[3][4];
} rolfsen3[] = {
{ "3_{1}", { { 1, 5, 2, 4 }, { 3, 1, 4, 6 }, { 5, 3, 6, 2 } } }
};
static const struct {
const char *name;
int crossing_ar[4][4];
} rolfsen4[] = {
{ "4_{1}", { { 4, 2, 5, 1 }, { 8, 6, 1, 5 }, { 6, 3, 7, 4 }, { 2, 7, 3, 8 } } }
};
static const struct {
const char *name;
int crossing_ar[5][4];
} rolfsen5[] = {
{ "5_{1}", { { 2, 8, 3, 7 }, { 4, 10, 5, 9 }, { 6, 2, 7, 1 }, { 8, 4, 9, 3 }, { 10, 6, 1, 5 } } },
{ "5_{2}", { { 1, 5, 2, 4 }, { 3, 9, 4, 8 }, { 5, 1, 6, 10 }, { 7, 3, 8, 2 }, { 9, 7, 10, 6 } } }
};
static const struct {
const char *name;
int crossing_ar[6][4];
} rolfsen6[] = {
{ "6_{1}", { { 1, 7, 2, 6 }, { 3, 10, 4, 11 }, { 5, 3, 6, 2 }, { 7, 1, 8, 12 }, { 9, 4, 10, 5 }, { 11, 9, 12, 8 } } },
{ "6_{2}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 5, 1, 6, 12 }, { 7, 2, 8, 3 }, { 9, 7, 10, 6 }, { 11, 5, 12, 4 } } },
{ "6_{3}", { { 4, 2, 5, 1 }, { 8, 4, 9, 3 }, { 12, 9, 1, 10 }, { 10, 5, 11, 6 }, { 6, 11, 7, 12 }, { 2, 8, 3, 7 } } }
};
static const struct {
const char *name;
int crossing_ar[7][4];
} rolfsen7[] = {
{ "7_{1}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 13, 6, 12 }, { 7, 1, 8, 14 }, { 9, 3, 10, 2 }, { 11, 5, 12, 4 }, { 13, 7, 14, 6 } } },
{ "7_{2}", { { 2, 10, 3, 9 }, { 4, 14, 5, 13 }, { 6, 12, 7, 11 }, { 8, 2, 9, 1 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 4, 1, 3 } } },
{ "7_{3}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 1, 6, 14 }, { 7, 13, 8, 12 }, { 9, 3, 10, 2 }, { 11, 5, 12, 4 }, { 13, 7, 14, 6 } } },
{ "7_{4}", { { 2, 10, 3, 9 }, { 4, 12, 5, 11 }, { 6, 14, 7, 13 }, { 8, 4, 9, 3 }, { 10, 2, 11, 1 }, { 12, 8, 13, 7 }, { 14, 6, 1, 5 } } },
{ "7_{5}", { { 2, 10, 3, 9 }, { 4, 2, 5, 1 }, { 6, 14, 7, 13 }, { 8, 12, 9, 11 }, { 10, 4, 11, 3 }, { 12, 6, 13, 5 }, { 14, 8, 1, 7 } } },
{ "7_{6}", { { 1, 13, 2, 12 }, { 3, 9, 4, 8 }, { 5, 1, 6, 14 }, { 7, 10, 8, 11 }, { 9, 3, 10, 2 }, { 11, 6, 12, 7 }, { 13, 5, 14, 4 } } },
{ "7_{7}", { { 1, 10, 2, 11 }, { 3, 13, 4, 12 }, { 5, 14, 6, 1 }, { 7, 5, 8, 4 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 6, 14, 7 } } }
};
static const struct {
const char *name;
int crossing_ar[8][4];
} rolfsen8[] = {
{ "8_{1}", { { 1, 9, 2, 8 }, { 3, 7, 4, 6 }, { 5, 12, 6, 13 }, { 7, 3, 8, 2 }, { 9, 1, 10, 16 }, { 11, 15, 12, 14 }, { 13, 4, 14, 5 }, { 15, 11, 16, 10 } } },
{ "8_{2}", { { 1, 10, 2, 11 }, { 3, 13, 4, 12 }, { 5, 15, 6, 14 }, { 7, 1, 8, 16 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 } } },
{ "8_{3}", { { 6, 2, 7, 1 }, { 14, 10, 15, 9 }, { 10, 5, 11, 6 }, { 12, 3, 13, 4 }, { 4, 11, 5, 12 }, { 2, 13, 3, 14 }, { 16, 8, 1, 7 }, { 8, 16, 9, 15 } } },
{ "8_{4}", { { 2, 11, 3, 12 }, { 4, 9, 5, 10 }, { 6, 16, 7, 15 }, { 8, 14, 9, 13 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 14, 8, 15, 7 }, { 16, 6, 1, 5 } } },
{ "8_{5}", { { 1, 7, 2, 6 }, { 3, 9, 4, 8 }, { 5, 12, 6, 13 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 1, 12, 16 }, { 13, 4, 14, 5 }, { 15, 11, 16, 10 } } },
{ "8_{6}", { { 2, 9, 3, 10 }, { 4, 14, 5, 13 }, { 6, 16, 7, 15 }, { 8, 12, 9, 11 }, { 10, 1, 11, 2 }, { 12, 8, 13, 7 }, { 14, 6, 15, 5 }, { 16, 4, 1, 3 } } },
{ "8_{7}", { { 2, 9, 3, 10 }, { 4, 14, 5, 13 }, { 6, 15, 7, 16 }, { 8, 1, 9, 2 }, { 10, 5, 11, 6 }, { 12, 4, 13, 3 }, { 14, 12, 15, 11 }, { 16, 7, 1, 8 } } },
{ "8_{8}", { { 1, 7, 2, 6 }, { 3, 12, 4, 13 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 16, 10, 1 }, { 11, 14, 12, 15 }, { 13, 4, 14, 5 }, { 15, 10, 16, 11 } } },
{ "8_{9}", { { 6, 2, 7, 1 }, { 14, 8, 15, 7 }, { 10, 3, 11, 4 }, { 2, 13, 3, 14 }, { 12, 5, 13, 6 }, { 4, 11, 5, 12 }, { 16, 10, 1, 9 }, { 8, 16, 9, 15 } } },
{ "8_{10}", { { 2, 14, 3, 13 }, { 4, 9, 5, 10 }, { 6, 11, 7, 12 }, { 8, 15, 9, 16 }, { 10, 5, 11, 6 }, { 12, 2, 13, 1 }, { 14, 7, 15, 8 }, { 16, 4, 1, 3 } } },
{ "8_{11}", { { 1, 10, 2, 11 }, { 3, 13, 4, 12 }, { 5, 15, 6, 14 }, { 7, 1, 8, 16 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 7, 14, 6 }, { 15, 5, 16, 4 } } },
{ "8_{12}", { { 4, 2, 5, 1 }, { 10, 8, 11, 7 }, { 8, 3, 9, 4 }, { 2, 9, 3, 10 }, { 14, 6, 15, 5 }, { 16, 11, 1, 12 }, { 12, 15, 13, 16 }, { 6, 14, 7, 13 } } },
{ "8_{13}", { { 1, 9, 2, 8 }, { 3, 14, 4, 15 }, { 5, 12, 6, 13 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 16, 12, 1 }, { 13, 4, 14, 5 }, { 15, 6, 16, 7 } } },
{ "8_{14}", { { 2, 12, 3, 11 }, { 4, 8, 5, 7 }, { 6, 15, 7, 16 }, { 8, 14, 9, 13 }, { 10, 2, 11, 1 }, { 12, 10, 13, 9 }, { 14, 4, 15, 3 }, { 16, 5, 1, 6 } } },
{ "8_{15}", { { 1, 7, 2, 6 }, { 3, 15, 4, 14 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 13, 10, 12 }, { 11, 1, 12, 16 }, { 13, 5, 14, 4 }, { 15, 11, 16, 10 } } },
{ "8_{16}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 14, 9, 13 }, { 10, 15, 11, 16 }, { 12, 6, 13, 5 }, { 14, 3, 15, 4 }, { 16, 11, 1, 12 } } },
{ "8_{17}", { { 6, 2, 7, 1 }, { 14, 8, 15, 7 }, { 8, 3, 9, 4 }, { 2, 13, 3, 14 }, { 12, 5, 13, 6 }, { 4, 9, 5, 10 }, { 16, 12, 1, 11 }, { 10, 16, 11, 15 } } },
{ "8_{18}", { { 6, 2, 7, 1 }, { 8, 3, 9, 4 }, { 16, 11, 1, 12 }, { 2, 14, 3, 13 }, { 4, 15, 5, 16 }, { 10, 6, 11, 5 }, { 12, 7, 13, 8 }, { 14, 10, 15, 9 } } },
{ "8_{19}", { { 2, 14, 3, 13 }, { 5, 11, 6, 10 }, { 7, 15, 8, 14 }, { 9, 5, 10, 4 }, { 11, 7, 12, 6 }, { 12, 2, 13, 1 }, { 15, 9, 16, 8 }, { 16, 4, 1, 3 } } },
{ "8_{20}", { { 1, 7, 2, 6 }, { 4, 13, 5, 14 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 15, 11, 16 }, { 12, 9, 13, 10 }, { 14, 3, 15, 4 }, { 16, 11, 1, 12 } } },
{ "8_{21}", { { 1, 7, 2, 6 }, { 4, 13, 5, 14 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 13, 10, 12 }, { 11, 1, 12, 16 }, { 14, 3, 15, 4 }, { 15, 11, 16, 10 } } }
};
static const struct {
const char *name;
int crossing_ar[9][4];
} rolfsen9[] = {
{ "9_{1}", { { 1, 11, 2, 10 }, { 3, 13, 4, 12 }, { 5, 15, 6, 14 }, { 7, 17, 8, 16 }, { 9, 1, 10, 18 }, { 11, 3, 12, 2 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 } } },
{ "9_{2}", { { 2, 8, 3, 7 }, { 4, 14, 5, 13 }, { 6, 4, 7, 3 }, { 8, 2, 9, 1 }, { 10, 18, 11, 17 }, { 12, 16, 13, 15 }, { 14, 6, 15, 5 }, { 16, 12, 17, 11 }, { 18, 10, 1, 9 } } },
{ "9_{3}", { { 1, 11, 2, 10 }, { 3, 15, 4, 14 }, { 5, 13, 6, 12 }, { 7, 17, 8, 16 }, { 9, 1, 10, 18 }, { 11, 3, 12, 2 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 } } },
{ "9_{4}", { { 2, 14, 3, 13 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 8, 18, 9, 17 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 2, 15, 1 }, { 16, 8, 17, 7 }, { 18, 10, 1, 9 } } },
{ "9_{5}", { { 2, 14, 3, 13 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 8, 18, 9, 17 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 2, 15, 1 }, { 16, 10, 17, 9 }, { 18, 8, 1, 7 } } },
{ "9_{6}", { { 1, 13, 2, 12 }, { 3, 7, 4, 6 }, { 5, 15, 6, 14 }, { 7, 3, 8, 2 }, { 9, 17, 10, 16 }, { 11, 1, 12, 18 }, { 13, 5, 14, 4 }, { 15, 9, 16, 8 }, { 17, 11, 18, 10 } } },
{ "9_{7}", { { 2, 10, 3, 9 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 8, 6, 9, 5 }, { 10, 4, 11, 3 }, { 12, 2, 13, 1 }, { 14, 18, 15, 17 }, { 16, 8, 17, 7 }, { 18, 14, 1, 13 } } },
{ "9_{8}", { { 1, 16, 2, 17 }, { 3, 14, 4, 15 }, { 5, 11, 6, 10 }, { 7, 1, 8, 18 }, { 9, 13, 10, 12 }, { 11, 7, 12, 6 }, { 13, 4, 14, 5 }, { 15, 2, 16, 3 }, { 17, 9, 18, 8 } } },
{ "9_{9}", { { 1, 13, 2, 12 }, { 3, 9, 4, 8 }, { 5, 15, 6, 14 }, { 7, 17, 8, 16 }, { 9, 3, 10, 2 }, { 11, 1, 12, 18 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 11, 18, 10 } } },
{ "9_{10}", { { 1, 13, 2, 12 }, { 3, 11, 4, 10 }, { 5, 17, 6, 16 }, { 7, 15, 8, 14 }, { 9, 1, 10, 18 }, { 11, 3, 12, 2 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 } } },
{ "9_{11}", { { 2, 7, 3, 8 }, { 4, 13, 5, 14 }, { 6, 15, 7, 16 }, { 8, 12, 9, 11 }, { 10, 17, 11, 18 }, { 12, 3, 13, 4 }, { 14, 5, 15, 6 }, { 16, 2, 17, 1 }, { 18, 9, 1, 10 } } },
{ "9_{12}", { { 2, 9, 3, 10 }, { 4, 16, 5, 15 }, { 6, 14, 7, 13 }, { 8, 3, 9, 4 }, { 10, 18, 11, 17 }, { 12, 8, 13, 7 }, { 14, 6, 15, 5 }, { 16, 2, 17, 1 }, { 18, 12, 1, 11 } } },
{ "9_{13}", { { 2, 12, 3, 11 }, { 4, 14, 5, 13 }, { 6, 16, 7, 15 }, { 8, 18, 9, 17 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 2, 15, 1 }, { 16, 10, 17, 9 }, { 18, 8, 1, 7 } } },
{ "9_{14}", { { 1, 12, 2, 13 }, { 3, 10, 4, 11 }, { 5, 16, 6, 17 }, { 7, 1, 8, 18 }, { 9, 4, 10, 5 }, { 11, 2, 12, 3 }, { 13, 9, 14, 8 }, { 15, 6, 16, 7 }, { 17, 15, 18, 14 } } },
{ "9_{15}", { { 2, 9, 3, 10 }, { 4, 7, 5, 8 }, { 6, 15, 7, 16 }, { 8, 3, 9, 4 }, { 10, 14, 11, 13 }, { 12, 17, 13, 18 }, { 14, 5, 15, 6 }, { 16, 2, 17, 1 }, { 18, 11, 1, 12 } } },
{ "9_{16}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 15, 6, 14 }, { 7, 5, 8, 4 }, { 9, 3, 10, 2 }, { 11, 17, 12, 16 }, { 13, 1, 14, 18 }, { 15, 7, 16, 6 }, { 17, 13, 18, 12 } } },
{ "9_{17}", { { 1, 9, 2, 8 }, { 3, 12, 4, 13 }, { 5, 16, 6, 17 }, { 7, 1, 8, 18 }, { 9, 3, 10, 2 }, { 11, 4, 12, 5 }, { 13, 11, 14, 10 }, { 15, 6, 16, 7 }, { 17, 15, 18, 14 } } },
{ "9_{18}", { { 2, 12, 3, 11 }, { 4, 2, 5, 1 }, { 6, 16, 7, 15 }, { 8, 14, 9, 13 }, { 10, 18, 11, 17 }, { 12, 4, 13, 3 }, { 14, 8, 15, 7 }, { 16, 10, 17, 9 }, { 18, 6, 1, 5 } } },
{ "9_{19}", { { 2, 14, 3, 13 }, { 4, 11, 5, 12 }, { 6, 4, 7, 3 }, { 8, 17, 9, 18 }, { 10, 5, 11, 6 }, { 12, 8, 13, 7 }, { 14, 2, 15, 1 }, { 16, 9, 17, 10 }, { 18, 16, 1, 15 } } },
{ "9_{20}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 13, 6, 12 }, { 7, 3, 8, 2 }, { 9, 1, 10, 18 }, { 11, 15, 12, 14 }, { 13, 7, 14, 6 }, { 15, 4, 16, 5 }, { 17, 9, 18, 8 } } },
{ "9_{21}", { { 2, 7, 3, 8 }, { 4, 13, 5, 14 }, { 6, 15, 7, 16 }, { 8, 12, 9, 11 }, { 10, 17, 11, 18 }, { 12, 5, 13, 6 }, { 14, 3, 15, 4 }, { 16, 2, 17, 1 }, { 18, 9, 1, 10 } } },
{ "9_{22}", { { 1, 7, 2, 6 }, { 3, 8, 4, 9 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 2, 10, 3 }, { 11, 17, 12, 16 }, { 13, 1, 14, 18 }, { 15, 4, 16, 5 }, { 17, 13, 18, 12 } } },
{ "9_{23}", { { 2, 16, 3, 15 }, { 4, 12, 5, 11 }, { 6, 4, 7, 3 }, { 8, 18, 9, 17 }, { 10, 14, 11, 13 }, { 12, 6, 13, 5 }, { 14, 8, 15, 7 }, { 16, 2, 17, 1 }, { 18, 10, 1, 9 } } },
{ "9_{24}", { { 1, 13, 2, 12 }, { 3, 7, 4, 6 }, { 5, 1, 6, 18 }, { 7, 14, 8, 15 }, { 9, 16, 10, 17 }, { 11, 3, 12, 2 }, { 13, 10, 14, 11 }, { 15, 8, 16, 9 }, { 17, 5, 18, 4 } } },
{ "9_{25}", { { 2, 10, 3, 9 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 4, 9, 3 }, { 10, 14, 11, 13 }, { 12, 8, 13, 7 }, { 14, 2, 15, 1 }, { 16, 5, 17, 6 }, { 18, 16, 1, 15 } } },
{ "9_{26}", { { 2, 10, 3, 9 }, { 4, 11, 5, 12 }, { 6, 17, 7, 18 }, { 8, 15, 9, 16 }, { 10, 14, 11, 13 }, { 12, 3, 13, 4 }, { 14, 2, 15, 1 }, { 16, 5, 17, 6 }, { 18, 7, 1, 8 } } },
{ "9_{27}", { { 2, 9, 3, 10 }, { 4, 7, 5, 8 }, { 6, 14, 7, 13 }, { 8, 15, 9, 16 }, { 10, 18, 11, 17 }, { 12, 3, 13, 4 }, { 14, 6, 15, 5 }, { 16, 2, 17, 1 }, { 18, 12, 1, 11 } } },
{ "9_{28}", { { 1, 16, 2, 17 }, { 3, 15, 4, 14 }, { 5, 3, 6, 2 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 11, 18, 12, 1 }, { 13, 9, 14, 8 }, { 15, 5, 16, 4 }, { 17, 10, 18, 11 } } },
{ "9_{29}", { { 2, 10, 3, 9 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 4, 9, 3 }, { 10, 15, 11, 16 }, { 12, 6, 13, 5 }, { 14, 1, 15, 2 }, { 16, 7, 17, 8 }, { 18, 13, 1, 14 } } },
{ "9_{30}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 7, 12, 8, 13 }, { 9, 3, 10, 2 }, { 11, 6, 12, 7 }, { 13, 10, 14, 11 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } },
{ "9_{31}", { { 1, 9, 2, 8 }, { 3, 10, 4, 11 }, { 5, 13, 6, 12 }, { 7, 1, 8, 18 }, { 9, 16, 10, 17 }, { 11, 15, 12, 14 }, { 13, 7, 14, 6 }, { 15, 4, 16, 5 }, { 17, 3, 18, 2 } } },
{ "9_{32}", { { 2, 8, 3, 7 }, { 4, 9, 5, 10 }, { 6, 13, 7, 14 }, { 8, 16, 9, 15 }, { 10, 5, 11, 6 }, { 12, 17, 13, 18 }, { 14, 3, 15, 4 }, { 16, 2, 17, 1 }, { 18, 11, 1, 12 } } },
{ "9_{33}", { { 1, 15, 2, 14 }, { 3, 16, 4, 17 }, { 5, 12, 6, 13 }, { 7, 5, 8, 4 }, { 9, 2, 10, 3 }, { 11, 6, 12, 7 }, { 13, 1, 14, 18 }, { 15, 11, 16, 10 }, { 17, 8, 18, 9 } } },
{ "9_{34}", { { 2, 13, 3, 14 }, { 4, 17, 5, 18 }, { 6, 16, 7, 15 }, { 8, 4, 9, 3 }, { 10, 5, 11, 6 }, { 12, 8, 13, 7 }, { 14, 1, 15, 2 }, { 16, 11, 17, 12 }, { 18, 10, 1, 9 } } },
{ "9_{35}", { { 2, 12, 3, 11 }, { 4, 16, 5, 15 }, { 6, 14, 7, 13 }, { 8, 18, 9, 17 }, { 10, 4, 11, 3 }, { 12, 2, 13, 1 }, { 14, 6, 15, 5 }, { 16, 10, 17, 9 }, { 18, 8, 1, 7 } } },
{ "9_{36}", { { 2, 15, 3, 16 }, { 4, 11, 5, 12 }, { 6, 4, 7, 3 }, { 8, 17, 9, 18 }, { 10, 5, 11, 6 }, { 12, 10, 13, 9 }, { 14, 1, 15, 2 }, { 16, 7, 17, 8 }, { 18, 13, 1, 14 } } },
{ "9_{37}", { { 1, 10, 2, 11 }, { 3, 14, 4, 15 }, { 5, 1, 6, 18 }, { 7, 17, 8, 16 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 4, 14, 5 }, { 15, 13, 16, 12 }, { 17, 7, 18, 6 } } },
{ "9_{38}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 16, 7, 15 }, { 8, 4, 9, 3 }, { 10, 18, 11, 17 }, { 12, 6, 13, 5 }, { 14, 2, 15, 1 }, { 16, 12, 17, 11 }, { 18, 8, 1, 7 } } },
{ "9_{39}", { { 1, 12, 2, 13 }, { 3, 17, 4, 16 }, { 5, 10, 6, 11 }, { 7, 18, 8, 1 }, { 9, 14, 10, 15 }, { 11, 2, 12, 3 }, { 13, 6, 14, 7 }, { 15, 5, 16, 4 }, { 17, 8, 18, 9 } } },
{ "9_{40}", { { 1, 15, 2, 14 }, { 3, 12, 4, 13 }, { 5, 11, 6, 10 }, { 7, 3, 8, 2 }, { 9, 18, 10, 1 }, { 11, 17, 12, 16 }, { 13, 9, 14, 8 }, { 15, 6, 16, 7 }, { 17, 5, 18, 4 } } },
{ "9_{41}", { { 1, 15, 2, 14 }, { 3, 12, 4, 13 }, { 5, 16, 6, 17 }, { 7, 3, 8, 2 }, { 9, 18, 10, 1 }, { 11, 4, 12, 5 }, { 13, 9, 14, 8 }, { 15, 6, 16, 7 }, { 17, 10, 18, 11 } } },
{ "9_{42}", { { 1, 4, 2, 5 }, { 5, 10, 6, 11 }, { 3, 9, 4, 8 }, { 9, 3, 10, 2 }, { 16, 12, 17, 11 }, { 14, 7, 15, 8 }, { 6, 15, 7, 16 }, { 18, 14, 1, 13 }, { 12, 18, 13, 17 } } },
{ "9_{43}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 6, 12, 7, 11 }, { 9, 3, 10, 2 }, { 10, 14, 11, 13 }, { 12, 8, 13, 7 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } },
{ "9_{44}", { { 2, 9, 3, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 14, 11, 13 }, { 12, 8, 13, 7 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } },
{ "9_{45}", { { 2, 9, 3, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 7, 12, 8, 13 }, { 8, 1, 9, 2 }, { 11, 6, 12, 7 }, { 13, 10, 14, 11 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } },
{ "9_{46}", { { 2, 10, 3, 9 }, { 3, 14, 4, 15 }, { 6, 17, 7, 18 }, { 8, 11, 9, 12 }, { 10, 2, 11, 1 }, { 13, 4, 14, 5 }, { 15, 13, 16, 12 }, { 16, 7, 17, 8 }, { 18, 5, 1, 6 } } },
{ "9_{47}", { { 1, 15, 2, 14 }, { 4, 17, 5, 18 }, { 6, 16, 7, 15 }, { 8, 4, 9, 3 }, { 10, 5, 11, 6 }, { 12, 8, 13, 7 }, { 13, 3, 14, 2 }, { 16, 11, 17, 12 }, { 18, 10, 1, 9 } } },
{ "9_{48}", { { 1, 10, 2, 11 }, { 3, 14, 4, 15 }, { 6, 17, 7, 18 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 4, 14, 5 }, { 15, 13, 16, 12 }, { 16, 7, 17, 8 }, { 18, 5, 1, 6 } } },
{ "9_{49}", { { 1, 15, 2, 14 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 7, 3, 8, 2 }, { 10, 18, 11, 17 }, { 12, 4, 13, 3 }, { 13, 9, 14, 8 }, { 16, 6, 17, 5 }, { 18, 10, 1, 9 } } }
};
static const struct {
const char *name;
int crossing_ar[10][4];
} rolfsen10[] = {
{ "10_{1}", { { 2, 11, 3, 12 }, { 4, 20, 5, 19 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 14, 11, 13 }, { 12, 1, 13, 2 }, { 14, 10, 15, 9 }, { 16, 8, 17, 7 }, { 18, 6, 19, 5 }, { 20, 4, 1, 3 } } },
{ "10_{2}", { { 1, 13, 2, 12 }, { 3, 14, 4, 15 }, { 5, 3, 6, 2 }, { 7, 17, 8, 16 }, { 9, 19, 10, 18 }, { 11, 1, 12, 20 }, { 13, 4, 14, 5 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 }, { 19, 11, 20, 10 } } },
{ "10_{3}", { { 2, 10, 3, 9 }, { 4, 17, 5, 18 }, { 6, 15, 7, 16 }, { 8, 4, 9, 3 }, { 10, 2, 11, 1 }, { 12, 20, 13, 19 }, { 14, 7, 15, 8 }, { 16, 5, 17, 6 }, { 18, 14, 19, 13 }, { 20, 12, 1, 11 } } },
{ "10_{4}", { { 2, 13, 3, 14 }, { 4, 11, 5, 12 }, { 6, 20, 7, 19 }, { 8, 18, 9, 17 }, { 10, 16, 11, 15 }, { 12, 1, 13, 2 }, { 14, 3, 15, 4 }, { 16, 10, 17, 9 }, { 18, 8, 19, 7 }, { 20, 6, 1, 5 } } },
{ "10_{5}", { { 2, 13, 3, 14 }, { 4, 17, 5, 18 }, { 6, 16, 7, 15 }, { 8, 6, 9, 5 }, { 10, 19, 11, 20 }, { 12, 1, 13, 2 }, { 14, 3, 15, 4 }, { 16, 8, 17, 7 }, { 18, 9, 19, 10 }, { 20, 11, 1, 12 } } },
{ "10_{6}", { { 2, 11, 3, 12 }, { 4, 16, 5, 15 }, { 6, 18, 7, 17 }, { 8, 20, 9, 19 }, { 10, 14, 11, 13 }, { 12, 1, 13, 2 }, { 14, 10, 15, 9 }, { 16, 6, 17, 5 }, { 18, 8, 19, 7 }, { 20, 4, 1, 3 } } },
{ "10_{7}", { { 1, 12, 2, 13 }, { 3, 15, 4, 14 }, { 5, 19, 6, 18 }, { 7, 17, 8, 16 }, { 9, 1, 10, 20 }, { 11, 2, 12, 3 }, { 13, 11, 14, 10 }, { 15, 9, 16, 8 }, { 17, 7, 18, 6 }, { 19, 5, 20, 4 } } },
{ "10_{8}", { { 1, 12, 2, 13 }, { 3, 10, 4, 11 }, { 5, 15, 6, 14 }, { 7, 17, 8, 16 }, { 9, 19, 10, 18 }, { 11, 2, 12, 3 }, { 13, 20, 14, 1 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 }, { 19, 5, 20, 4 } } },
{ "10_{9}", { { 1, 13, 2, 12 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 3, 8, 2 }, { 9, 19, 10, 18 }, { 11, 1, 12, 20 }, { 13, 4, 14, 5 }, { 15, 6, 16, 7 }, { 17, 9, 18, 8 }, { 19, 11, 20, 10 } } },
{ "10_{10}", { { 1, 11, 2, 10 }, { 3, 18, 4, 19 }, { 5, 16, 6, 17 }, { 7, 14, 8, 15 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 20, 14, 1 }, { 15, 6, 16, 7 }, { 17, 4, 18, 5 }, { 19, 8, 20, 9 } } },
{ "10_{11}", { { 2, 15, 3, 16 }, { 4, 13, 5, 14 }, { 6, 2, 7, 1 }, { 8, 18, 9, 17 }, { 10, 20, 11, 19 }, { 12, 5, 13, 6 }, { 14, 3, 15, 4 }, { 16, 12, 17, 11 }, { 18, 10, 19, 9 }, { 20, 8, 1, 7 } } },
{ "10_{12}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 13, 7, 14 }, { 8, 19, 9, 20 }, { 10, 1, 11, 2 }, { 12, 7, 13, 8 }, { 14, 5, 15, 6 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } },
{ "10_{13}", { { 2, 17, 3, 18 }, { 4, 8, 5, 7 }, { 6, 13, 7, 14 }, { 8, 2, 9, 1 }, { 10, 20, 11, 19 }, { 12, 16, 13, 15 }, { 14, 5, 15, 6 }, { 16, 3, 17, 4 }, { 18, 12, 19, 11 }, { 20, 10, 1, 9 } } },
{ "10_{14}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 11, 6, 10 }, { 7, 19, 8, 18 }, { 9, 1, 10, 20 }, { 11, 5, 12, 4 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 7, 18, 6 }, { 19, 9, 20, 8 } } },
{ "10_{15}", { { 2, 6, 3, 5 }, { 4, 16, 5, 15 }, { 6, 2, 7, 1 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 4, 15, 3 }, { 16, 14, 17, 13 }, { 18, 9, 19, 10 }, { 20, 11, 1, 12 } } },
{ "10_{16}", { { 1, 10, 2, 11 }, { 3, 15, 4, 14 }, { 5, 17, 6, 16 }, { 7, 19, 8, 18 }, { 9, 2, 10, 3 }, { 11, 20, 12, 1 }, { 13, 9, 14, 8 }, { 15, 7, 16, 6 }, { 17, 5, 18, 4 }, { 19, 12, 20, 13 } } },
{ "10_{17}", { { 6, 2, 7, 1 }, { 12, 4, 13, 3 }, { 20, 15, 1, 16 }, { 16, 7, 17, 8 }, { 18, 9, 19, 10 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 14, 6, 15, 5 }, { 2, 12, 3, 11 }, { 4, 14, 5, 13 } } },
{ "10_{18}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 17, 7, 18 }, { 8, 15, 9, 16 }, { 10, 20, 11, 19 }, { 12, 2, 13, 1 }, { 14, 12, 15, 11 }, { 16, 7, 17, 8 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } },
{ "10_{19}", { { 1, 13, 2, 12 }, { 3, 15, 4, 14 }, { 5, 10, 6, 11 }, { 7, 16, 8, 17 }, { 9, 18, 10, 19 }, { 11, 1, 12, 20 }, { 13, 3, 14, 2 }, { 15, 8, 16, 9 }, { 17, 6, 18, 7 }, { 19, 5, 20, 4 } } },
{ "10_{20}", { { 2, 8, 3, 7 }, { 4, 15, 5, 16 }, { 6, 4, 7, 3 }, { 8, 2, 9, 1 }, { 10, 18, 11, 17 }, { 12, 20, 13, 19 }, { 14, 5, 15, 6 }, { 16, 14, 17, 13 }, { 18, 12, 19, 11 }, { 20, 10, 1, 9 } } },
{ "10_{21}", { { 1, 15, 2, 14 }, { 3, 13, 4, 12 }, { 5, 17, 6, 16 }, { 7, 11, 8, 10 }, { 9, 18, 10, 19 }, { 11, 1, 12, 20 }, { 13, 3, 14, 2 }, { 15, 5, 16, 4 }, { 17, 7, 18, 6 }, { 19, 8, 20, 9 } } },
{ "10_{22}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 16, 7, 15 }, { 8, 14, 9, 13 }, { 10, 1, 11, 2 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 16, 8, 17, 7 }, { 18, 4, 19, 3 }, { 20, 9, 1, 10 } } },
{ "10_{23}", { { 2, 13, 3, 14 }, { 4, 11, 5, 12 }, { 6, 18, 7, 17 }, { 8, 19, 9, 20 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 14, 7, 15, 8 }, { 16, 6, 17, 5 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } },
{ "10_{24}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 17, 7, 18 }, { 8, 6, 9, 5 }, { 10, 4, 11, 3 }, { 12, 20, 13, 19 }, { 14, 2, 15, 1 }, { 16, 7, 17, 8 }, { 18, 12, 19, 11 }, { 20, 16, 1, 15 } } },
{ "10_{25}", { { 1, 11, 2, 10 }, { 3, 15, 4, 14 }, { 5, 13, 6, 12 }, { 7, 18, 8, 19 }, { 9, 1, 10, 20 }, { 11, 5, 12, 4 }, { 13, 7, 14, 6 }, { 15, 3, 16, 2 }, { 17, 8, 18, 9 }, { 19, 17, 20, 16 } } },
{ "10_{26}", { { 1, 12, 2, 13 }, { 3, 14, 4, 15 }, { 5, 17, 6, 16 }, { 7, 19, 8, 18 }, { 9, 1, 10, 20 }, { 11, 4, 12, 5 }, { 13, 2, 14, 3 }, { 15, 11, 16, 10 }, { 17, 9, 18, 8 }, { 19, 7, 20, 6 } } },
{ "10_{27}", { { 1, 11, 2, 10 }, { 3, 18, 4, 19 }, { 5, 16, 6, 17 }, { 7, 14, 8, 15 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 20, 14, 1 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 19, 8, 20, 9 } } },
{ "10_{28}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 20, 12, 1 }, { 13, 18, 14, 19 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 19, 12, 20, 13 } } },
{ "10_{29}", { { 2, 15, 3, 16 }, { 4, 2, 5, 1 }, { 6, 11, 7, 12 }, { 8, 18, 9, 17 }, { 10, 20, 11, 19 }, { 12, 5, 13, 6 }, { 14, 3, 15, 4 }, { 16, 14, 17, 13 }, { 18, 10, 19, 9 }, { 20, 8, 1, 7 } } },
{ "10_{30}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 11, 6, 10 }, { 7, 19, 8, 18 }, { 9, 1, 10, 20 }, { 11, 5, 12, 4 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 9, 18, 8 }, { 19, 7, 20, 6 } } },
{ "10_{31}", { { 2, 6, 3, 5 }, { 4, 16, 5, 15 }, { 6, 2, 7, 1 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 4, 15, 3 }, { 16, 14, 17, 13 }, { 18, 11, 19, 12 }, { 20, 9, 1, 10 } } },
{ "10_{32}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 15, 7, 16 }, { 8, 17, 9, 18 }, { 10, 20, 11, 19 }, { 12, 2, 13, 1 }, { 14, 12, 15, 11 }, { 16, 7, 17, 8 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } },
{ "10_{33}", { { 6, 2, 7, 1 }, { 14, 6, 15, 5 }, { 20, 15, 1, 16 }, { 16, 7, 17, 8 }, { 8, 19, 9, 20 }, { 18, 9, 19, 10 }, { 10, 17, 11, 18 }, { 2, 14, 3, 13 }, { 12, 4, 13, 3 }, { 4, 12, 5, 11 } } },
{ "10_{34}", { { 1, 7, 2, 6 }, { 3, 14, 4, 15 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 20, 10, 1 }, { 11, 18, 12, 19 }, { 13, 16, 14, 17 }, { 15, 4, 16, 5 }, { 17, 12, 18, 13 }, { 19, 10, 20, 11 } } },
{ "10_{35}", { { 1, 11, 2, 10 }, { 3, 18, 4, 19 }, { 5, 3, 6, 2 }, { 7, 14, 8, 15 }, { 9, 12, 10, 13 }, { 11, 1, 12, 20 }, { 13, 8, 14, 9 }, { 15, 6, 16, 7 }, { 17, 4, 18, 5 }, { 19, 17, 20, 16 } } },
{ "10_{36}", { { 2, 15, 3, 16 }, { 4, 14, 5, 13 }, { 6, 12, 7, 11 }, { 8, 18, 9, 17 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 10, 19, 9 }, { 20, 4, 1, 3 } } },
{ "10_{37}", { { 4, 2, 5, 1 }, { 10, 4, 11, 3 }, { 12, 8, 13, 7 }, { 8, 12, 9, 11 }, { 18, 15, 19, 16 }, { 16, 5, 17, 6 }, { 6, 17, 7, 18 }, { 20, 13, 1, 14 }, { 14, 19, 15, 20 }, { 2, 10, 3, 9 } } },
{ "10_{38}", { { 2, 16, 3, 15 }, { 4, 12, 5, 11 }, { 6, 10, 7, 9 }, { 8, 17, 9, 18 }, { 10, 6, 11, 5 }, { 12, 20, 13, 19 }, { 14, 2, 15, 1 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 4, 1, 3 } } },
{ "10_{39}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 19, 6, 18 }, { 7, 11, 8, 10 }, { 9, 1, 10, 20 }, { 11, 7, 12, 6 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 5, 18, 4 }, { 19, 9, 20, 8 } } },
{ "10_{40}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 19, 7, 20 }, { 8, 13, 9, 14 }, { 10, 1, 11, 2 }, { 12, 9, 13, 10 }, { 14, 5, 15, 6 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 7, 1, 8 } } },
{ "10_{41}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 10, 6, 11 }, { 7, 19, 8, 18 }, { 9, 6, 10, 7 }, { 11, 1, 12, 20 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 9, 18, 8 }, { 19, 5, 20, 4 } } },
{ "10_{42}", { { 1, 9, 2, 8 }, { 3, 18, 4, 19 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 20, 12, 1 }, { 13, 17, 14, 16 }, { 15, 4, 16, 5 }, { 17, 13, 18, 12 }, { 19, 6, 20, 7 } } },
{ "10_{43}", { { 4, 2, 5, 1 }, { 10, 4, 11, 3 }, { 14, 8, 15, 7 }, { 20, 11, 1, 12 }, { 12, 19, 13, 20 }, { 8, 14, 9, 13 }, { 18, 15, 19, 16 }, { 16, 5, 17, 6 }, { 6, 17, 7, 18 }, { 2, 10, 3, 9 } } },
{ "10_{44}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 20, 6, 1 }, { 7, 19, 8, 18 }, { 9, 7, 10, 6 }, { 11, 5, 12, 4 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 10, 18, 11 }, { 19, 9, 20, 8 } } },
{ "10_{45}", { { 4, 2, 5, 1 }, { 12, 6, 13, 5 }, { 10, 3, 11, 4 }, { 2, 11, 3, 12 }, { 20, 14, 1, 13 }, { 14, 7, 15, 8 }, { 6, 19, 7, 20 }, { 18, 15, 19, 16 }, { 16, 10, 17, 9 }, { 8, 18, 9, 17 } } },
{ "10_{46}", { { 1, 15, 2, 14 }, { 3, 9, 4, 8 }, { 5, 11, 6, 10 }, { 7, 16, 8, 17 }, { 9, 5, 10, 4 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 15, 3, 16, 2 }, { 17, 6, 18, 7 }, { 19, 13, 20, 12 } } },
{ "10_{47}", { { 2, 9, 3, 10 }, { 4, 11, 5, 12 }, { 6, 17, 7, 18 }, { 8, 1, 9, 2 }, { 10, 3, 11, 4 }, { 12, 5, 13, 6 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 16, 1, 15 } } },
{ "10_{48}", { { 6, 2, 7, 1 }, { 8, 4, 9, 3 }, { 14, 6, 15, 5 }, { 20, 15, 1, 16 }, { 16, 9, 17, 10 }, { 18, 11, 19, 12 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 2, 8, 3, 7 }, { 4, 14, 5, 13 } } },
{ "10_{49}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 15, 5, 16, 4 }, { 17, 11, 18, 10 }, { 19, 13, 20, 12 } } },
{ "10_{50}", { { 1, 10, 2, 11 }, { 3, 19, 4, 18 }, { 5, 13, 6, 12 }, { 7, 15, 8, 14 }, { 9, 17, 10, 16 }, { 11, 20, 12, 1 }, { 13, 9, 14, 8 }, { 15, 7, 16, 6 }, { 17, 3, 18, 2 }, { 19, 5, 20, 4 } } },
{ "10_{51}", { { 2, 18, 3, 17 }, { 4, 11, 5, 12 }, { 6, 13, 7, 14 }, { 8, 15, 9, 16 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 5, 15, 6 }, { 16, 2, 17, 1 }, { 18, 9, 19, 10 }, { 20, 4, 1, 3 } } },
{ "10_{52}", { { 1, 13, 2, 12 }, { 3, 19, 4, 18 }, { 5, 10, 6, 11 }, { 7, 14, 8, 15 }, { 9, 16, 10, 17 }, { 11, 1, 12, 20 }, { 13, 8, 14, 9 }, { 15, 6, 16, 7 }, { 17, 3, 18, 2 }, { 19, 5, 20, 4 } } },
{ "10_{53}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 15, 5, 16, 4 }, { 17, 13, 18, 12 }, { 19, 11, 20, 10 } } },
{ "10_{54}", { { 2, 16, 3, 15 }, { 4, 9, 5, 10 }, { 6, 11, 7, 12 }, { 8, 19, 9, 20 }, { 10, 5, 11, 6 }, { 12, 18, 13, 17 }, { 14, 2, 15, 1 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 4, 1, 3 } } },
{ "10_{55}", { { 2, 10, 3, 9 }, { 4, 18, 5, 17 }, { 6, 12, 7, 11 }, { 8, 2, 9, 1 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 18, 4, 19, 3 }, { 20, 16, 1, 15 } } },
{ "10_{56}", { { 2, 16, 3, 15 }, { 4, 10, 5, 9 }, { 6, 12, 7, 11 }, { 8, 17, 9, 18 }, { 10, 6, 11, 5 }, { 12, 20, 13, 19 }, { 14, 2, 15, 1 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 4, 1, 3 } } },
{ "10_{57}", { { 1, 4, 2, 5 }, { 3, 16, 4, 17 }, { 5, 20, 6, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 11, 18, 12, 19 }, { 13, 9, 14, 8 }, { 15, 2, 16, 3 }, { 17, 10, 18, 11 }, { 19, 14, 20, 15 } } },
{ "10_{58}", { { 2, 15, 3, 16 }, { 4, 10, 5, 9 }, { 6, 13, 7, 14 }, { 8, 6, 9, 5 }, { 10, 20, 11, 19 }, { 12, 7, 13, 8 }, { 14, 18, 15, 17 }, { 16, 1, 17, 2 }, { 18, 12, 19, 11 }, { 20, 4, 1, 3 } } },
{ "10_{59}", { { 1, 4, 2, 5 }, { 3, 17, 4, 16 }, { 5, 20, 6, 1 }, { 7, 14, 8, 15 }, { 9, 7, 10, 6 }, { 11, 19, 12, 18 }, { 13, 8, 14, 9 }, { 15, 11, 16, 10 }, { 17, 3, 18, 2 }, { 19, 13, 20, 12 } } },
{ "10_{60}", { { 2, 15, 3, 16 }, { 4, 8, 5, 7 }, { 6, 11, 7, 12 }, { 8, 14, 9, 13 }, { 10, 17, 11, 18 }, { 12, 5, 13, 6 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 9, 19, 10 }, { 20, 4, 1, 3 } } },
{ "10_{61}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 1, 8, 20 }, { 9, 3, 10, 2 }, { 11, 19, 12, 18 }, { 13, 6, 14, 7 }, { 15, 4, 16, 5 }, { 17, 11, 18, 10 }, { 19, 13, 20, 12 } } },
{ "10_{62}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 13, 7, 14 }, { 8, 19, 9, 20 }, { 10, 1, 11, 2 }, { 12, 5, 13, 6 }, { 14, 7, 15, 8 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } },
{ "10_{63}", { { 1, 9, 2, 8 }, { 3, 19, 4, 18 }, { 5, 17, 6, 16 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 15, 12, 14 }, { 13, 1, 14, 20 }, { 15, 7, 16, 6 }, { 17, 5, 18, 4 }, { 19, 13, 20, 12 } } },
{ "10_{64}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 16, 9, 15 }, { 10, 1, 11, 2 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 4, 17, 3 }, { 18, 6, 19, 5 }, { 20, 9, 1, 10 } } },
{ "10_{65}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 18, 12, 19 }, { 13, 20, 14, 1 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 19, 12, 20, 13 } } },
{ "10_{66}", { { 1, 11, 2, 10 }, { 3, 13, 4, 12 }, { 5, 19, 6, 18 }, { 7, 15, 8, 14 }, { 9, 5, 10, 4 }, { 11, 3, 12, 2 }, { 13, 17, 14, 16 }, { 15, 9, 16, 8 }, { 17, 1, 18, 20 }, { 19, 7, 20, 6 } } },
{ "10_{67}", { { 1, 14, 2, 15 }, { 3, 19, 4, 18 }, { 5, 17, 6, 16 }, { 7, 11, 8, 10 }, { 9, 1, 10, 20 }, { 11, 7, 12, 6 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 5, 18, 4 }, { 19, 9, 20, 8 } } },
{ "10_{68}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 18, 8, 19 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 20, 14, 1 }, { 15, 4, 16, 5 }, { 17, 8, 18, 9 }, { 19, 6, 20, 7 } } },
{ "10_{69}", { { 2, 13, 3, 14 }, { 4, 17, 5, 18 }, { 6, 2, 7, 1 }, { 8, 19, 9, 20 }, { 10, 7, 11, 8 }, { 12, 3, 13, 4 }, { 14, 12, 15, 11 }, { 16, 5, 17, 6 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } },
{ "10_{70}", { { 2, 15, 3, 16 }, { 4, 11, 5, 12 }, { 6, 13, 7, 14 }, { 8, 20, 9, 19 }, { 10, 7, 11, 8 }, { 12, 5, 13, 6 }, { 14, 18, 15, 17 }, { 16, 1, 17, 2 }, { 18, 10, 19, 9 }, { 20, 4, 1, 3 } } },
{ "10_{71}", { { 1, 4, 2, 5 }, { 3, 8, 4, 9 }, { 11, 15, 12, 14 }, { 5, 13, 6, 12 }, { 13, 7, 14, 6 }, { 9, 19, 10, 18 }, { 15, 20, 16, 1 }, { 19, 16, 20, 17 }, { 17, 11, 18, 10 }, { 7, 2, 8, 3 } } },
{ "10_{72}", { { 2, 15, 3, 16 }, { 4, 12, 5, 11 }, { 6, 14, 7, 13 }, { 8, 18, 9, 17 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 10, 19, 9 }, { 20, 4, 1, 3 } } },
{ "10_{73}", { { 2, 15, 3, 16 }, { 4, 7, 5, 8 }, { 6, 13, 7, 14 }, { 8, 12, 9, 11 }, { 10, 17, 11, 18 }, { 12, 5, 13, 6 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 9, 19, 10 }, { 20, 4, 1, 3 } } },
{ "10_{74}", { { 1, 12, 2, 13 }, { 3, 15, 4, 14 }, { 5, 17, 6, 16 }, { 7, 1, 8, 20 }, { 9, 19, 10, 18 }, { 11, 2, 12, 3 }, { 13, 11, 14, 10 }, { 15, 7, 16, 6 }, { 17, 5, 18, 4 }, { 19, 9, 20, 8 } } },
{ "10_{75}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 18, 6, 19 }, { 7, 5, 8, 4 }, { 9, 20, 10, 1 }, { 11, 9, 12, 8 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 6, 18, 7 }, { 19, 10, 20, 11 } } },
{ "10_{76}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 20, 7, 19 }, { 8, 14, 9, 13 }, { 10, 16, 11, 15 }, { 12, 1, 13, 2 }, { 14, 10, 15, 9 }, { 16, 8, 17, 7 }, { 18, 6, 19, 5 }, { 20, 4, 1, 3 } } },
{ "10_{77}", { { 1, 7, 2, 6 }, { 3, 14, 4, 15 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 18, 10, 19 }, { 11, 20, 12, 1 }, { 13, 16, 14, 17 }, { 15, 4, 16, 5 }, { 17, 12, 18, 13 }, { 19, 10, 20, 11 } } },
{ "10_{78}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 13, 10, 12 }, { 11, 1, 12, 20 }, { 13, 18, 14, 19 }, { 15, 5, 16, 4 }, { 17, 14, 18, 15 }, { 19, 11, 20, 10 } } },
{ "10_{79}", { { 6, 2, 7, 1 }, { 8, 4, 9, 3 }, { 12, 6, 13, 5 }, { 18, 13, 19, 14 }, { 16, 9, 17, 10 }, { 10, 17, 11, 18 }, { 20, 15, 1, 16 }, { 14, 19, 15, 20 }, { 2, 8, 3, 7 }, { 4, 12, 5, 11 } } },
{ "10_{80}", { { 1, 17, 2, 16 }, { 3, 11, 4, 10 }, { 5, 19, 6, 18 }, { 7, 13, 8, 12 }, { 9, 5, 10, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 15, 1, 16, 20 }, { 17, 3, 18, 2 }, { 19, 7, 20, 6 } } },
{ "10_{81}", { { 4, 2, 5, 1 }, { 8, 4, 9, 3 }, { 12, 6, 13, 5 }, { 16, 9, 17, 10 }, { 20, 17, 1, 18 }, { 18, 13, 19, 14 }, { 14, 19, 15, 20 }, { 10, 15, 11, 16 }, { 6, 12, 7, 11 }, { 2, 8, 3, 7 } } },
{ "10_{82}", { { 1, 12, 2, 13 }, { 3, 15, 4, 14 }, { 5, 19, 6, 18 }, { 7, 1, 8, 20 }, { 9, 2, 10, 3 }, { 11, 16, 12, 17 }, { 13, 9, 14, 8 }, { 15, 10, 16, 11 }, { 17, 5, 18, 4 }, { 19, 7, 20, 6 } } },
{ "10_{83}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 16, 9, 15 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 16, 3, 17, 4 }, { 18, 13, 19, 14 }, { 20, 11, 1, 12 } } },
{ "10_{84}", { { 2, 10, 3, 9 }, { 4, 2, 5, 1 }, { 6, 13, 7, 14 }, { 8, 12, 9, 11 }, { 10, 4, 11, 3 }, { 12, 17, 13, 18 }, { 14, 20, 15, 19 }, { 16, 7, 17, 8 }, { 18, 6, 19, 5 }, { 20, 16, 1, 15 } } },
{ "10_{85}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 16, 9, 15 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } },
{ "10_{86}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 15, 9, 16 }, { 10, 18, 11, 17 }, { 12, 20, 13, 19 }, { 14, 4, 15, 3 }, { 16, 5, 17, 6 }, { 18, 14, 19, 13 }, { 20, 12, 1, 11 } } },
{ "10_{87}", { { 2, 11, 3, 12 }, { 4, 14, 5, 13 }, { 6, 1, 7, 2 }, { 8, 16, 9, 15 }, { 10, 8, 11, 7 }, { 12, 19, 13, 20 }, { 14, 18, 15, 17 }, { 16, 10, 17, 9 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } },
{ "10_{88}", { { 4, 2, 5, 1 }, { 20, 14, 1, 13 }, { 8, 3, 9, 4 }, { 2, 9, 3, 10 }, { 14, 7, 15, 8 }, { 18, 15, 19, 16 }, { 12, 6, 13, 5 }, { 10, 18, 11, 17 }, { 16, 12, 17, 11 }, { 6, 19, 7, 20 } } },
{ "10_{89}", { { 2, 7, 3, 8 }, { 4, 13, 5, 14 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 15, 11, 16 }, { 12, 19, 13, 20 }, { 14, 18, 15, 17 }, { 16, 9, 17, 10 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } },
{ "10_{90}", { { 2, 9, 3, 10 }, { 4, 13, 5, 14 }, { 6, 20, 7, 19 }, { 8, 16, 9, 15 }, { 10, 3, 11, 4 }, { 12, 18, 13, 17 }, { 14, 1, 15, 2 }, { 16, 12, 17, 11 }, { 18, 8, 19, 7 }, { 20, 6, 1, 5 } } },
{ "10_{91}", { { 6, 2, 7, 1 }, { 20, 6, 1, 5 }, { 16, 9, 17, 10 }, { 10, 3, 11, 4 }, { 2, 18, 3, 17 }, { 14, 7, 15, 8 }, { 8, 15, 9, 16 }, { 12, 20, 13, 19 }, { 18, 12, 19, 11 }, { 4, 13, 5, 14 } } },
{ "10_{92}", { { 1, 9, 2, 8 }, { 3, 19, 4, 18 }, { 5, 12, 6, 13 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 17, 12, 16 }, { 13, 4, 14, 5 }, { 15, 1, 16, 20 }, { 17, 7, 18, 6 }, { 19, 15, 20, 14 } } },
{ "10_{93}", { { 2, 17, 3, 18 }, { 4, 12, 5, 11 }, { 6, 20, 7, 19 }, { 8, 15, 9, 16 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 7, 15, 8 }, { 16, 1, 17, 2 }, { 18, 13, 19, 14 }, { 20, 10, 1, 9 } } },
{ "10_{94}", { { 1, 9, 2, 8 }, { 3, 10, 4, 11 }, { 5, 14, 6, 15 }, { 7, 1, 8, 20 }, { 9, 17, 10, 16 }, { 11, 4, 12, 5 }, { 13, 19, 14, 18 }, { 15, 2, 16, 3 }, { 17, 13, 18, 12 }, { 19, 7, 20, 6 } } },
{ "10_{95}", { { 2, 16, 3, 15 }, { 4, 11, 5, 12 }, { 6, 17, 7, 18 }, { 8, 13, 9, 14 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 2, 15, 1 }, { 16, 9, 17, 10 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } },
{ "10_{96}", { { 1, 16, 2, 17 }, { 3, 10, 4, 11 }, { 5, 1, 6, 20 }, { 7, 12, 8, 13 }, { 9, 4, 10, 5 }, { 11, 19, 12, 18 }, { 13, 6, 14, 7 }, { 15, 2, 16, 3 }, { 17, 15, 18, 14 }, { 19, 9, 20, 8 } } },
{ "10_{97}", { { 2, 12, 3, 11 }, { 4, 18, 5, 17 }, { 6, 13, 7, 14 }, { 8, 6, 9, 5 }, { 10, 20, 11, 19 }, { 12, 7, 13, 8 }, { 14, 2, 15, 1 }, { 16, 10, 17, 9 }, { 18, 4, 19, 3 }, { 20, 16, 1, 15 } } },
{ "10_{98}", { { 1, 10, 2, 11 }, { 3, 17, 4, 16 }, { 5, 13, 6, 12 }, { 7, 19, 8, 18 }, { 9, 15, 10, 14 }, { 11, 20, 12, 1 }, { 13, 7, 14, 6 }, { 15, 3, 16, 2 }, { 17, 9, 18, 8 }, { 19, 5, 20, 4 } } },
{ "10_{99}", { { 6, 2, 7, 1 }, { 10, 4, 11, 3 }, { 16, 11, 17, 12 }, { 14, 7, 15, 8 }, { 8, 15, 9, 16 }, { 20, 13, 1, 14 }, { 12, 19, 13, 20 }, { 18, 6, 19, 5 }, { 2, 10, 3, 9 }, { 4, 18, 5, 17 } } },
{ "10_{100}", { { 2, 9, 3, 10 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 16, 11, 15 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 3, 17, 4 }, { 18, 5, 19, 6 }, { 20, 13, 1, 14 } } },
{ "10_{101}", { { 2, 12, 3, 11 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 20, 9, 19 }, { 10, 6, 11, 5 }, { 12, 2, 13, 1 }, { 14, 10, 15, 9 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 8, 1, 7 } } },
{ "10_{102}", { { 2, 9, 3, 10 }, { 4, 12, 5, 11 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 19, 11, 20 }, { 12, 6, 13, 5 }, { 14, 1, 15, 2 }, { 16, 8, 17, 7 }, { 18, 4, 19, 3 }, { 20, 13, 1, 14 } } },
{ "10_{103}", { { 2, 9, 3, 10 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 16, 11, 15 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 5, 17, 6 }, { 18, 3, 19, 4 }, { 20, 13, 1, 14 } } },
{ "10_{104}", { { 6, 2, 7, 1 }, { 16, 4, 17, 3 }, { 18, 9, 19, 10 }, { 14, 7, 15, 8 }, { 20, 13, 1, 14 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 12, 6, 13, 5 }, { 4, 12, 5, 11 }, { 2, 16, 3, 15 } } },
{ "10_{105}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 20 }, { 7, 18, 8, 19 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 7, 14, 6 }, { 15, 4, 16, 5 }, { 17, 8, 18, 9 }, { 19, 15, 20, 14 } } },
{ "10_{106}", { { 1, 15, 2, 14 }, { 3, 10, 4, 11 }, { 5, 17, 6, 16 }, { 7, 13, 8, 12 }, { 9, 2, 10, 3 }, { 11, 18, 12, 19 }, { 13, 1, 14, 20 }, { 15, 5, 16, 4 }, { 17, 7, 18, 6 }, { 19, 8, 20, 9 } } },
{ "10_{107}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 20 }, { 7, 14, 8, 15 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 18, 14, 19 }, { 15, 4, 16, 5 }, { 17, 8, 18, 9 }, { 19, 7, 20, 6 } } },
{ "10_{108}", { { 1, 15, 2, 14 }, { 3, 11, 4, 10 }, { 5, 12, 6, 13 }, { 7, 16, 8, 17 }, { 9, 3, 10, 2 }, { 11, 18, 12, 19 }, { 13, 1, 14, 20 }, { 15, 8, 16, 9 }, { 17, 6, 18, 7 }, { 19, 5, 20, 4 } } },
{ "10_{109}", { { 6, 2, 7, 1 }, { 10, 4, 11, 3 }, { 18, 11, 19, 12 }, { 16, 7, 17, 8 }, { 8, 17, 9, 18 }, { 20, 15, 1, 16 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 2, 10, 3, 9 }, { 4, 14, 5, 13 } } },
{ "10_{110}", { { 1, 14, 2, 15 }, { 3, 10, 4, 11 }, { 5, 1, 6, 20 }, { 7, 17, 8, 16 }, { 9, 4, 10, 5 }, { 11, 19, 12, 18 }, { 13, 2, 14, 3 }, { 15, 7, 16, 6 }, { 17, 13, 18, 12 }, { 19, 9, 20, 8 } } },
{ "10_{111}", { { 1, 9, 2, 8 }, { 3, 19, 4, 18 }, { 5, 11, 6, 10 }, { 7, 14, 8, 15 }, { 9, 3, 10, 2 }, { 11, 17, 12, 16 }, { 13, 1, 14, 20 }, { 15, 6, 16, 7 }, { 17, 5, 18, 4 }, { 19, 13, 20, 12 } } },
{ "10_{112}", { { 2, 10, 3, 9 }, { 4, 11, 5, 12 }, { 6, 19, 7, 20 }, { 8, 14, 9, 13 }, { 10, 15, 11, 16 }, { 12, 18, 13, 17 }, { 14, 1, 15, 2 }, { 16, 4, 17, 3 }, { 18, 5, 19, 6 }, { 20, 7, 1, 8 } } },
{ "10_{113}", { { 2, 8, 3, 7 }, { 4, 14, 5, 13 }, { 6, 11, 7, 12 }, { 8, 16, 9, 15 }, { 10, 2, 11, 1 }, { 12, 19, 13, 20 }, { 14, 18, 15, 17 }, { 16, 10, 17, 9 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } },
{ "10_{114}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 5, 14, 6, 15 }, { 7, 12, 8, 13 }, { 9, 17, 10, 16 }, { 11, 18, 12, 19 }, { 13, 6, 14, 7 }, { 15, 1, 16, 20 }, { 17, 2, 18, 3 }, { 19, 5, 20, 4 } } },
{ "10_{115}", { { 6, 2, 7, 1 }, { 14, 6, 15, 5 }, { 20, 15, 1, 16 }, { 16, 7, 17, 8 }, { 8, 19, 9, 20 }, { 18, 11, 19, 12 }, { 10, 4, 11, 3 }, { 4, 10, 5, 9 }, { 12, 17, 13, 18 }, { 2, 14, 3, 13 } } },
{ "10_{116}", { { 2, 16, 3, 15 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 4, 11, 3 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 9, 17, 10 }, { 18, 5, 19, 6 }, { 20, 13, 1, 14 } } },
{ "10_{117}", { { 1, 14, 2, 15 }, { 3, 8, 4, 9 }, { 5, 18, 6, 19 }, { 7, 17, 8, 16 }, { 9, 20, 10, 1 }, { 11, 4, 12, 5 }, { 13, 7, 14, 6 }, { 15, 2, 16, 3 }, { 17, 13, 18, 12 }, { 19, 10, 20, 11 } } },
{ "10_{118}", { { 6, 2, 7, 1 }, { 18, 6, 19, 5 }, { 20, 13, 1, 14 }, { 12, 19, 13, 20 }, { 14, 7, 15, 8 }, { 8, 3, 9, 4 }, { 2, 16, 3, 15 }, { 10, 18, 11, 17 }, { 16, 10, 17, 9 }, { 4, 11, 5, 12 } } },
{ "10_{119}", { { 1, 16, 2, 17 }, { 3, 10, 4, 11 }, { 5, 1, 6, 20 }, { 7, 2, 8, 3 }, { 9, 14, 10, 15 }, { 11, 19, 12, 18 }, { 13, 4, 14, 5 }, { 15, 8, 16, 9 }, { 17, 7, 18, 6 }, { 19, 13, 20, 12 } } },
{ "10_{120}", { { 2, 10, 3, 9 }, { 4, 18, 5, 17 }, { 6, 12, 7, 11 }, { 8, 4, 9, 3 }, { 10, 16, 11, 15 }, { 12, 20, 13, 19 }, { 14, 8, 15, 7 }, { 16, 2, 17, 1 }, { 18, 14, 19, 13 }, { 20, 6, 1, 5 } } },
{ "10_{121}", { { 2, 11, 3, 12 }, { 4, 10, 5, 9 }, { 6, 2, 7, 1 }, { 8, 16, 9, 15 }, { 10, 17, 11, 18 }, { 12, 8, 13, 7 }, { 14, 20, 15, 19 }, { 16, 3, 17, 4 }, { 18, 6, 19, 5 }, { 20, 14, 1, 13 } } },
{ "10_{122}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 5, 12, 6, 13 }, { 7, 16, 8, 17 }, { 9, 15, 10, 14 }, { 11, 18, 12, 19 }, { 13, 1, 14, 20 }, { 15, 2, 16, 3 }, { 17, 6, 18, 7 }, { 19, 5, 20, 4 } } },
{ "10_{123}", { { 8, 2, 9, 1 }, { 10, 3, 11, 4 }, { 12, 6, 13, 5 }, { 4, 18, 5, 17 }, { 18, 11, 19, 12 }, { 2, 15, 3, 16 }, { 16, 10, 17, 9 }, { 20, 14, 1, 13 }, { 14, 7, 15, 8 }, { 6, 19, 7, 20 } } },
{ "10_{124}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 13, 6, 12 }, { 7, 19, 8, 18 }, { 9, 3, 10, 2 }, { 11, 5, 12, 4 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 17, 7, 18, 6 }, { 20, 16, 1, 15 } } },
{ "10_{125}", { { 1, 4, 2, 5 }, { 3, 8, 4, 9 }, { 5, 14, 6, 15 }, { 20, 16, 1, 15 }, { 16, 10, 17, 9 }, { 18, 12, 19, 11 }, { 10, 18, 11, 17 }, { 12, 20, 13, 19 }, { 13, 6, 14, 7 }, { 7, 2, 8, 3 } } },
{ "10_{126}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 14, 9, 15, 10 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } },
{ "10_{127}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 16, 3, 17, 4 }, { 17, 11, 18, 10 }, { 19, 13, 20, 12 } } },
{ "10_{128}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 13, 6, 12 }, { 7, 19, 8, 18 }, { 9, 5, 10, 4 }, { 11, 3, 12, 2 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 17, 7, 18, 6 }, { 20, 16, 1, 15 } } },
{ "10_{129}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 19, 11, 20 }, { 12, 17, 13, 18 }, { 14, 9, 15, 10 }, { 15, 5, 16, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } },
{ "10_{130}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 19, 11, 20 }, { 12, 17, 13, 18 }, { 14, 9, 15, 10 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } },
{ "10_{131}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 16, 3, 17, 4 }, { 17, 13, 18, 12 }, { 19, 11, 20, 10 } } },
{ "10_{132}", { { 1, 8, 2, 9 }, { 3, 18, 4, 19 }, { 5, 12, 6, 13 }, { 7, 10, 8, 11 }, { 9, 2, 10, 3 }, { 11, 6, 12, 7 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 17, 4, 18, 5 }, { 20, 16, 1, 15 } } },
{ "10_{133}", { { 2, 16, 3, 15 }, { 4, 2, 5, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 11, 18, 12, 19 }, { 13, 9, 14, 8 }, { 14, 20, 15, 19 }, { 16, 4, 17, 3 }, { 17, 10, 18, 11 }, { 20, 6, 1, 5 } } },
{ "10_{134}", { { 2, 16, 3, 15 }, { 4, 2, 5, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 10, 18, 11, 17 }, { 13, 9, 14, 8 }, { 14, 20, 15, 19 }, { 16, 4, 17, 3 }, { 18, 12, 19, 11 }, { 20, 6, 1, 5 } } },
{ "10_{135}", { { 1, 4, 2, 5 }, { 3, 16, 4, 17 }, { 5, 20, 6, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 10, 18, 11, 17 }, { 13, 9, 14, 8 }, { 15, 2, 16, 3 }, { 18, 12, 19, 11 }, { 19, 14, 20, 15 } } },
{ "10_{136}", { { 2, 17, 3, 18 }, { 4, 2, 5, 1 }, { 7, 14, 8, 15 }, { 9, 7, 10, 6 }, { 12, 19, 13, 20 }, { 13, 8, 14, 9 }, { 15, 11, 16, 10 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 6, 1, 5 } } },
{ "10_{137}", { { 1, 15, 2, 14 }, { 4, 8, 5, 7 }, { 6, 19, 7, 20 }, { 9, 17, 10, 16 }, { 11, 8, 12, 9 }, { 13, 3, 14, 2 }, { 15, 11, 16, 10 }, { 17, 12, 18, 13 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } },
{ "10_{138}", { { 1, 15, 2, 14 }, { 4, 8, 5, 7 }, { 6, 19, 7, 20 }, { 8, 12, 9, 11 }, { 10, 15, 11, 16 }, { 12, 18, 13, 17 }, { 13, 3, 14, 2 }, { 16, 9, 17, 10 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } },
{ "10_{139}", { { 1, 11, 2, 10 }, { 4, 18, 5, 17 }, { 5, 13, 6, 12 }, { 7, 15, 8, 14 }, { 9, 1, 10, 20 }, { 11, 3, 12, 2 }, { 13, 7, 14, 6 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 19, 9, 20, 8 } } },
{ "10_{140}", { { 1, 15, 2, 14 }, { 3, 10, 4, 11 }, { 5, 12, 6, 13 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 11, 4, 12, 5 }, { 13, 1, 14, 20 }, { 16, 8, 17, 7 }, { 18, 10, 19, 9 }, { 19, 3, 20, 2 } } },
{ "10_{141}", { { 2, 11, 3, 12 }, { 4, 9, 5, 10 }, { 5, 19, 6, 18 }, { 7, 15, 8, 14 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 13, 17, 14, 16 }, { 15, 9, 16, 8 }, { 17, 1, 18, 20 }, { 19, 7, 20, 6 } } },
{ "10_{142}", { { 1, 15, 2, 14 }, { 4, 12, 5, 11 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 4, 11, 3 }, { 12, 6, 13, 5 }, { 13, 1, 14, 20 }, { 16, 8, 17, 7 }, { 18, 10, 19, 9 }, { 19, 3, 20, 2 } } },
{ "10_{143}", { { 2, 11, 3, 12 }, { 4, 9, 5, 10 }, { 6, 19, 7, 20 }, { 7, 15, 8, 14 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 13, 17, 14, 16 }, { 15, 9, 16, 8 }, { 18, 5, 19, 6 }, { 20, 17, 1, 18 } } },
{ "10_{144}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 12, 20, 13, 19 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 18, 12, 19, 11 }, { 20, 14, 1, 13 } } },
{ "10_{145}", { { 1, 14, 2, 15 }, { 3, 18, 4, 19 }, { 6, 13, 7, 14 }, { 8, 6, 9, 5 }, { 9, 16, 10, 17 }, { 11, 2, 12, 3 }, { 12, 7, 13, 8 }, { 15, 20, 16, 1 }, { 17, 4, 18, 5 }, { 19, 10, 20, 11 } } },
{ "10_{146}", { { 1, 14, 2, 15 }, { 4, 10, 5, 9 }, { 6, 14, 7, 13 }, { 8, 17, 9, 18 }, { 10, 4, 11, 3 }, { 12, 8, 13, 7 }, { 15, 20, 16, 1 }, { 16, 11, 17, 12 }, { 18, 5, 19, 6 }, { 19, 3, 20, 2 } } },
{ "10_{147}", { { 2, 8, 3, 7 }, { 3, 18, 4, 19 }, { 6, 11, 7, 12 }, { 8, 16, 9, 15 }, { 10, 2, 11, 1 }, { 13, 4, 14, 5 }, { 14, 18, 15, 17 }, { 16, 10, 17, 9 }, { 19, 13, 20, 12 }, { 20, 5, 1, 6 } } },
{ "10_{148}", { { 2, 17, 3, 18 }, { 4, 9, 5, 10 }, { 6, 19, 7, 20 }, { 7, 13, 8, 12 }, { 10, 3, 11, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 16, 1, 17, 2 }, { 18, 5, 19, 6 }, { 20, 15, 1, 16 } } },
{ "10_{149}", { { 1, 17, 2, 16 }, { 4, 9, 5, 10 }, { 5, 19, 6, 18 }, { 7, 13, 8, 12 }, { 10, 3, 11, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 15, 1, 16, 20 }, { 17, 3, 18, 2 }, { 19, 7, 20, 6 } } },
{ "10_{150}", { { 1, 17, 2, 16 }, { 3, 7, 4, 6 }, { 5, 1, 6, 20 }, { 8, 14, 9, 13 }, { 10, 8, 11, 7 }, { 11, 18, 12, 19 }, { 14, 10, 15, 9 }, { 15, 3, 16, 2 }, { 17, 12, 18, 13 }, { 19, 5, 20, 4 } } },
{ "10_{151}", { { 2, 15, 3, 16 }, { 4, 19, 5, 20 }, { 6, 3, 7, 4 }, { 8, 14, 9, 13 }, { 10, 8, 11, 7 }, { 11, 18, 12, 19 }, { 14, 10, 15, 9 }, { 16, 1, 17, 2 }, { 17, 12, 18, 13 }, { 20, 5, 1, 6 } } },
{ "10_{152}", { { 1, 7, 2, 6 }, { 3, 9, 4, 8 }, { 5, 19, 6, 18 }, { 7, 3, 8, 2 }, { 10, 16, 11, 15 }, { 12, 20, 13, 19 }, { 14, 10, 15, 9 }, { 16, 12, 17, 11 }, { 17, 5, 18, 4 }, { 20, 14, 1, 13 } } },
{ "10_{153}", { { 2, 17, 3, 18 }, { 3, 11, 4, 10 }, { 6, 19, 7, 20 }, { 7, 13, 8, 12 }, { 9, 5, 10, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 16, 1, 17, 2 }, { 18, 5, 19, 6 }, { 20, 15, 1, 16 } } },
{ "10_{154}", { { 1, 17, 2, 16 }, { 3, 7, 4, 6 }, { 5, 1, 6, 20 }, { 8, 14, 9, 13 }, { 10, 8, 11, 7 }, { 12, 18, 13, 17 }, { 14, 10, 15, 9 }, { 15, 3, 16, 2 }, { 18, 12, 19, 11 }, { 19, 5, 20, 4 } } },
{ "10_{155}", { { 1, 11, 2, 10 }, { 3, 13, 4, 12 }, { 5, 14, 6, 15 }, { 6, 19, 7, 20 }, { 9, 16, 10, 17 }, { 11, 3, 12, 2 }, { 13, 19, 14, 18 }, { 15, 8, 16, 9 }, { 17, 4, 18, 5 }, { 20, 7, 1, 8 } } },
{ "10_{156}", { { 1, 13, 2, 12 }, { 3, 8, 4, 9 }, { 5, 14, 6, 15 }, { 7, 18, 8, 19 }, { 10, 15, 11, 16 }, { 11, 1, 12, 20 }, { 13, 6, 14, 7 }, { 16, 9, 17, 10 }, { 17, 4, 18, 5 }, { 19, 3, 20, 2 } } },
{ "10_{157}", { { 2, 8, 3, 7 }, { 3, 10, 4, 11 }, { 5, 18, 6, 19 }, { 8, 15, 9, 16 }, { 11, 4, 12, 5 }, { 14, 1, 15, 2 }, { 16, 9, 17, 10 }, { 17, 13, 18, 12 }, { 19, 6, 20, 7 }, { 20, 13, 1, 14 } } },
{ "10_{158}", { { 3, 9, 4, 8 }, { 4, 11, 5, 12 }, { 6, 20, 7, 19 }, { 9, 17, 10, 16 }, { 12, 5, 13, 6 }, { 14, 1, 15, 2 }, { 15, 11, 16, 10 }, { 17, 3, 18, 2 }, { 18, 8, 19, 7 }, { 20, 13, 1, 14 } } },
{ "10_{159}", { { 2, 10, 3, 9 }, { 4, 11, 5, 12 }, { 5, 19, 6, 18 }, { 7, 1, 8, 20 }, { 8, 14, 9, 13 }, { 10, 15, 11, 16 }, { 12, 18, 13, 17 }, { 14, 1, 15, 2 }, { 16, 4, 17, 3 }, { 19, 7, 20, 6 } } },
{ "10_{160}", { { 1, 13, 2, 12 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 4, 9, 3 }, { 10, 15, 11, 16 }, { 11, 1, 12, 20 }, { 14, 6, 15, 5 }, { 16, 9, 17, 10 }, { 18, 8, 19, 7 }, { 19, 3, 20, 2 } } },
{ "10_{161}", { { 1, 13, 2, 12 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 4, 9, 3 }, { 9, 17, 10, 16 }, { 11, 1, 12, 20 }, { 14, 6, 15, 5 }, { 15, 11, 16, 10 }, { 18, 8, 19, 7 }, { 19, 3, 20, 2 } } },
{ "10_{162}", { { 2, 9, 3, 10 }, { 5, 12, 6, 13 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 19, 11, 20 }, { 11, 4, 12, 5 }, { 14, 1, 15, 2 }, { 16, 8, 17, 7 }, { 18, 4, 19, 3 }, { 20, 13, 1, 14 } } },
{ "10_{163}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 6, 14, 7, 13 }, { 9, 17, 10, 16 }, { 11, 18, 12, 19 }, { 12, 8, 13, 7 }, { 14, 6, 15, 5 }, { 15, 1, 16, 20 }, { 17, 2, 18, 3 }, { 19, 5, 20, 4 } } },
{ "10_{164}", { { 2, 12, 3, 11 }, { 3, 16, 4, 17 }, { 6, 14, 7, 13 }, { 8, 15, 9, 16 }, { 9, 5, 10, 4 }, { 12, 2, 13, 1 }, { 14, 19, 15, 20 }, { 17, 10, 18, 11 }, { 18, 5, 19, 6 }, { 20, 8, 1, 7 } } },
{ "10_{165}", { { 1, 8, 2, 9 }, { 3, 12, 4, 13 }, { 4, 17, 5, 18 }, { 7, 2, 8, 3 }, { 9, 14, 10, 15 }, { 11, 17, 12, 16 }, { 13, 6, 14, 7 }, { 15, 20, 16, 1 }, { 18, 5, 19, 6 }, { 19, 11, 20, 10 } } }
};
unsigned
rolfsen_crossing_knots (unsigned n)
{
assert (n <= 10);
switch (n)
{
case 0: // ??? really?
case 1:
case 2:
return 0;
case 3:
return sizeof rolfsen3 / sizeof rolfsen3[0];
case 4:
return sizeof rolfsen4 / sizeof rolfsen4[0];
case 5:
return sizeof rolfsen5 / sizeof rolfsen5[0];
case 6:
return sizeof rolfsen6 / sizeof rolfsen6[0];
case 7:
return sizeof rolfsen7 / sizeof rolfsen7[0];
case 8:
return sizeof rolfsen8 / sizeof rolfsen8[0];
case 9:
return sizeof rolfsen9 / sizeof rolfsen9[0];
case 10:
return sizeof rolfsen10 / sizeof rolfsen10[0];
default: abort ();
}
}
planar_diagram
rolfsen_knot (unsigned n, unsigned k)
{
assert (n <= 10);
assert (k >= 1);
assert (k <= rolfsen_crossing_knots (n));
k --;
switch (n)
{
case 3:
return planar_diagram (rolfsen3[k].name, 3, rolfsen3[k].crossing_ar);
case 4:
return planar_diagram (rolfsen4[k].name, 4, rolfsen4[k].crossing_ar);
case 5:
return planar_diagram (rolfsen5[k].name, 5, rolfsen5[k].crossing_ar);
case 6:
return planar_diagram (rolfsen6[k].name, 6, rolfsen6[k].crossing_ar);
case 7:
return planar_diagram (rolfsen7[k].name, 7, rolfsen7[k].crossing_ar);
case 8:
return planar_diagram (rolfsen8[k].name, 8, rolfsen8[k].crossing_ar);
case 9:
return planar_diagram (rolfsen9[k].name, 9, rolfsen9[k].crossing_ar);
case 10:
return planar_diagram (rolfsen10[k].name, 10, rolfsen10[k].crossing_ar);
default: abort ();
}
}
unsigned htw_alternating[16] = {
0, 0, 1, 1, 2, 3, 7, 18, 41, 123, 367, 1288, 4878, 19536, 85263, 379799
};
unsigned htw_nonalternating[16] = {
0, 0, 0, 0, 0, 0, 0, 3, 8, 42, 185, 888, 5110, 27436, 168030, 1008906
};
unsigned
htw_knots (unsigned n, bool alternating)
{
assert (between (1, n, 16));
if (alternating)
return htw_alternating[n - 1];
else
return htw_nonalternating[n - 1];
}
unsigned
htw_knots (unsigned n)
{
assert (between (1, n, 16));
return htw_alternating[n - 1] + htw_nonalternating[n - 1];
}
dt_code
htw_knot (unsigned n, bool alternating, unsigned k)
{
assert (between (1, n, 16));
assert (between (1, k, htw_knots (n, alternating)));
const char *file;
long off;
if (alternating)
{
unsigned before = 0;
for (unsigned i = 0; i < n - 1; i ++)
before += htw_alternating[i];
off = 8 * (before + k - 1);
file = HOME "/alternating";
}
else
{
unsigned before = 0;
for (unsigned i = 0; i < n - 1; i ++)
before += htw_nonalternating[i];
off = 10 * (before + k - 1);
file = HOME "/nonalternating";
}
FILE *fp = fopen (file, "r");
if (fp == 0)
{
stderror ("fopen: %s", file);
exit (EXIT_FAILURE);
}
if (fseek (fp, off, SEEK_SET) != 0)
{
stderror ("fseek");
exit (EXIT_FAILURE);
}
unsigned char buf[10];
size_t count = (n + 1) / 2;
if (!alternating)
count += 2;
if (fread (buf, 1, count, fp) != count)
{
stderror ("fread");
exit (EXIT_FAILURE);
}
fclose (fp);
fp = 0;
int even_labels_ar[16];
for (unsigned i = 0; i < n; i ++)
{
unsigned j = buf[i / 2];
j = is_even (i)
? j >> 4
: j & 0xf;
if (j == 0)
j = 16;
j *= 2;
even_labels_ar[i] = j;
}
if (!alternating)
{
unsigned signs = buf[count - 2] << 8 | buf[count - 1];
for (unsigned i = 0; i < n; i ++)
{
if (!unsigned_bittest (signs, 16 - i))
even_labels_ar[i] *= -1;
}
}
char buf2[100];
sprintf (buf2, "%d%c%d", n, alternating ? 'a' : 'n', k);
return dt_code (std::string (buf2), n, even_labels_ar);
}
dt_code
htw_knot (unsigned n, unsigned k)
{
assert (between (1, n, 16));
assert (k >= 1);
unsigned na = htw_knots (n, 1);
if (k <= na)
return htw_knot (n, 1, k);
else
return htw_knot (n, 0, k - na);
}
unsigned mt_alternating[14] = {
0, 0, 0, 1, 3, 8, 14, 39, 96, 297, 915, 3308, 12417, 51347,
};
unsigned mt_nonalternating[14] = {
0, 0, 0, 0, 0, 1, 2, 11, 36, 155, 644, 3144, 16454, 91616,
};
unsigned
mt_links (unsigned n, bool alternating)
{
assert (between (1, n, 14));
if (alternating)
return mt_alternating[n - 1];
else
return mt_nonalternating[n - 1];
}
unsigned
mt_links (unsigned n)
{
assert (between (1, n, 14));
return mt_alternating[n - 1] + mt_nonalternating[n - 1];
}
dt_code
mt_link (unsigned n, bool alternating, unsigned k)
{
assert (between (1, n, 14));
assert (between (1, k, mt_links (n, alternating)));
char buf[1000];
sprintf (buf, HOME "/mtlinks/hyperbolic_data_%02d%c", n, alternating ? 'a' : 'n');
FILE *fp = fopen (buf, "r");
if (fp == 0)
{
stderror ("fopen: %s", buf);
exit (EXIT_FAILURE);
}
char *p;
for (unsigned i = 1; i <= k; i ++)
{
if (fgets (buf, 1000, fp) == 0)
{
stderror ("fgets: %s", buf);
exit (EXIT_FAILURE);
}
assert (alpha_to_int (buf[0]) == (int)n);
}
fclose (fp);
char buf2[1000];
sprintf (buf2, "L%d%c%d", n, alternating ? 'a' : 'n', k);
return dt_code (buf2, buf);
}
dt_code
mt_link (unsigned n, unsigned k)
{
assert (between (1, n, 16));
assert (k >= 1);
unsigned na = mt_links (n, 1);
if (k <= na)
return mt_link (n, 1, k);
else
return mt_link (n, 0, k - na);
}
planar_diagram
torus_knot (unsigned n_strands, unsigned n_shifts)
{
basedvector<basedvector<int, 1>, 1> crossings ((n_strands - 1) * n_shifts);
for (unsigned i = 1; i <= crossings.size (); i ++)
crossings[i].resize (4);
basedvector<unsigned, 1> start_strands (n_strands),
strands (n_strands),
new_strands (n_strands);
unsigned n_crossings = 0;
unsigned n_edges = 0;
for (unsigned i = 1; i <= n_strands; i ++)
strands[i] = start_strands[i] = ++ n_edges;
for (unsigned i = 1; i <= n_shifts; i ++)
{
if (i == n_shifts)
new_strands = start_strands;
else
{
for (unsigned j = 1; j <= n_strands; j ++)
new_strands[j] = ++ n_edges;
}
unsigned p = strands[1];
for (unsigned j = 1; j < n_strands; j ++)
{
unsigned c = ++ n_crossings;
unsigned newp;
if (j == n_strands - 1)
newp = new_strands[n_strands];
else
newp = ++ n_edges;
crossings[c][1] = strands[j + 1];
crossings[c][2] = newp;
crossings[c][3] = new_strands[j];
crossings[c][4] = p;
p = newp;
}
basedvector<unsigned, 1> tmp = new_strands;
new_strands = strands;
strands = tmp;
}
assert (n_crossings == crossings.size ());
assert (n_edges == n_crossings * 2);
char buf[1000];
sprintf (buf, "T(%d,%d)", n_strands, n_shifts);
return planar_diagram (std::string (buf), crossings);
}
knot_diagram
braid (unsigned n_strands, unsigned n_twists, int twists_ar[])
{
basedvector<int, 1> twists (n_twists);
for (unsigned i = 1; i <= n_twists; i ++)
twists[i] = twists_ar[i - 1];
return braid (n_strands, twists);
}
knot_diagram
braid (unsigned n_strands, const basedvector<int, 1> &twists)
{
unsigned e = 0;
basedvector<unsigned, 1> final_strands (n_strands);
basedvector<unsigned, 1> strands (n_strands);
for (unsigned i = 1; i <= n_strands; i ++)
{
++ e;
final_strands[i] = strands[i] = e;
}
basedvector<unsigned, 1> last_twist (n_strands);
for (unsigned i = 1; i <= n_strands; i ++)
last_twist[i] = 0;
for (unsigned i = 1; i <= twists.size (); i ++)
{
unsigned t = abs (twists[i]);
last_twist[t] = i;
last_twist[t + 1] = i;
}
unsigned n_crossings = twists.size ();
for (unsigned i = 1; i <= n_strands; i ++)
{
if (last_twist[i] == 0)
n_crossings ++;
}
basedvector<basedvector<unsigned, 1>, 1> crossings (n_crossings);
for (unsigned i = 1; i <= n_crossings; i ++)
crossings[i] = basedvector<unsigned, 1> (4);
unsigned c = twists.size ();
for (unsigned i = 1; i <= n_strands; i ++)
{
if (last_twist[i] == 0)
{
++ c;
unsigned e1 = strands[i];
unsigned e2 = ++ e;
strands[i] = final_strands[i] = 0;
crossings[c][1] = edge_from_ept (e1);
crossings[c][2] = edge_to_ept (e2);
crossings[c][3] = edge_from_ept (e2);
crossings[c][4] = edge_to_ept (e1);
}
}
assert (c == n_crossings);
for (unsigned i = 1; i <= twists.size (); i ++)
{
unsigned t = abs (twists[i]);
unsigned e1 = strands[t],
e4 = strands[t + 1];
unsigned e2, e3;
if (last_twist[t] == i)
{
assert (final_strands[t] != 0);
e2 = final_strands[t];
strands[t] = final_strands[t] = 0;
}
else
{
e ++;
e2 = e;
strands[t] = e;
}
if (last_twist[t + 1] == i)
{
assert (final_strands[t + 1] != 0);
e3 = final_strands[t + 1];
strands[t + 1] = final_strands[t + 1] = 0;
}
else
{
e ++;
e3 = e;
strands[t + 1] = e;
}
if (twists[i] > 0)
{
crossings[i][1] = edge_to_ept (e1);
crossings[i][2] = edge_from_ept (e2);
crossings[i][3] = edge_from_ept (e3);
crossings[i][4] = edge_to_ept (e4);
}
else
{
crossings[i][1] = edge_from_ept (e2);
crossings[i][2] = edge_from_ept (e3);
crossings[i][3] = edge_to_ept (e4);
crossings[i][4] = edge_to_ept (e1);
}
}
assert (e == n_crossings * 2);
#ifndef NDEBUG
for (unsigned i = 1; i <= n_strands; i ++)
{
assert (strands[i] == 0);
assert (final_strands[i] == 0);
}
#endif
return knot_diagram ("abraid", crossings);
}
basedvector<basedvector<unsigned, 1>, 1>
mutant_knot_groups (unsigned n)
{
assert (11 <= n && n <= 15);
char buf[1000];
sprintf (buf, HOME "/mutant_knot_groups/dat%d", n);
FILE *fp = fopen (buf, "r");
if (fp == 0)
{
stderror ("fopen: %s", buf);
exit (EXIT_FAILURE);
}
basedvector<basedvector<unsigned, 1>, 1> r;
while (fgets (buf, sizeof buf, fp) != 0)
{
const char *p = buf;
basedvector<unsigned, 1> g;
unsigned i;
int k;
while (sscanf (p, "%d%n", &i, &k) == 1)
{
g.append (i);
p += k;
}
assert (*p == '\n');
assert (g.size () > 0);
r.append (g);
}
return r;
}
knot_diagram
knot_desc::diagram () const
{
switch (t)
{
case ROLFSEN:
return knot_diagram (rolfsen_knot (i, j));
case HTW:
return knot_diagram (htw_knot (i, j));
case HTW_ALT:
return knot_diagram (htw_knot (i, 1, j));
case HTW_NONALT:
return knot_diagram (htw_knot (i, 0, j));
case MT:
return knot_diagram (mt_link (i, j));
case MT_ALT:
return knot_diagram (mt_link (i, 1, j));
case MT_NONALT:
return knot_diagram (mt_link (i, 0, j));
case TORUS:
return knot_diagram (torus_knot (i, j));
default: abort ();
}
}
std::string
knot_desc::name () const
{
char buf[1000];
#if 0
sprintf (buf, "knot_desc(%d, %d, %d)", (int)t, i, j);
return buf;
#endif
switch (t)
{
case ROLFSEN:
sprintf (buf, "%d_%d", i, j);
break;
case HTW:
{
unsigned na = htw_knots (i, 1);
if (j <= na)
sprintf (buf, "%da%d", i, j);
else
sprintf (buf, "%dn%d", i, j - na);
}
break;
case HTW_ALT:
sprintf (buf, "%da%d", i, j);
break;
case HTW_NONALT:
sprintf (buf, "%dn%d", i, j);
break;
case MT:
{
unsigned na = mt_links (i, 1);
if (j <= na)
sprintf (buf, "L%da%d", i, j);
else
sprintf (buf, "L%dn%d", i, j - na);
}
break;
case MT_ALT:
sprintf (buf, "L%da%d", i, j);
break;
case MT_NONALT:
sprintf (buf, "L%dn%d", i, j);
break;
case TORUS:
sprintf (buf, "T(%d, %d)", i, j);
break;
default: abort ();
}
return buf;
}
unsigned
knot_desc::table_crossing_knots () const
{
switch (t)
{
case ROLFSEN:
return rolfsen_crossing_knots (i);
case HTW:
return htw_knots (i);
case HTW_ALT:
return htw_knots (i, 1);
case HTW_NONALT:
return htw_knots (i, 0);
case MT:
return mt_links (i);
case MT_ALT:
return mt_links (i, 1);
case MT_NONALT:
return mt_links (i, 0);
default: abort ();
}
}
knot_desc::knot_desc (reader &r)
{
int x;
read (r, x);
t = (table)x;
read (r, i);
read (r, j);
}
void
knot_desc::write_self (writer &w) const
{
write (w, (int)t);
write (w, i);
write (w, j);
}