duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.14K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
#cs #math markov 链 BV1xa4y1w7aT https://www.youtube.com/watch?v=i3AkTO9HLXo&t=1s

#algorithm 随机游走 、稳态矩阵
duangsuse::Echo
1. 《答案在代码中:“实现需求”的双重含义》 😒我倒不觉得 (a+1)%N 往复<N是个坏写法 ,反而是 (剪刀, 石头) in (0~2).zipWithNext.toDict 会多此一举 #py #code import random def game(rules="石头 剪刀 布".split(),胜=+1): comparin=lambda a,b: "平" if a==b else\ "胜"if (a+胜)%len(rules) == b else\ "败" a=…
😭可恶的表述式编程,不知道怎么命名变量了
- Ary<Int> mergeSort(rn=eachI) = rn.size/2 lets:[d2]
if d2==0: return
at now:
i rn.A; N i+d2
a (rn(B=N-1):go(this)).Seq
b (rn(A=N):go(this)).Seq
//a,b 半都指向升序

loop if a.posR & b.posR:
this[i]=get(a) to get(b) lets:
if A<B: a goesR; A
or: b goesR; B
i goesR
a: this[i]=get(it); i goesR
b: this[i]=get(it); i goesR
可视化
我是很讨厌把 while a-a0 < size/2 换成右移new Range.Iter 的,毕竟栈上分配好,

但定义式编程禁止我用不严谨的指针变量;真的干脆我也 subarray slice 了最优雅,要么 l,r,ijk 那样的面条代码也省心

