Skip to content

Instantly share code, notes, and snippets.

@Parcly-Taxel
Last active February 16, 2022 10:10
Show Gist options
  • Save Parcly-Taxel/7a25b3a15c5580d6c3b77f0fdf9650cc to your computer and use it in GitHub Desktop.
Save Parcly-Taxel/7a25b3a15c5580d6c3b77f0fdf9650cc to your computer and use it in GitHub Desktop.
A351100
5 - 5 (exact)
orbits under (01234) of
0123 (5 blocks in orbit)
6 - 9 (optimal by each vertex having at least 2 unused tris)
orbits under (012345) of
0134 (3 blocks in orbit)
0123 (6)
7 - 15 (Gurobi)
orbits under (01234) of
0135 0136 0156 (5 blocks in orbit)
9 - 40 (optimal by each vertex having at least 2 unused tris, hence at least 6 unused tris overall,
but there are 168 tris overall, so there must be at least EIGHT unused tris and at most 40 tets)
orbits under (01234567) of
0124 0125 0135 0238 0238 (8 blocks in orbit)
11 - 80 (casework, using Gurobi)
orbits under (01234)(56789), (14)(23)(69)(78) of
0138 013X 018X 0289 0578 0578 (5 orbits in block)
0125 0159 0268 056X 068X (10)
12 - 108 (optimal by each vertex having at least 2 unused tris)
orbits under (0123456789AB), (1B)(2A)(39)(48)(57) of
0167 0268 (6 blocks in orbit)
0123 0145 0149 0158 0246 0257 (12)
0136 (24)
13 - 143 (exact)
orbits under (0123456789ABC), (1C)(2B)(3A)(49)(58)(67) of
0159 0167 0269 (13 blocks in orbit)
0124 0139 0146 0258 (26)
15 - 225 (optimal by each vertex having at least 2 unused tris)
orbits under (0123456789ABCDE), (1E)(2D)(3C)(4B)(5A)(69)(78) of
0123 0145 014C 016A 0178 0257 026B (15 blocks in orbit)
013B 0169 0248 0258 (30)
17 - 340 (exact)
orbits under (0123456789ABCDEFG), (1G)(2F)(3E)(4D)(5C)(6B)(7A)(89) of
013F 014E 0156 018A 0246 0279 027C 037D (17 blocks in orbit)
0128 013C 014B 0159 025D 036B (34)
18 - 405 (optimal by each vertex having at least 2 unused tris)
orbits under (0123456789ABCDEFGH), (1H)(2G)(3F)(4E)(5D)(6C)(7B)(8A) of
029B 039C 049D (9 blocks in orbit)
0123 014F 0156 0167 0189 025F 028A (18)
0138 014A 015C 0248 025D 026B 036A (36)
19 - 480-483 (Rob Pratt)
0127 012D 0139 013G 014A 014C 015C 015E 0169 016H 017F 018F 018I 01AE 01BG 01BH
01DI 023B 023I 024G 024I 025D 025F 0268 026C 027G 028A 029B 029E 02AH 02CF 02EH
0345 0347 035G 0369 036A 037C 038A 038F 03BC 03DE 03DH 03EF 03HI 0458 046E 046F
047A 048B 049C 049G 04BE 04DF 04DH 04HI 056A 056F 057E 057H 058G 059B 059D 05AI
05BI 05CH 067B 067D 068H 06BD 06CI 06EG 06GI 0789 078I 079H 07AI 07BE 07CD 07FG
089D 08BC 08CE 08DE 08GH 09AF 09AH 09CG 09EI 09FI 0ABF 0ABG 0ACD 0ACE 0ADG 0BDI
0BFH 0CFI 0CGH 0DFG 0EFH 0EGI 1238 123B 1247 124G 125B 125H 126E 126I 128A 129C
129E 12AG 12CF 12DH 12FI 134E 134I 135A 135D 136C 136D 137E 137I 138H 139B 13AF
13CF 13GH 1458 145I 146B 146F 147G 148C 149B 149E 14AH 14DF 14DH 1567 156H 1579
158E 159D 15AF 15BI 15CG 15FG 167D 168A 168G 169F 16AB 16CE 16GI 1789 178H 17AC
17AH 17BC 17BF 17DE 17GI 189G 18BD 18BE 18CI 18DF 19AD 19AG 19CH 19FI 19HI 1ABC
1ADI 1AEI 1BDG 1BEI 1BFH 1CDE 1CDG 1CHI 1EFG 1EFH 1EGH 2349 235C 235E 236F 236H
237A 237F 238E 239D 23AC 23DG 23GI 2456 245F 2468 2478 249H 24AB 24AC 24BE 24CE
24DI 24FH 2567 257A 259A 259G 25BD 25CE 25GI 25HI 267B 269A 269G 26AI 26BC 26DE
26DF 26GH 278D 279B 279I 27CH 27CI 27DF 27EG 27EH 289F 289I 28BH 28CG 28CH 28EI
28FG 29CD 29FH 2ABD 2ADH 2AEF 2AEG 2AFI 2BCI 2BEF 2BFG 2BHI 2CDG 2DEI 346G 346H
347D 348E 348F 349A 34AD 34BF 34BH 34CG 34CI 356C 356I 3579 357B 358A 358B 359H
35DH 35EF 35FI 3678 367I 368D 369F 36AE 36BE 36BG 378B 379G 37AE 37CD 37FH 37GH
389C 389I 38CD 38GI 39AI 39BC 39DE 39EG 39FH 3ABH 3ABI 3ACH 3ADG 3AFG 3BDF 3BDI
3BEG 3CEH 3CEI 3CFG 3DFI 3EHI 456C 457E 457G 459B 459F 45AH 45AI 45BG 45CD 45DE
4679 467C 468I 469D 46AB 46AI 46DG 46EH 478E 479I 47AF 47BD 47BF 47CH 47HI 489F
489H 48AC 48AG 48BI 48DG 49AE 49CG 49DI 4ADE 4AFG 4BCD 4BCH 4BGI 4CEF 4CFI 4EFI
4EGH 4EGI 4FGH 5689 568B 569E 56AD 56BH 56DG 56EI 56FG 578C 578D 57AC 57BG 57DI
57FH 57FI 589A 58CI 58DG 58EF 58FH 58HI 59CF 59CH 59EI 59GI 5ABC 5ABE 5ADF 5AEG
5AGH 5BCF 5BDF 5BEH 5CDI 5CEG 5DEH 678H 679A 67AG 67CF 67EH 67EI 67FG 689C 68AD
68BF 68CE 68EG 68FI 69BE 69BI 69CD 69GH 69HI 6ACG 6ACH 6AEF 6AFH 6BCG 6BDH 6BFI
6CDI 6CFH 6DEF 6DHI 78AF 78AG 78BI 78CG 78EF 79AD 79BG 79CE 79CF 79DH 79EF 7ABD
7ABH 7AEI 7BCE 7BHI 7CGI 7DEG 7DFI 7DGH 89AB 89BD 89EG 89EH 8ABE 8ACF 8ADI 8AEH
8AHI 8BCF 8BGH 8CDH 8DEI 8DFH 8FGI 9ABF 9ACE 9ACI 9AGH 9BCI 9BDH 9BEH 9BFG 9DEF
9DFG 9DGI ABGI ACDF ACGI ADEH AFHI BCDE BCGH BDEG BEFI CDFH CEFG CEHI DGHI FGHI
21 - 658-661
0123 0126 0134 0145 0156 017F 017J 018A 018H 019C 019E 01AG 01BG 01BH
01CK 01DI 01DK 01EJ 01FI 0236 0248 024H 025D 025F 027B 027C 028J 029F
029H 02AE 02AI 02BC 02DG 02EI 02GK 02JK 0346 035B 035K 037A 037I 038E
038F 039B 039D 03AJ 03CD 03CE 03FG 03GI 03HJ 03HK 0456 047B 047G 048D
049A 049I 04AD 04BF 04CI 04CJ 04EG 04EH 04FK 04JK 057F 057K 058G 058J
059A 059C 05AC 05BE 05DH 05EI 05GJ 05HI 0679 067G 068B 068K 069F 06AF
06AG 06BJ 06CH 06CJ 06DE 06DI 06EH 06IK 0789 078I 07AK 07CE 07DE 07DJ
089K 08AE 08BD 08CF 08CH 08GI 09BI 09DK 09EG 09GJ 09HJ 0ABH 0ABK 0ACD
0AFH 0AIJ 0BCG 0BDF 0BEK 0BIJ 0CFI 0CGK 0DFJ 0DGH 0EFJ 0EFK 0FGH 0HIK
1234 1245 1256 127E 127J 128G 128K 129B 129I 12AD 12AF 12BH 12CH 12CI
12DE 12FK 12GJ 1359 135I 1367 136G 137H 138C 138D 139K 13AG 13AI 13BF
13BJ 13CD 13EH 13EK 13FJ 146C 146E 147A 147D 148B 148J 149F 149G 14AC
14BK 14DF 14EI 14GH 14HJ 14IK 1579 157B 158C 158H 15AB 15AJ 15CG 15DJ
15DK 15EG 15EK 15FH 15FI 167I 168E 168G 169H 169K 16AB 16AD 16BD 16CF
16FJ 16HK 16IJ 178F 178K 179C 17AE 17BD 17CG 17GK 17HI 189A 189J 18BE
18DF 19AE 19BF 19DG 19DI 19HJ 1ACJ 1AFH 1AHK 1AIK 1BCE 1BCI 1BGI 1BJK
1CDH 1CEF 1CJK 1DEH 1DGJ 1EFG 1EIJ 1FGK 1GHI 2345 2356 237B 237F 238F
238K 239E 239H 23AC 23AJ 23BG 23CI 23DI 23DJ 23EG 23HK 246A 246J 2479
247D 248I 249D 24AE 24BH 24BJ 24CG 24CK 24EF 24FI 24GK 2578 257G 258B
259C 259K 25AG 25AH 25BD 25CE 25EJ 25FJ 25HI 25IK 267E 267K 268A 268C
269D 269I 26BC 26BK 26DH 26EF 26FH 26GI 26GJ 278C 279G 27AH 27AJ 27DI
27FI 27HK 289E 289G 28AD 28BF 28DH 28EH 28IJ 29AB 29AK 29CF 2ABF 2ACG
2AIK 2BDK 2BEI 2BEJ 2BGI 2CDF 2CDJ 2CEK 2CHJ 2DEK 2DFG 2EGH 2FGH 2FJK
2HIJ 3456 347J 347K 348C 348G 349E 349G 34AF 34AI 34BD 34BK 34CH 34DJ
34EI 34FH 3578 357A 358A 359J 35BF 35CI 35CK 35DE 35DH 35EH 35FG 35GJ
367C 3689 368H 369C 36AD 36AE 36BH 36BI 36DF 36EJ 36FK 36GK 36IJ 378J
379B 379I 37CE 37DG 37DK 37EF 37GH 389D 38AH 38BI 38BK 38EI 38GJ 39AF
39AH 39CG 39FI 39JK 3ABC 3ABE 3ADG 3BCG 3BDH 3BEJ 3CFJ 3CFK 3CHJ 3DEF
3DIK 3EGK 3FHI 3GHI 3IJK 457C 457K 458E 458K 459D 459H 45AF 45AH 45BG
45BJ 45CE 45DI 45FJ 45GI 467F 467I 4689 468B 469B 46AK 46CG 46DE 46DJ
46FI 46GH 46HK 478E 478H 479A 47BH 47CI 47EJ 47FG 489K 48AC 48AJ 48DF
48FG 48HI 49BI 49CE 49CJ 49FJ 49HK 4ABG 4ABI 4ADH 4AEK 4AGJ 4BCD 4BCF
4CDH 4CFK 4DEG 4DGK 4DIK 4EFH 4EJK 4GIJ 4HIJ 567A 567J 568D 568E 569E
569F 56AI 56BG 56BI 56CH 56CK 56DF 56GK 56HJ 579G 57BI 57CD 57DI 57EH
57EJ 57FH 589F 589I 58AB 58CI 58DJ 58FK 58GH 59AE 59BD 59BK 59GH 59IJ
5ACJ 5ADF 5ADK 5AEI 5AGK 5BCH 5BCJ 5BEF 5BHK 5CDG 5DEG 5EFK 5FGI 5HJK
5IJK 678D 678J 679K 67AC 67BE 67BG 67DH 67FH 68AH 68CJ 68FI 68FK 68GI
69AG 69AJ 69BC 69DJ 69EG 69HI 6ABF 6ACE 6AHI 6AJK 6BDK 6BEH 6BFJ 6CDI
6CDK 6CEI 6CFG 6EFG 6EIK 6EJK 6GHJ 789H 78AG 78BE 78BF 78DG 78IK 79BJ
79CH 79DF 79EF 79EK 79IJ 7ABH 7ABI 7ACF 7ADE 7ADK 7AFJ 7AGI 7BCK 7BFK
7BGJ 7CDF 7CGH 7CIJ 7CJK 7DHJ 7EGI 7EGK 7EHI 7FGJ 7FIK 7HJK 89AI 89BH
89CF 89CG 89EJ 8ACK 8ADI 8AEF 8AFG 8AJK 8BCI 8BCJ 8BDG 8BGK 8BHJ 8CDE
8CEG 8CHK 8DEK 8DHI 8DJK 8EFH 8EGJ 8EIK 8FHJ 8FIJ 8GHK 9ABJ 9ACI 9ADG
9ADH 9AFK 9BDE 9BEK 9BFG 9BGH 9CDJ 9CDK 9CEH 9CIK 9DEI 9DFH 9EFJ 9EHI
9FGI 9FHK 9GIK 9GJK ABCK ABDJ ABEG ACEF ACGH ACHI ADEJ ADFI AEGI AEHJ
AEHK AFGK AFIJ AGHJ BCDE BCFH BDFG BDHI BDIJ BEFI BEGH BFHJ BFIK BGJK
BHIK CDGI CEGJ CEHK CEIJ CFGJ CFHI CGIK DEFI DEHJ DFHK DFJK DGHK DGIJ
#!/usr/bin/env python3
import gurobipy as gp
from itertools import combinations
from gurobipy import GRB
N = 19
a = 3
b = 3
m = gp.Model("tets")
vd = {tet: m.addVar(0, b-1, vtype=GRB.INTEGER) for tet in combinations(range(N), a+1)}
for face in combinations(range(N), a):
m.addConstr(sum(vd[tet] for tet in vd if set(face) < set(tet)) <= b-1)
def add_perm_constr(perm):
for tet in vd:
ntet = tuple(sorted(perm[x] for x in tet))
m.addConstr(vd[tet] == vd[ntet])
def add_cyclic_constr(less=0):
add_perm_constr([(i+1)%(N-less) for i in range(N-less)] + list(range(N-less, N)))
add_cyclic_constr(8)
m.setObjective(sum(vd.values()), GRB.MAXIMIZE)
m.addConstr(sum(vd.values()) >= 479)
m.optimize()
fcounts = {f: b-1 for f in combinations(range(N), a)}
tets = []
for (tet,tv) in vd.items():
for _ in range(round(tv.X)):
tets.append([x+1 for x in tet])
for f in combinations(tet, a):
fcounts[f] -= 1
print(tets)
print({f: c for (f, c) in fcounts.items() if c > 0})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment