duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
t0 = time()
t1 = None

def nextPitch():
try: return next(pitchz)
except StopIteration: raise NonlocalReturn("done")
def doSplit():
synth.noteSwitch(nextPitch())
def giveSegment():
nonlocal t1
t2 = time()
reducer.accept( (t1-t0, t2-t0, synth.last_pitch) )
t1 = t2 #< new start

def onEvent(event):
nonlocal t1
if event.type == pygame.KEYDOWN:
key = chr(event.key)
if key == 'a':
t1 = time()
doSplit()
elif key == 's': giveSegment(); doSplit()
elif event.type == pygame.KEYUP:
key = chr(event.key)
if key == 'a':
synth.noteoff()
giveSegment()
elif key == ' ': onPausePlay()
#Python #code
#Python #code #rewrite

coloredText = StringBuild() # use io.StringIO, equiv []; b''.join(it)
try:
bsText = dLines['text'].encode('utf-8')
except KeyError:
bsText = b64decode(dLines['bytes'])
iNoFmt = 0
spanRange = lambda sp: (sp['start'], sp['end'])
for (iBeg, iEnd) in map(spanRange, spans):
coloredText.write(bsText[iNoFmt:iBeg])
fmtLink = colored(linked(decode(bsText[iBeg:iEnd]), fpAbs, data['line_number'], iBeg), 9)
#^ 9 可提取常量, fpAbs,lineno,offset 应封装为class
coloredText.write(fmtLink.encode())
iNoFmt = iEnd
coloredText.write(bsText[iNoFmt:])
text = decode(str(coloredText))
#Python #rewrite
from bisect import bisect_left
from sys import argv

def _split2(s): return s.split(' ', 1)
(_sDel, _sData) = ["[%s]\n" %s for s in "Deleted", "Data"]

def readOrigFile(f):
for ln in f: # drop_while
if ln == _sData: break
return [Entry(ln) for ln in f]