绝句真的不是为CS专业的代码设计的,它就只能写成羊皮纸算法;气死了,竟然不能大方的用指针变量,而且并没有更易读
(刚才发现merge 需要copy左右数组防覆盖,可以用 ListIterator, 舒服了
#algorithm #bing 二分查找 spiral sorted ndarray
最好把它转换为1d,再转换回来以获取 '1'的位置
#py #code
def unrot(a, out):
while a.size:
out.extend(a[0]); a=np.rot90(a[1:])

#难以用concat矩阵滚出螺旋
def rot(a, m):
ia=np.reshape(range(len(a)), (m,-1))
unrot(ia, ord:=[])
return np.vectorize(lambda i:a[ord.index(i)] )(ia)

#make range(0,9) a spiral(cols=3)
[[0 1 2]
[7 8 3]
[6 5 4]]
a=rot([*range(0,9)], 3)
unrot(a, na:=[])

na[na.index(4)]=-1
print(a)
np.where(rot(na,3)==-1) #'4'=>[2,2]


def binary_search_matrix(matrix, target): 同理,可以是2d转1d
def binary_search_first_last(*a):
import bisect
left,right = (f(*a)for f in [bisect.bisect_left, bisect.bisect_right])
# 如果右边界超出了数组范围,说明目标出现1次
return (left, left if right == len(nums) else right - 1)


感觉很无语,居然为了无意义的“高性能”算法浪费2h ,还不如直接就用自己本来会的 a[ord.index(i)] 序号对应..

我发现2d.bisect 是以 (row=a[i])[0] 为线索再去 row.bisect ,这就更无聊了。Trie 前缀树至少还有 AC 的优化版(窄化为 KMP ),kD/quad 树至少还有切割公式 ,RB树有 std::(orderd_)map,但bisect 对Nd都只是Trie那样剪枝..
我觉得放在现实语境下就理所当然的策略,根本不该叫算法…


我很好奇除了用等价关系导入list里的算法,螺旋矩阵能怎么bisect,毕竟这东西本质就是list的重排序,它没啥性质可言

搜索发现这个螺旋数组 是 [4,5,6,7,0,1,2] 这种螺旋(shift..) 好奇怪的条件啊:
左右两段中,一定是有一段有序的,另一段可能有序可能无序(有序,则一定有段首值<段尾值)
需要 if nums[mid] >= nums[start] 判断左面是否有序
看的我都糊涂了,它是说 '//'状数组二分会产生 '/ _/'状无序右侧 ;算法是相当于只优化了“左侧”,对另一侧继续拆.. 这过度解读题意了。还不如直接拿拐点切分list,各自bisect()

螺旋数组 LC#54 不知为何大家用的都是Excel式四向法.. 虽然我写2048.js 时也是用了4向线性扫描了
括号匹配 LC#20 可以用调用栈,我又试了2h. bing反而误导我 😭
测试
pairs = {'(':')', '[':']', '{':'}'}
def eat(s,c0):
for c in s:
# 如果是左括号,就把它压入栈中
if c in pairs: eat(s,pairs[c])
elif c==c0:return # 如果是右括号,左括号便与之匹配
else: assert'','多余项而栈空'
assert c0=='eof','栈尚不为空'


#394 字串“编码” ,晕了,这标题为何如此民科啊!我还以为是词表替换
decodeString('hello,2[wo]rld')
'hello,woworld'

decodeString=(s)=>s.replace(/(\d+)\[(\w+)\]/,
(m,n,s)=>s.repeat(+n) )
本意是让你用 char 去累积 \d+[ ,累积[]里的字符,然后在 ']' 的时候输出repeat的文本,但这就是文本解析而已..

如你们所见,解法越简洁,我敲键盘的时间越少、敲脑门的时间越多……
#algorithm #FP 版的 list 累加法杨辉三角
ps. 也可以用DP和代数式推算
P2:垃圾 itertools

#py #code
from itertools import accumulate,islice,chain

fib=iself(2,lambda x0,x1: chain([1,1], (x+y for x,y in zip(x0,x1)) ))
def 杨辉(): #pascal_triangle
row = [1]
while True:
yield row; row = [1,*(x+y for x,y in zip(row, row[1:])),1] #上行+上左


def iself(n,fn):
a=[]
def _(i):
while True:yield(a[-i])
for x in fn(*[_(i+1) for i in range(n)]): a.append(x);yield x

ctrlM=lambda a: (lambda n:'\n'.join(f'{s}'.center(n)for s in a)) (max(len(str(s))for s in a))
N=20
print(ctrlM([*islice(杨辉(),N)]),'\n\nfib', [*islice(fib,N)])
duangsuse::Echo
#android #hack #aop 继续,加上奇怪.. 的知识 Magisk 是 Android 版的 Docker (overlayfs),能管理root、去广告加皮肤、安装字体、模拟位置、利用权限骗过 SafetyNet DRM 它让 /boot/initrd 挂载(--bind) /sbin/.magisk tmpfs 来遮住 /mirror/system vendor 树,因此需要TWRP刷zip(和root时一样) 或fastboot刷入kitchen过的原机boot.img 新设备可能不区分boot分区(A/B…
#algorithm #code
题 2:取出数组中第 K 大的元素(排序 / 暴力)
直接用 a.sort();a[-k] 好了,如果是 iter:

fun Iterable<Int>.topK(k: Int) = PriorityQueue<Int>().run {
forEach@Iterable {
offer(it); if(size>k)poll() // bail out the smallest
}
return peek()
}

也可以修改快排:右先浅先,那么 左指针涨到>k 时,a[-k:] 一定是有序的
很多题目就是在原算法递归前,加优化性的断言

有序队本质上和 iter.minMax 都是逐个比较,但利用了小顶堆(二叉树数组化) 决定顺序
N叉数组化 则被用来实现 Set<A-B配对>, unionFind ,原理是 union(A,挂到B), (C,A) 后,CA的共同祖先是B, AC也该一样

题 1:实现三个线程轮流访问一个变量(加锁 / 原子)
use! java.util.concurrent atomic locks
use kotlin.concurrent

- useAtomic
at:
x AtomicInteger(0) //回合数
job:[i]
if x.get%n == i:
say("Thread $i: x = ${x.get}")
x.incrementAndGet
Thread.sleep(1000)

- useLocks
at now:
x 0
go ReentrantLock()
job:[i]
go.withLock: if x%n == i:
say("Thread $i: x = $x")
x=: +1
Thread.sleep(1000)

- job(n=3, :Fn1<Int>)
(1~n): thread {
loop $Y: fn(it)
}.join


因为x+1 只由一个核计算,不会出现赋值前x已经改变的情况

#ai #hard https://t.me/NewlearnerChannel/11418
感觉反正也看不懂。。GPT 训练流程
duangsuse::Echo
#sql DFS搜索 像素图填色 in Prolog btw. fill(_,X) 是 “从任意一点探索区域X , 一共能收集到多少X” v(P,0) : 查询颜色是0的P=[X,Y] conn([2,1], P1) : (2,1)=0 四邻里 0值格的座标们 不知为何很慢 看起来好像简短了,实际只是省掉 if 和解构的代码量 😒 有趣的是,conn(四邻) 是基于 |X-x|+|Y-y|=1 的参数方程(GL常用),而非 x+1,y+1 直接迭代,所以 dfs :- C=conn(A),dfs(C)…
#math #algorithm Gauss消元 可以用来解鸡兔同笼、化学分子式等方程组😅

(#bing 第一遍就能用了,但还是有5小时“确认” 算法,最后大体没改

# 对系数组A,进行高斯消元求 Ax '=b'
def elim(A, b):
M = np.hstack((A, b.reshape(-1, 1))) # M=(A|常数项b)
n, m = A.shape; assert n==m, "没有唯一解"

# 向下找j格最强的行,换为本行
for j in range(n):
i=np.argmax(abs(M[j:, j]))+j; assert M[i,j]!=0, "主元为零"
if i!=j: #; ij=(行ji)
M[[i,j]] = M[[j,i]]
# j归一,将下行的j格消为 0
M[j] /= M[j, j]
for i in range(j + 1, n):
M[i] -= M[i,j]* M[j]

就只添加了「逆序代入」、确认了「向下归一」化简了😅 M[i] -=m[j]*M[i,j] / M[j,j]

(没错,”大无语事件“,数 学 家 们的代码太乱了,bing都不知道谁是正确…… 我甚至无法证明 逆序带入“不就是” M[:, -1]

也倒了很多苦水,包括在kt讨论组

无语了,你看不懂的信息能不能不要过滤掉? 广度和深度都挺重要 OK?
如果我致力于用100行描述好本质10行的一些组件流程,我也能很有信息量

但是也要去写实质上值得100行的算法和思想的, 不能因为“没功能” 就耽搁掉

不要把设计的创作者和 CS Math 毕业生混为一谈,实现功能算法和设计做法是意义不同的
ice1k 的中文博客都删了,而且看我你至少能复制到base64,fft, 缩进解析, parse(x).toString 这些罕见功能模板……

(不过有时觉得自己很像 GPT ,写的许多代码根本没有运行过,都只是看起来正确

我想锐评几个数学文档:
- wikiZH 除了注释🙉都看不懂,自然语言噪声的极限。 所以矩阵是否有要求 n==m 啊?
- wiki 伪代码的VB式循环。 A[i, k] = 0 是啥?不该用 -= 吗
- OI wiki 根本看不懂公式和 C++ 有啥联系. L7-L13 是一段查k=max() 的面条代码🤮, EPS 是浮点误差,这和消元有个?关系
- bing 一会说 n<=m 也行,一会把 A,b 分开操作,突然又用单参数, 最后才发现 A|b = 单增广矩阵,A必须是正方
#dev #algorithm #statement 「只要搜对了接口」
把问题写出来,就等于解决问题。顺便消灭所有事后、事前的坑

所谓编程语言能力,就是这样创建「伪接口」叙事的编程习惯,带来了治未病的价值观。

伪代码,不通用、不好思考
真代码,不易于溯源和穷举

我不需要「设计模式」,因为真实生活的对象之间的模式,比刻意设计术语和样板更加深广
我没有编过程,只是用数据的算式,展示算法和用法、答案和问题的本来面貌

OCR截屏, 字符画 <10行
fib 和杨辉三角螺旋矩阵的定义 <20行
自动重构 map({it+1},[0]) 的py代码并不困难,包括可视化的 astexplorer.net , godbolt.org
YAML式缩进不难解析, reader 和 writer 也只是格式“正则”的附属品

强类型序列化 只是让T的元类创建 cat()读, cut(写) 所需的val-类型字典
中文SQL 也“可取”
Linux内核 CRIU 能实现进程级“快照回溯”, Lua 能编写设备驱动, Docker 和 Magisk 都依赖 overlayFS

Base{16,64,32,.} 当然是64行; emoji, 也可以调整 👩🏾‍=👩+ '🏾
Trie,Suffix 用前缀分组优化的枚举,但在1行内就能创建; 稍微加个失败指针,变成AC,退化成KMP
频谱 的正逆实现只有5行,js 40行: dot(x, exp(-2j*np.pi * i/N * i.reshape((N,1))) )
解方程组: 转为矩阵版 xyz 编号为 j。逐行i化为'关于j',其他行消(减)去j, 最终 解=M[j, -1] for j

简单是可靠的先决条件,不是可靠的牺牲品。

这列出的每一个算法,多可以用5千字来解析,但它们甚至不配被称为算法。 因为没有问题的答案、不被语境束缚的思考,在物理学和计算机上都缺少根据
因此,我的 编程无关计算机,就像天文无关望远镜
duangsuse::Echo
#tech #recommend #js 🧐从『函数』的定义就能知道,#编程范式 的发展史 👉 地址symbol、子程序void()、对象 SAM object、算式 x=>y 或文档树、 模式查询select [a b], a=1|a=2 : x86无结构:是弱检查指针、面条流控、256项字符集,定长数组,栈分配,加载到内核mmap(rwx..不能为READ 段错误) 是dll内地址 C过程式:是向调用栈赋值后跳过去等返回,是子程序 C#OOP:捕获了局部变量(cellvar,可变)、原型虚表到t…
#py 周刊

- Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅)
- PowerToys添加“可交互”的截图
- Google 等各种大公司的技术blog #list
- #apple #design 设计师法则
- #learn 看美军的脏话官话(F-words)学英语 。

- 单靠 #sql 如何保存数据
- APL 里有的 py 基本列表处理式
- FastAPI 最佳实践 list
- async stdlib: 对比理解各种流行实现

- fixit linter: py 版本的 IDEA 自动迁移 (无AI), cffi: 我用什么 C parser 链接到.h 文件
- 用 difflib 开发一个文件比较工具
- KeymouseGo, ahkunwrapped py : 类似按键精灵的鼠标键盘录制和自动化操作
- quivr:生成式 AI 打造你的第二大脑, trafilatura: GUI 文本/评论 爬虫
检索非结构化的信息,可以理解成支持人工智能的 Obsidian。可以处理各种形式的文件如文本、图片、代码、音频和视频等,依赖于 ChatGPT、Docker、Supabase

- FastAPI + SSE new EventSource('/http流') API 下发文本消息
- 用py编写代码高亮图片生成 (carbon.now.sh ..)
- Streamlit 地图高亮生成
- Streamlit GPT4文件摘要工具

- Mojo #ai #rust: 对Py的渐强类型&优化 的语法改进 [waitlist]
def mandelbrot_0(c: ComplexFloat64) -> Int: #CPU FMA优化, 1Mojo = 15Numpy = 89CPy
z = c, nv = 0
for i in range(1, 200): #清晰度
if abs(z) > 2: break
z = z*z + c
nv += 1
return nv

👀 Rust 确实是资本的语言,融资1亿刀乐

#code #algorithm 埃氏素数筛
def gen_primes():
"""Generate an infinite sequence of prime numbers."""
D = {}
q = 2
while True:
if q not in D: D[q * q] = [q];yield q
else:
for p in D[q]: D.setdefault(p + q, []).append(p)
del D[q]
q += 1
duangsuse::Echo
#py 周刊 - Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅) - PowerToys添加“可交互”的截图 - Google 等各种大公司的技术blog #list - #apple #design 设计师法则 - #learn 看美军的脏话官话(F-words)学英语 。 - 单靠 #sql 如何保存数据 - APL 里有的 py 基本列表处理式 - FastAPI 最佳实践 list…
#py 周刊
#recommend #tool 带有 "Android 子系统", taskmgr,... 的网页版Win12 demo 🎨
#algorithm Hello Algo 多语言实例
#tool EasySpider +可视化编程
#android 高级包管理器
js: await using fp = openFile()

Flask 深入探索: 请求上文、会话、CORS
fastapi-users:开箱即用的 FastAPI 用户管理库
Django 发送带有验证链接的电子邮件
FastAPI 使用 Tailwind CSS + SQLAlchemy
Streamlit 初学者指南: 类似 Juypter UI
Polars:快如闪电的 #rust DataFrame 库, 优化表达式和上下文、惰性
dara:轻松创建交互式 Web 图表程序 📊
Python Asyncio 之 socket() 网络编程理论详解

可视化+深入学习数据结构与算法:C++、Swift、Python、Java、C#、JavaScript
bisect,heapq 如何保持数组有序
upiano:命令行里的钢琴 FluidSynth
探索国家/文化多样性:Pyetho — 用于列出国家及其语言
深入介绍 Python 3.12 中的永生对象(如 None 关键字和小整数)
下划线的十种用法(REPL, match, i18n)


7、h2ogpt:私人文档+图像的问答 PyMuPDF 识别与提取表格
8、refact:开源编码助手,支持自动补全、代码重构、代码分析
9、dify:创建自己的 AI 应用 +CN
duangsuse::Echo
#py 周刊 - Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅) - PowerToys添加“可交互”的截图 - Google 等各种大公司的技术blog #list - #apple #design 设计师法则 - #learn 看美军的脏话官话(F-words)学英语 。 - 单靠 #sql 如何保存数据 - APL 里有的 py 基本列表处理式 - FastAPI 最佳实践 list…
#py 周刊
HackerNews 等新闻聚合
本该辅助思维的工具,如何异化我们
pysentation: 在终端展示你的py代码
js anti-debug: 尝试阻止全编程界最优秀的 DevTools,
https://github.com/theajack/disable-devtool/blob/master/src/detector/sub-detector/func-to-string.ts
v0.dev: 生成预览和迭代HTML设计

Mojo 🔥 Linux版本可用, 自带 Tensor(nd),DType 支持
(ps. 这人怎么 parser 都不会写啊, (1+ 换行 1) 时解析失败,等待下一行不就行了吗? 他只是写了个众所周知的hint
这个 let var 是干嘛啊(还有Java式的 class Benchmark..),Python 简洁的优势都丢了

🤖 Falcon 作为当前最大的开源大模型,有 180B 参数,在 3.5 万亿词的 TII RefinedWeb 上训练
jieba的替换: pkuseg-python , hanlp

#wasm #plt 500行迷你C编译器
🥧 半手工绘制 plt.极座标直方图

📈 #algorithm min/maxHeap 有序列实现
#bin Bloom filter 集合 位运算实现 —性质类似WeakSet, 非常快

🐳 用Podman部署py包 [维护pip包]
📝 使用 Protobuf message{} 储存和传输
protoc --python_out=. .\music.proto

from music_pb2 import Library
Library().add(music).K=V
lib.SerializeToString()
lib.ParseFromString(f.read())


compress:基于个人语料库的快捷输入工具
gpt_academic #zh gui : 为 ChatGPT/GLM 提供实用化交互界面
GPT 学术优化,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持 Python 和 C++ 等项目剖析&自译解功能,PDF/LaTex 论文翻译&总结功能