duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from dnaugsuz
你们真的确定 a[i][j] 有 a[i][0]<a[i+1][0] 和 a[i][j]<a[i][j+1] 两个 prop 就能二维 bsearch 优化了,有没有什么细致点的思路啊
如果再保证 a[i][m-1]<a[i+1][0] 就可以直接用 flatten 了,基本没啥意义;可是如果不保证那最好估计是逐个 row 算 bounds 先选一遍吧…… bsearch 做不到,有 overlap ,太难了
四宫格都不知道怎么调,别说九宫格了…… 当卷积核还不错
duangsues.is_a? SaltedFish
https://blog.csdn.net/sunshine2285/article/details/104866910/
噢,原来有 a[i][j]<a[i+1][j] & a[i][j]<a[i][j+1] ,ij 方向都有单调序,这就好办了,纵横向逐个算 ij 区间嘛,不对,纵向得连起来……
drop = (n,a) => [row[n:] for row in a[n:]] 的话边角都大些
def quadBsearch(v, a, div2=lambda n: n//2):
(n,m) = shape(a)
def atSub(i0, i1, j0, j1):
i=div2(i1-i0); j=div2(j1-j0)
[l,r,u,d] = (a[i][j] for i,j in zeromap(sibling, [i,j]))
cv = a[i][j]
if cv==v: return [i,j]
return atSub(0,n, 0,m)


还是有点难
Forwarded from dnaugsuz
噢大概就是这个模板
def rectBsearch(v, a, div2=lambda n: n//2):
h,w = shape(a)
def inRect(ra):
i,j,n,m = ra; vc = a[i][j]
rects = lambda: [*bigger()] if vc<v else [*smaller()] if vc>v else []
return 1 if vc==v else sum(map(inRect, rects()))==0
return inRect([div2(h), div2(w), h, w])
Forwarded from dnaugsuz
草,也是啊,为什么边角 LD i=max,j=0 就那么特殊
“选左下角,往右走增大,往上走减小,可选
Forwarded from dnaugsuz
都知道有 prop ,但这种走迷宫一样的方法竟然没想到…… 反而首先想 sorted 可以 bsearch
#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")
duangsues.is_a? SaltedFish
绿色的都比黄色小 红色都比黄色大 只要判断 黄色和你的数据的关系 就能排除掉 上面或者下面那一块
duangsuse:
二分查找还是分治嘛,对了它是几个指针来着 真的能斜切线吗

大 佬: #algorithm #Java #code
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int lenSize = matrix.length;
int rowSize = matrix[0].length;
return search(matrix, 0, lenSize, 0, rowSize, target);
}
private boolean search(int[][] matrix, int a1, int b1, int a2, int b2, int target){
if(a1 == b1 || a2 == b2){
return false;
} else {
int mid1 = (a1 + b1) / 2;
int mid2 = (a2 + b2) / 2;
if(matrix[mid1][mid2] == target){
return true;
} else if(target > matrix[mid1][mid2]){
return search(matrix, a1, mid1 + 1, mid2 + 1, b2, target) || search(matrix, mid1 + 1, b1, a2, b2, target);
} else {
return search(matrix, mid1, b1, a2, mid2, target) || search(matrix, a1, mid1, a2, b2, target);
}
}
}
}
Forwarded from dnaugsuz
不要 message 参数,在所有调用处
刚刚我还以为这个是成功消息(即有可能失败)
既然只是 message = "复制成功" 的默认值就没有必要弄了

有个比较疯狂的做法,但是行数短。

const el = (tag,conf,childs)=>{ let e=document.createElement(tag); conf(e); for (let ee of childs)e.appendChild(ee); return e; }, sets=(k,v)=>e=>{ e[k]=v },
withTempAppend=(e,e_dst,op)=>{
e_dst.appendChild(e); op(e); e_dst.removeChild(e);
};

copyToClip = (s) => { let e=el("input", sets("value",s)); withTempAppend(e, document.body, (it)=>{ it.select(); it.execCommand("copy"); }); }
Forwarded from dnaugsuz
还有一个正经行数短的。

const also = (op, x) => { op(x); return x },
copyStr = (s) => also(it => { it.select(); it.execCommand("copy"); it.remove(); }, document.body.appendChild(document.createElement("input")));
Forwarded from dnaugsuz
噢,原来递归类型就是编译期能解决类型检查…… 不对
这个和 C 的 tail=NULL 没有区别吧,只是用了 std:: u_ptr 和 variant

using List=std::variant<Cons,struct Nil>,
Cons=struct{int x, std::unique_ptr<List> xs};
struct Nil{};
auto Nil=std::make_unique<List>(Nil{});

List ll1 = Cons{2,Nil};
Forwarded from dnaugsuz
元函数元在哪里啊,这个字大概是「基础」的含义吧

template struct/func 都可以取 decltype ,那就是说能得到模板参数? lambda 不能,所以类型侧和程序侧都不能递归?(对了 有 f=>(f f) 的方法,但不能作参数没用)
#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"))
Forwarded from dnaugsuz
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), s, reps)
subst("Google Android", "Huawei Haromny")("Google's Android")
proc 写一篇博客?
when 选题:
选到简单的主题:
@简单@这么简单,大家都知道吧?没什么好写的……
link 退出
选到复杂的主题:
有点复杂,我还没全搞懂呢,没把握写好……
when 研究一下:
alt 一段时间后
搞明白了: link 简单
没搞明白:
when 继续研究?:
alt 算了,好的
@退出@不写了,结束
link 研究一下
🤔 考虑下…… graphviz