def readUserFile(f):
for ln in iter(f, lambda s:s==_sDel):
(i, m) = posEqEntry(orig, ln)
if m: orig.insert(i, Entry(ln))
for ln in f:
(i, m) = posEqEntry(orig, ln)
if m: del orig[i]
def posEqEntry(xs, value):
pos = bisect_left(orig, value)
k = _split2(value)[0]
for (i, e) in enumerate(xs):
ek = _split2(e.value)[0]
if ek != k: break # take_while
if ek == k and e.value == value: return (pos, True)
return (pos, False)
duangsues.is_a? SaltedFish
#Python #rewrite from bisect import bisect_left from sys import argv def _split2(s): return s.split(' ', 1) (_sDel, _sData) = ["[%s]\n" %s for s in "Deleted", "Data"] def readOrigFile(f): for ln in f: # drop_while if ln == _sData: break return [Entry(ln)…
https://t.iss.one/dsuses/4401
重写了一部分,还没起床就不折腾了…… 搞不清 bisect 和这个程序是做什么的就在乱写,差点把 find_entry() -> int(

重写的部分当然比较激进,常量是动态计算的,然后用了 k, e, ek 这些简写法(差点用成 k, for k1in...) posEqEntry 也是不常规的名字(没办法了)

不过我重写的控制流还好,把
while True:
x = xs[i]
if p1(x):
if p2(x): return v1
else: i += 1
else: break
return v2
简化了(其实只需要分析下 i in range(0,len(xs)) 就知道)
但是没有删全局变量(毕竟我不了解问题,或许可以作参数顺序/提升至class )

补充:写错了?
Forwarded from dnaugsuz
https://t.iss.one/dsuses/4401
重写了一部分,还没起床就不折腾了…… 搞不清 bisect 和这个程序是做什么的就在乱写,差点把 find_entry() -> int

重写的部分当然比较激进,常量是动态计算的,然后用了 k, e, ek 这些简写法(差点用成 k, for k1in...) posEqEntry 也是不常规的名字(没办法了)

不过我重写的控制流还好,把
i = get_i0()
while True:
x = xs[i]
if p1(x):
if p2(x): return v1(i)
else: i += 1
else: break
return v2(i)

简化成
i = get_i0()
for (i, x) in enumerate(xs):
if not p1(x): break # take_while
if p2(x): return v1(i)
return v2(i)

一言以蔽之就是(好吧不行)
entry = func(_split2)
key = func.fst<<entry
value = func.snd<<entry
next(filterMap(value, p2<<key, take_while(p1<<key, islice(enumerate(xs),i0) ) ))

(其实只需要分析下 i in range(0,len(xs)) 就知道,刚才我差点以为自己重构错了,pos 不是 step=1 递增)

但是没有删全局变量(毕竟我不了解问题,或许可以作参数顺序/提升至class )

依云大佬你的代码质量还是要注意下吧…… 没事可以重写下自己的代码,重视简洁性和定义力、可移植性,慎用控制流,少写换行、重复求值计算,靠这些“反优化”逼自己把可读性提上去,用这种方法没有语言的代码写不好看的😊
Forwarded from duangsuse::Echo (duangsuse)
补充提取代码的 #Python #code

replacecode.py:
@regress("len(it)","+","a")
def headerSize(fp): pass
from sys import argv; fps = argv[1:]

with open(argv[0], "r") as f: headerSize(f.read(), argv[0])
for fp in argv[1:]:
with open(fp, "r") as f: s = f.read(); code = s[headerSize(s)+1:]
with open(fp, "w") as f: f.write(code)

其中 #Python #code
def regress(*code_parts):
code = "".join(code_parts)
def solve(d, x,y): #不懂算法就写死点二元仅(+)啦
vL = eval(code_parts[0], None, d)
for k in d: d[k] = (y - vL)
def excVar(ex): s = ex.args[0]; return s[len("name "):s.rfind("'")]
def wrap(whatever): #我也拽下洋文(迫真
syms = {} #已回归表
def call(x, y=None):
syms["it"] = x
if y != None:
try: eval(code) if len(syms)==0 else None
except NameError as ex: syms[excVar(ex)] = None
solve(syms, x, y)
return eval(code, None, syms)
return call
return wrap
这个做完发现第一项需要 fpath 就没用了 QAQ
def forFstAndTails(op0, op, xs):
xz = iter(xs)
try:
op0(next(xz))
while True: op(next(xz))
except StopIteration: pass
#essay #Java 想了下最近队列的代码坑 #js #python
duangsues.is_a? SaltedFish
https://t.iss.one/c/1119363280/109316 #reveng ndk onCreate https://t.iss.one/c/1119363280/109356 #huawei homoOs( #旧事重提 https://t.iss.one/c/1119363280/109367 xposed #wechat https://t.iss.one/c/1119363280/109378 #china #robotic #旧事重提 光年实验室 https://t.iss.one/c/1119363280/109402 #framework…
Forwarded from dnaugsuz
嘛,如果是要索引我给个逐个 bsearch 算法 #Python #code
def bsearch(x, xs): #xs: (<)sorted
def atSub(iL, iR):
i=(iL+iR)//2; v = xs[i]
return i if v==x else (-1) if (iR-iL)==1 else atSub(i,iR) if v<x else atSub(iL,i) if v>x else (-1)
return atSub(0, len(xs))

ary = ["1 7 12 32", "5 9 18 38", "9 13 19 41", "17 20 32 50"]
ary = [[int(sn) for sn in s.split(" ")] for s in ary]


def search(v, a) -> [int,int]:
for i, xs in enumerate(a):
j = bsearch(v, xs)
if j != -1: return [i,j]

assert search(50,ary) == [3,3]
#python #code
from PIL import Image
def sumPix(a,b): return tuple(aa+bb for aa,bb in zip(a,b))
def _drawHV(no):
def on(m, pa, xs):
xz = iter(xs)
for pb in range(img.size[no]):
p = (pb,pa) if no==0 else (pa,pb)
img.putpixel(p, sumPix(img.getpixel(p), next(xz)) )
return on
drawHorz = _drawHV(0)
drawVert = _drawHV(1)

img = Image.new("RGB", (50,50), "black")
def cv(i, ns):
c = [0 for _ in range(3)]
for num in ns: c[i] = num; yield tuple(c)
def color2(img):
(m,n) = img.size
for i in range(n): drawHorz(img, i, cv(1,range(m)))
for j in range(m): drawVert(img, j, cv(2,range(n)))
color2(img)
img.save("c2.png")
#python #code #huawei 开始还以为 reduce 的 op/init args 顺序都是 acc,x ,没想到一个 acc,x 一个 xs,acc 啊……
from functools import reduce
def subst(sa,sb,sep=" "):
reps = list(zip(*(s.split(sep) for s in [sa,sb])))
return lambda s: reduce(lambda acc,ab: acc.replace(*ab), reps, s)
print(subst("Google Android", "Huawei Haromny")("Google's Android"))