Last active
September 22, 2025 09:44
-
-
Save kusano/2c2e7f075a7f55c126b96e89b7759be2 to your computer and use it in GitHub Desktop.
メガミンクスの画像生成
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from PIL import Image, ImageDraw | |
| import math | |
| def render(name, F): | |
| size = 4096 | |
| im = Image.new("RGB", (size, size), (255, 255, 255)) | |
| draw = ImageDraw.Draw(im) | |
| def trans(x, y, z): | |
| t = math.pi*0.05 | |
| x, y, z = ( | |
| x*math.cos(t)+y*math.sin(t), | |
| -x*math.sin(t)+y*math.cos(t), | |
| z, | |
| ) | |
| t = math.pi*0.2 | |
| x, y, z = ( | |
| x*math.cos(t)+z*math.sin(t), | |
| y, | |
| -x*math.sin(t)+z*math.cos(t), | |
| ) | |
| t = 0.1 | |
| x, y = ( | |
| y*(1+x*t), | |
| -z*(1+x*t), | |
| ) | |
| t = 1200 | |
| x, y = ( | |
| size/2+x*t, | |
| size/2+y*t, | |
| ) | |
| return x, y | |
| # https://www.jstage.jst.go.jp/article/jsgs1967/18/2/18_2_15/_pdf/-char/ja | |
| L = 1. # 5角形の1辺。 | |
| d54 = 54./180.*math.pi | |
| L1 = (1.+math.sin(d54))/(2*math.cos(d54))*L | |
| R = L/(2*math.cos(d54)) | |
| a = math.acos(math.sin(d54)/(1+math.sin(d54))) | |
| R1 = R*math.sin(d54)+L1*math.cos(a) | |
| H1 = L1*math.sin(a) | |
| H2 = (R1-R)*math.sin(d54)*math.tan(a) | |
| H = (H1+H2)/2 | |
| V = [ | |
| (-R*math.cos(0.0*math.pi), R*math.sin(0.0*math.pi), H), # 0 | |
| (-R*math.cos(0.4*math.pi), R*math.sin(0.4*math.pi), H), | |
| (-R*math.cos(0.8*math.pi), R*math.sin(0.8*math.pi), H), | |
| (-R*math.cos(1.2*math.pi), R*math.sin(1.2*math.pi), H), | |
| (-R*math.cos(1.6*math.pi), R*math.sin(1.6*math.pi), H), | |
| (-R1*math.cos(0.0*math.pi), R1*math.sin(0.0*math.pi), H-H2), # 5 | |
| (-R1*math.cos(0.4*math.pi), R1*math.sin(0.4*math.pi), H-H2), | |
| (-R1*math.cos(0.8*math.pi), R1*math.sin(0.8*math.pi), H-H2), | |
| (-R1*math.cos(1.2*math.pi), R1*math.sin(1.2*math.pi), H-H2), | |
| (-R1*math.cos(1.6*math.pi), R1*math.sin(1.6*math.pi), H-H2), | |
| (-R1*math.cos(0.2*math.pi), R1*math.sin(0.2*math.pi), -H+H2), # 10 | |
| (-R1*math.cos(0.6*math.pi), R1*math.sin(0.6*math.pi), -H+H2), | |
| (-R1*math.cos(1.0*math.pi), R1*math.sin(1.0*math.pi), -H+H2), | |
| (-R1*math.cos(1.4*math.pi), R1*math.sin(1.4*math.pi), -H+H2), | |
| (-R1*math.cos(1.8*math.pi), R1*math.sin(1.8*math.pi), -H+H2), | |
| (-R*math.cos(0.2*math.pi), R*math.sin(0.2*math.pi), -H), # 10 | |
| (-R*math.cos(0.6*math.pi), R*math.sin(0.6*math.pi), -H), | |
| (-R*math.cos(1.0*math.pi), R*math.sin(1.0*math.pi), -H), | |
| (-R*math.cos(1.4*math.pi), R*math.sin(1.4*math.pi), -H), | |
| (-R*math.cos(1.8*math.pi), R*math.sin(1.8*math.pi), -H), | |
| ] | |
| S = [ | |
| ( 0, 1, 2, 3, 4), | |
| ( 1, 0, 5, 10, 6), | |
| ( 2, 1, 6, 11, 7), | |
| ( 3, 2, 7, 12, 8), | |
| ( 4, 3, 8, 13, 9), | |
| ( 0, 4, 9, 14, 5), | |
| (17, 16, 15, 19, 18), | |
| (16, 17, 12, 7, 11), | |
| (15, 16, 11, 6, 10), | |
| (19, 15, 10, 5, 14), | |
| (18, 19, 14, 9, 13), | |
| (17, 18, 13, 8, 12), | |
| ] | |
| C = { | |
| "W": "#ffffff", | |
| "R": "#f80808", | |
| "G": "#088008", | |
| "P": "#800880", | |
| "Y": "#ffff00", | |
| "B": "#0808f8", | |
| "w": "#c0c0c0", | |
| "r": "#f88008", | |
| "g": "#80f880", | |
| "p": "#f88080", | |
| "y": "#ffffc0", | |
| "b": "#80c0f8", | |
| " ": "#404040", | |
| } | |
| for si in [0, 2, 3, 4, 7, 11]: | |
| s = S[si] | |
| VF = [V[p] for p in s] | |
| for i in range(5): | |
| VF += [ | |
| ( | |
| VF[i][0]*0.6+VF[(i+1)%5][0]*0.4, | |
| VF[i][1]*0.6+VF[(i+1)%5][1]*0.4, | |
| VF[i][2]*0.6+VF[(i+1)%5][2]*0.4, | |
| ), ( | |
| VF[i][0]*0.4+VF[(i+1)%5][0]*0.6, | |
| VF[i][1]*0.4+VF[(i+1)%5][1]*0.6, | |
| VF[i][2]*0.4+VF[(i+1)%5][2]*0.6, | |
| ) | |
| ] | |
| for i in range(5): | |
| VF += [ | |
| ( | |
| VF[i*2+5][0]+VF[(i*2+9)%10+5][0]-VF[i][0], | |
| VF[i*2+5][1]+VF[(i*2+9)%10+5][1]-VF[i][1], | |
| VF[i*2+5][2]+VF[(i*2+9)%10+5][2]-VF[i][2], | |
| ) | |
| ] | |
| for i, p in enumerate([ | |
| [15, 16, 17, 18, 19], | |
| [ 0, 5, 15, 14], | |
| [ 5, 6, 16, 15], | |
| [ 1, 7, 16, 6], | |
| [ 7, 8, 17, 16], | |
| [ 2, 9, 17, 8], | |
| [ 9, 10, 18, 17], | |
| [ 3, 11, 18, 10], | |
| [11, 12, 19, 18], | |
| [ 4, 13, 19, 12], | |
| [13, 14, 15, 19], | |
| ]): | |
| draw.polygon([trans(*VF[x]) for x in p], C[F[si*11+i]], "black", 5) | |
| draw.polygon([trans(*V[x]) for x in s], None, "black", 15) | |
| im = im.resize((1024, 1024), Image.Resampling.BICUBIC) | |
| im.save(name) | |
| def renderLL(name, F, center=False): | |
| size = 4096 | |
| im = Image.new("RGB", (size, size), (255, 255, 255)) | |
| draw = ImageDraw.Draw(im) | |
| def trans(x, y, z): | |
| if center: | |
| t = 1600 | |
| x, y = ( | |
| size/2+y*t, | |
| size/2+x*t, | |
| ) | |
| else: | |
| t = 1800 | |
| x, y = ( | |
| size/2+y*t, | |
| size/2+x*t+200, | |
| ) | |
| return x, y | |
| # https://www.jstage.jst.go.jp/article/jsgs1967/18/2/18_2_15/_pdf/-char/ja | |
| L = 1. # 5角形の1辺。 | |
| d54 = 54./180.*math.pi | |
| L1 = (1.+math.sin(d54))/(2*math.cos(d54))*L | |
| R = L/(2*math.cos(d54)) | |
| a = math.acos(math.sin(d54)/(1+math.sin(d54))) | |
| R1 = R*math.sin(d54)+L1*math.cos(a) | |
| H1 = L1*math.sin(a) | |
| H2 = (R1-R)*math.sin(d54)*math.tan(a) | |
| H = (H1+H2)/2 | |
| V = [ | |
| (-R*math.cos(0.0*math.pi), R*math.sin(0.0*math.pi), H), # 0 | |
| (-R*math.cos(0.4*math.pi), R*math.sin(0.4*math.pi), H), | |
| (-R*math.cos(0.8*math.pi), R*math.sin(0.8*math.pi), H), | |
| (-R*math.cos(1.2*math.pi), R*math.sin(1.2*math.pi), H), | |
| (-R*math.cos(1.6*math.pi), R*math.sin(1.6*math.pi), H), | |
| (-R1*math.cos(0.0*math.pi), R1*math.sin(0.0*math.pi), H-H2), # 5 | |
| (-R1*math.cos(0.4*math.pi), R1*math.sin(0.4*math.pi), H-H2), | |
| (-R1*math.cos(0.8*math.pi), R1*math.sin(0.8*math.pi), H-H2), | |
| (-R1*math.cos(1.2*math.pi), R1*math.sin(1.2*math.pi), H-H2), | |
| (-R1*math.cos(1.6*math.pi), R1*math.sin(1.6*math.pi), H-H2), | |
| (-R1*math.cos(0.2*math.pi), R1*math.sin(0.2*math.pi), -H+H2), # 10 | |
| (-R1*math.cos(0.6*math.pi), R1*math.sin(0.6*math.pi), -H+H2), | |
| (-R1*math.cos(1.0*math.pi), R1*math.sin(1.0*math.pi), -H+H2), | |
| (-R1*math.cos(1.4*math.pi), R1*math.sin(1.4*math.pi), -H+H2), | |
| (-R1*math.cos(1.8*math.pi), R1*math.sin(1.8*math.pi), -H+H2), | |
| (-R*math.cos(0.2*math.pi), R*math.sin(0.2*math.pi), -H), # 10 | |
| (-R*math.cos(0.6*math.pi), R*math.sin(0.6*math.pi), -H), | |
| (-R*math.cos(1.0*math.pi), R*math.sin(1.0*math.pi), -H), | |
| (-R*math.cos(1.4*math.pi), R*math.sin(1.4*math.pi), -H), | |
| (-R*math.cos(1.8*math.pi), R*math.sin(1.8*math.pi), -H), | |
| ] | |
| S = [ | |
| ( 0, 1, 2, 3, 4), | |
| ( 1, 0, 5, 10, 6), | |
| ( 2, 1, 6, 11, 7), | |
| ( 3, 2, 7, 12, 8), | |
| ( 4, 3, 8, 13, 9), | |
| ( 0, 4, 9, 14, 5), | |
| (17, 16, 15, 19, 18), | |
| (16, 17, 12, 7, 11), | |
| (15, 16, 11, 6, 10), | |
| (19, 15, 10, 5, 14), | |
| (18, 19, 14, 9, 13), | |
| (17, 18, 13, 8, 12), | |
| ] | |
| C = { | |
| "W": "#ffffff", | |
| "R": "#f80808", | |
| "G": "#088008", | |
| "P": "#800880", | |
| "Y": "#ffff00", | |
| "B": "#0808f8", | |
| "w": "#c0c0c0", | |
| "r": "#f88008", | |
| "g": "#80f880", | |
| "p": "#f88080", | |
| "y": "#ffffc0", | |
| "b": "#80c0f8", | |
| " ": "#404040", | |
| } | |
| for si in [0, 1, 2, 3, 4, 5]: | |
| s = S[si] | |
| VF = [V[p] for p in s] | |
| for i in range(5): | |
| VF += [ | |
| ( | |
| VF[i][0]*0.6+VF[(i+1)%5][0]*0.4, | |
| VF[i][1]*0.6+VF[(i+1)%5][1]*0.4, | |
| VF[i][2]*0.6+VF[(i+1)%5][2]*0.4, | |
| ), ( | |
| VF[i][0]*0.4+VF[(i+1)%5][0]*0.6, | |
| VF[i][1]*0.4+VF[(i+1)%5][1]*0.6, | |
| VF[i][2]*0.4+VF[(i+1)%5][2]*0.6, | |
| ) | |
| ] | |
| for i in range(5): | |
| VF += [ | |
| ( | |
| VF[i*2+5][0]+VF[(i*2+9)%10+5][0]-VF[i][0], | |
| VF[i*2+5][1]+VF[(i*2+9)%10+5][1]-VF[i][1], | |
| VF[i*2+5][2]+VF[(i*2+9)%10+5][2]-VF[i][2], | |
| ) | |
| ] | |
| for i, p in enumerate([ | |
| [15, 16, 17, 18, 19], | |
| [ 0, 5, 15, 14], | |
| [ 5, 6, 16, 15], | |
| [ 1, 7, 16, 6], | |
| [ 7, 8, 17, 16], | |
| [ 2, 9, 17, 8], | |
| [ 9, 10, 18, 17], | |
| [ 3, 11, 18, 10], | |
| [11, 12, 19, 18], | |
| [ 4, 13, 19, 12], | |
| [13, 14, 15, 19], | |
| ]): | |
| if si==0 or i in ((0, 1, 2, 3) if center else (1, 2, 3)): | |
| draw.polygon([trans(*VF[x]) for x in p], C[F[si*11+i]], "black", 8) | |
| if si==0: | |
| draw.polygon([trans(*V[x]) for x in s], None, "black", 24) | |
| im = im.resize((1024, 1024), Image.Resampling.BICUBIC) | |
| im.save(name) | |
| render("sample.png", | |
| "WBRPYwypgrb"+ | |
| "BBBBBBBBBBB"+ | |
| "RRRRRRRRRRR"+ | |
| "GGGGGGGGGGG"+ | |
| "PPPPPPPPPPP"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("sample_ll.png", | |
| "WBRPYwypgrb"+ | |
| "BBBBBBBBBBB"+ | |
| "RRRRRRRRRRR"+ | |
| "GGGGGGGGGGG"+ | |
| "PPPPPPPPPPP"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| render("megaminx.png", | |
| "WWWWWWWWWWW"+ | |
| "BBBBBBBBBBB"+ | |
| "RRRRRRRRRRR"+ | |
| "GGGGGGGGGGG"+ | |
| "PPPPPPPPPPP"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| render("scramble_r.png", | |
| "pppppppwwwp"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "pwpppppppWW"+ | |
| "WwwwWWWWWWW"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "ppppppppppp"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "pppppWWWppp") | |
| render("scramble_d.png", | |
| "WWWWWWWwwwW"+ | |
| "BBBBBBBBBBB"+ | |
| "pWWWppppppp"+ | |
| "pwWWppppppp"+ | |
| "pwwwppppppp"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "ppppppppppp"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "ppppppppppp") | |
| render("scramble_u.png", | |
| "ppppppppppp"+ | |
| "BBBBBBBBBBB"+ | |
| "WpppWWWWWWW"+ | |
| "WpppWWWWWWW"+ | |
| "WpppWWWWWWW"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "WWWWWWWWWWW"+ | |
| "WWWWWWWWWWW"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "WWWWWWWWWWW") | |
| render("scramble_example.png", | |
| "BrrWYPgpbPP"+ | |
| "BBBBBBBBBBB"+ | |
| "WWWBrBrPyPR"+ | |
| "YwpGGrRRyyB"+ | |
| "gYPyYbWpbgw"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "PBgBgGBbbYY"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "rWygGyRwpWY") | |
| render("star.png", | |
| "B B "+ | |
| "BBBBBBBBBBB"+ | |
| "R R"+ | |
| "W W W W W W"+ | |
| "Y Y "+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "G G "+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "P P ") | |
| render("f2l.png", | |
| "B BBBBB "+ | |
| "BBBBBBBBBBB"+ | |
| "RRR RRR"+ | |
| "WWWWWWWWWWW"+ | |
| "Y YYYYY "+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "G GGGGG "+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "P PPPPP") | |
| render("f2l_i.png", | |
| " BB "+ | |
| "BBBBBBBBBBB"+ | |
| "R RRRRR "+ | |
| "BRR BBB "+ | |
| " W "+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "WWWWWWW WWW"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYY YYY") | |
| render("f2l_center.png", | |
| " W B"+ | |
| "BBBBBBBBBBB"+ | |
| "RB RRRRR "+ | |
| "B R BBB "+ | |
| " "+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "WWWWWWW WWW"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYY YYY") | |
| render("s2l.png", | |
| " "+ | |
| "y yyyyyyy"+ | |
| "p ppppppp"+ | |
| "g ggggggg"+ | |
| "r rrrrrrr"+ | |
| "b bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY") | |
| render("s2l.png", | |
| " "+ | |
| "B BBBBBBB"+ | |
| "R RRRRRRR"+ | |
| "G GGGGGGG"+ | |
| "P PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| render("s2l_1.png", | |
| "w "+ | |
| "BBBBBBBBBBB"+ | |
| "b bbbbb"+ | |
| "y yyyyy "+ | |
| "p "+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "GGGGGGGGGGG"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "RRRRR RRR") | |
| render("s2l_2.png", | |
| "w "+ | |
| "BBBBBBBBBBB"+ | |
| "g ggggg"+ | |
| "r rrrrrrr"+ | |
| "b bbbbbbb"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "YYYYYYYYYYY"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "PPPPPPPPPPP") | |
| render("s2l_3.png", | |
| "w "+ | |
| "BBBBBBBBBBB"+ | |
| "y yyyyyyy"+ | |
| "p ppppppp"+ | |
| "g ggggggg"+ | |
| "YYYYYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "RRRRRRRRRRR"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "BBBBBBBBBBB") | |
| render("eoll.png", | |
| "w w w w w w"+ | |
| "y yyyyyyy"+ | |
| "p ppppppp"+ | |
| "g ggggggg"+ | |
| "r rrrrrrr"+ | |
| "b bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY") | |
| renderLL("eoll_1.png", | |
| "w w w w"+ | |
| "B w BBBBBBB"+ | |
| "R RRRRRRR"+ | |
| "G w GGGGGGG"+ | |
| "P PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("eoll_2.png", | |
| "w w w w"+ | |
| "B BBBBBBB"+ | |
| "R w RRRRRRR"+ | |
| "G w GGGGGGG"+ | |
| "P PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("eoll_3.png", | |
| "w w"+ | |
| "B w BBBBBBB"+ | |
| "R w RRRRRRR"+ | |
| "G w GGGGGGG"+ | |
| "P w PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("eoll_4.png", | |
| "w w "+ | |
| "B w BBBBBBB"+ | |
| "R w RRRRRRR"+ | |
| "G w GGGGGGG"+ | |
| "P PPPPPPP"+ | |
| "Y w YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| render("coll.png", | |
| "wwwwwwwwwww"+ | |
| "y yyyyyyy"+ | |
| "p ppppppp"+ | |
| "g ggggggg"+ | |
| "r rrrrrrr"+ | |
| "b bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY") | |
| renderLL("coll_1.png", | |
| "w w w w w w"+ | |
| "B wBBBBBBB"+ | |
| "R wRRRRRRR"+ | |
| "G wGGGGGGG"+ | |
| "P PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("coll_2.png", | |
| "w w w w w w"+ | |
| "Bw BBBBBBB"+ | |
| "Rw RRRRRRR"+ | |
| "Gw GGGGGGG"+ | |
| "P PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("coll_3.png", | |
| "w w w w w w"+ | |
| "B BBBBBBB"+ | |
| "Rw RRRRRRR"+ | |
| "G GGGGGGG"+ | |
| "Pw PPPPPPP"+ | |
| "Yw YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("coll_4.png", | |
| "w w w w w w"+ | |
| "B BBBBBBB"+ | |
| "R wRRRRRRR"+ | |
| "G GGGGGGG"+ | |
| "P wPPPPPPP"+ | |
| "Y wYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("coll_5.png", | |
| "w w w w w w"+ | |
| "B BBBBBBB"+ | |
| "R wRRRRRRR"+ | |
| "G wGGGGGGG"+ | |
| "P wPPPPPPP"+ | |
| "Yw wYYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| renderLL("coll_6.png", | |
| "w w w w w w"+ | |
| "Bw wBBBBBBB"+ | |
| "Rw RRRRRRR"+ | |
| "Gw GGGGGGG"+ | |
| "Pw PPPPPPP"+ | |
| "Y YYYYYYY"+ | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb") | |
| render("epll.png", | |
| "wwwwwwwwwww"+ | |
| "y y yyyyyyy"+ | |
| "p p ppppppp"+ | |
| "g g ggggggg"+ | |
| "r r rrrrrrr"+ | |
| "b b bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY") | |
| renderLL("epll_1.png", | |
| "wwwwwwwwwww"+ | |
| "y p yyyyyyy"+ | |
| "p b ppppppp"+ | |
| "g g ggggggg"+ | |
| "r r rrrrrrr"+ | |
| "b y bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY", | |
| True) | |
| renderLL("epll_2.png", | |
| "wwwwwwwwwww"+ | |
| "y y yyyyyyy"+ | |
| "p r ppppppp"+ | |
| "g p ggggggg"+ | |
| "r g rrrrrrr"+ | |
| "b b bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY", | |
| True) | |
| renderLL("epll_3.png", | |
| "wwwwwwwwwww"+ | |
| "y y yyyyyyy"+ | |
| "p r ppppppp"+ | |
| "g g ggggggg"+ | |
| "r b rrrrrrr"+ | |
| "b p bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY", | |
| True) | |
| renderLL("epll_4.png", | |
| "wwwwwwwwwww"+ | |
| "y p yyyyyyy"+ | |
| "p r ppppppp"+ | |
| "g y ggggggg"+ | |
| "r g rrrrrrr"+ | |
| "b b bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY", | |
| True) | |
| renderLL("epll_5.png", | |
| "wwwwwwwwwww"+ | |
| "y y yyyyyyy"+ | |
| "p b ppppppp"+ | |
| "g r ggggggg"+ | |
| "r g rrrrrrr"+ | |
| "b p bbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY", | |
| True) | |
| render("cpll.png", | |
| "wwwwwwwwwww"+ | |
| "yyyyyyyyyyy"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "bbbbbbbbbbb"+ | |
| "wwwwwwwwwww"+ | |
| "BBBBBBBBBBB"+ | |
| "ppppppppppp"+ | |
| "ggggggggggg"+ | |
| "rrrrrrrrrrr"+ | |
| "YYYYYYYYYYY") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment