-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtask192.py
More file actions
84 lines (73 loc) · 3.39 KB
/
task192.py
File metadata and controls
84 lines (73 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# best: 99(jailctf merger) / others: 109(Code Golf International), 111(LogicLynx), 114(ox jam), 115(import itertools), 115(biz)
# p=lambda g,c=-7:c*g or (d:=min(u:=sum(g,g[0]),key=u.count))and p([*zip(*[(l:=0)or[((x+(d==x>0<l==y)*(l-x))*(c<0 or x!=d),l:=x)[0]for x,y in zip(s,t)]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# p=lambda g,c=-7:c*g or (d:=min(u:=sum(g,g[0]),key=u.count))and p([*zip(*[(l:=0)or[((c<0 or x!=d)*(x+(d==x>0<l==y)*(l-x)),l:=x)[0]for x,y in zip(s,t)]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# p=lambda g,c=-7:c*g or (d:=min(u:=sum(g,g[0]),key=u.count))and p([*zip(*[(l:=0)or[((d==x>0<l==y)*(l-x)+(l:=x))*(c<0 or x!=d)for x,y in zip(s,t)]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# p=lambda g,c=-7:c*g or (d:=min(u:=sum(g,g[0]),key=u.count))and p([*zip(*[(l:=0)or[((x+(0<l==y!=x>0)*(l-x))*(c<0 or x!=d),l:=x)[0]for x,y in zip(s,t)]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# p=lambda g,c=-7:c*g or (d:=min(u:=sum(g,g[0]),key=u.count))and p([*zip(*[(l:=0)or[((x+(0<l==y!=x>0)*(l-x))*(c<0 or x!=d),l:=(x==y)*x)[0]for x,y in zip(s,t)]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# p=lambda g,c=-7:c*g or p([*zip(*[(l:=0)or[(((0<l==t[i]!=s[i]>0)*l or s[i])*(c+1<0 or max([0,*s,0][i:i+3:2])>0),l:=(s[i]==t[i])*s[i])[0]for i in range(len(s))]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# p=lambda g,c=-7:c*g or p([*zip(*[[((s[i]>0<t[i-1]==t[i])*t[i]or s[i])*(c<-1 or max([0,*s,0][i:i+3:2])>0)for i in range(len(s))]for s,t in zip(g,g[:1]+g)][::-1])],c+1)
# lambda g,c=-7:c*g or[(g:=[d*(v>0<d==V)or v for d,v,V in zip([0,*s],s,g*9)])for s in zip(*p(g,c+1))][::-1] # 0内のノイズ除去なし
# =============================================== 99 ==============================================
# lambda g,c=-7:c*g or[(g:=[V*(v>0<V==U)or(0<V+w)*v for V,w,v,U in zip([0,*s],(*s[1:],0),s,g*9)])for s in zip(*p(g,c+1))][::-1]
p=lambda g,c=-7:c*g or[g:=[V*(v>0<V==U)or(0<V+w)*v for V,w,v,U in zip([0,*s],s[1:]*2,s,g*9)]for s in zip(*p(g,c+1))][::-1]
# U
# Vvw
# ?
# ?0? -> 0
# ?
# 0a0 -> 0
# a
# a?? -> a
# ?
# ?a? -> a
# 一個上と同じ色が両隣のどっちかにあったらそれを採用
# 両隣が 0 だったら0に
# import re
# def p(g):
# c,b,a=sorted({*sum(g,[])},key=sum(g,[]).count)
# for _ in range(4):
# g=eval(re.sub(f"{c}(?=, {b}.{{{len(g)*3-2}}}{b})",str(b),str([*zip(*g[::-1])])))
# g=eval(str(g).replace(str(c),"0"))
# return g
# def p(g):
# c,b,a=sorted({*sum(g,[])},key=sum(g,[]).count)
# for i in range(len(g)):
# for j in range(len(g[0])):
# if g[i][j]==c:
# u=0
# for k in range(9):
# if len(g)>(y:=i+k//3-1)>-1<(x:=j+k%3-1)<len(g[0]) and g[y][x]!=a:
# u+=k%2+1
# u|=(k%6==1)*16|(k in(3,5))*32
# g[i][j]=[a,b][u>52]
# return g
# no compress
# def p(g):
# G=sum(g,[])
# (_,c),(_,b),(_,a)=sorted((G.count(v),v)for v in{*G})
# h,w=len(g),len(g[0])
# for I in range(h*w):
# if g[i:=I//w][j:=I%w]==c:
# u=0
# for k in range(9):
# if-1<(y:=i+k//3-1)<h and-1<(x:=j+k%3-1)<w and g[y][x]!=a:
# u+=k%2+1
# u|=(k%6==1)*16|(k in(3,5))*32
# g[i][j]=[a,b][u>52]
# return g
# def p(g):
# (a,_),(b,_),(c,_)=__import__("collections").Counter(sum(g,[])).most_common()
# h,w=len(g),len(g[0])
# for i in range(h):
# for j in range(w):
# if g[i][j]==c:
# u=s=t=0
# for k in range(9):
# y=i+k//3-1
# x=j+k%3-1
# if-1<y<h and-1<x<w and g[y][x]!=a:
# u+=k%2+1
# s|=k%6==1
# t|=k in (3,5)
# g[i][j]=[a,b][(u>4)*s*t]
# return g