Forwarded from dnaugsuz
草,原来绘制和矩阵处理天生不兼容 #CV #Python #visualize
反正我是熟悉 n m y x i j 那一套
可以把 for (i=0; i<n; i++) 套到 绘制程序里
我们只需要往 i, n 扩展一个 j, m 就可以处理项目和 y, x 不匹配的情况
然后矩阵处理又是另一种情况,没有 w,h 什么的
反正我是熟悉 n m y x i j 那一套
可以把 for (i=0; i<n; i++) 套到 绘制程序里
我们只需要往 i, n 扩展一个 j, m 就可以处理项目和 y, x 不匹配的情况
然后矩阵处理又是另一种情况,没有 w,h 什么的
duangsuse::Echo
#math #dalao 补充:删掉[重新带入] 可行,但不兼容无穷解;称为 高斯-约旦法 😅 熬夜看一群示例复杂、半通不通的三脚猫的代码文档,因为算法差异而困扰.. 有点生气 elim([ # [x + y - 35, 2*x + 4*y - 94] [1 1 35] [2 4 94] ]) 这是方程组的矩阵版,xy 编号为 j。逐行i化为'关于j=i': M[i]/=M[i,j],其他行消去j: M[I] -= mi*M[I,j]#系数 即得= [1 0 23] [0 1 12] 示例: j=0~~m…
#learn #math Fourier Transform
的输入必须是2,3维向量:可以用于简化 svg path ✏️
FT是把yMax个频 的sin(cos,基频), 逐y与波形加权求差(np .dot),得到"左右对称"的直方图 (频谱图里纵向的1px 线)
(FFT以此优化. 直方含有"相位",默认为wav+0j,也能被vocoder推出来)
@3b1b 称此为“把sin(yt)缠绕在零点”,频率y=1时当然是振幅1相位0的小圈
复数乘法=向量旋转+缩放
隐函数=热力图(着色灰度图)经过 np.where(p==0) 的黑白化
参数函数=for t循环
Mandelbrot,Julia=对复数+xy做迭代的热力图
kD树
quadtree 四分象限树/八叉树,与kD类似但1次分成4块,是网格分组的特例
Bezier 是1维lerp(A,B,t=0~1) 函数的升维化。3次方是4个点,CSS 里固定 P0,P3=0,1
傅里叶系数只支持周期信号(相位=0),不然要单独算 sin,cos 的系数,所以被震幅+相位角的向量(虚数) 淘汰了
STFT 是对波形隔 n_fft 个采样做一个FT帧,它得到的就不是直方图,而是有时域信息的频谱了
为了分块间的连续性,用(hop相邻重叠*Hann窗)来平均。Hann是横对称的,对块的外围做衰减
iSTFT 也会做重叠相加。
CQT(试玩,右上角) 的中心频率按指数规律分布,可以很好地实现midi扒谱
Log FFT, Bark,Mel 也是基于人耳听觉模型设计的频谱刻度,不同的频谱刻度,会影响基频(音高,f0)检测
光的波长(hue)从紫到红,与频率反比。红频率最低,穿透力强,所以一直是“警示色”,绿光频率高吸收好,所以激光点火器是绿的
光的相位和衍射、蝴蝶的结构色有关
这些都可以理解为微分- 积分 ,不过
☺️矩阵的shape和数域的dtype更是如此
的输入必须是2,3维向量:可以用于简化 svg path ✏️
FT是把yMax个频 的sin(cos,基频), 逐y与波形加权求差(np .dot),得到"左右对称"的直方图 (频谱图里纵向的1px 线)
(FFT以此优化. 直方含有"相位",默认为wav+0j,也能被vocoder推出来)
def DFT(x):
N = len(x)
t = np.arange(N)
pi = -2j*np.pi * t.reshape((N, 1))
return np.dot(x, np.exp(pi * t/N))[:]
reshape意味有N个基频pi,要和输入相乘, 只有正好“共振” 求和时才不会相互抵消。InvFT 只是加权求和@3b1b 称此为“把sin(yt)缠绕在零点”,频率y=1时当然是振幅1相位0的小圈
复数乘法=向量旋转+缩放
隐函数=热力图(着色灰度图)经过 np.where(p==0) 的黑白化
参数函数=for t循环
Mandelbrot,Julia=对复数+xy做迭代的热力图
kD树
= Map<Pair2~3, V>. 可把RGB 查找为颜色名时,或计算圆心碰撞kNN。其优化是把x维中位二分,递归生成(对y维),递归回溯时选最近邻,若P离切分点太近,还要在另一边继续搜索
quadtree 四分象限树/八叉树,与kD类似但1次分成4块,是网格分组的特例
Bezier 是1维lerp(A,B,t=0~1) 函数的升维化。3次方是4个点,CSS 里固定 P0,P3=0,1
bzr=(ps,t)=>{let T=([x,y],[x1,y1])=>[x+t*(x1-x),y+t*(y1-y)] // de Casteljau 算法
return n(ps)==1?ps[0] : bzr(ps.slice(0,-1).map((x,i)=>T(x,ps[i+1]) ),t) //所有左的P都*t 至Plast
}
傅里叶系数只支持周期信号(相位=0),不然要单独算 sin,cos 的系数,所以被震幅+相位角的向量(虚数) 淘汰了
STFT 是对波形隔 n_fft 个采样做一个FT帧,它得到的就不是直方图,而是有时域信息的频谱了
为了分块间的连续性,用(hop相邻重叠*Hann窗)来平均。Hann是横对称的,对块的外围做衰减
iSTFT 也会做重叠相加。
CQT(试玩,右上角) 的中心频率按指数规律分布,可以很好地实现midi扒谱
Log FFT, Bark,Mel 也是基于人耳听觉模型设计的频谱刻度,不同的频谱刻度,会影响基频(音高,f0)检测
光的波长(hue)从紫到红,与频率反比。红频率最低,穿透力强,所以一直是“警示色”,绿光频率高吸收好,所以激光点火器是绿的
光的相位和衍射、蝴蝶的结构色有关
这些都可以理解为微分- 积分 ,不过
chunk(n, window=n*4, sumFn=FFT)
对程序员而言还是小儿科了☺️矩阵的shape和数域的dtype更是如此
Telegram
duangsues.is_a? SaltedFish
#math fft #visualize
#py 周刊
#ts Mypy: 1.5
Mypy 是 Python 的静态类型检查工具,1.5 版本主要功能有: @overrride 、更灵活的 TypedDict(字面创建的 dataclass) 创建和更新、可显示错误代码的文档、改进了泛型函数的类型推断、
#ai 整理和预处理pdf文件,让GPT访问
- 杀死 ProcessPoolExecutor
Python 自身不适合处理 CPU 密集型任务,文章中项目原本使用进程池来规避 GIL 问题,后使用线程、C++ 扩展,内存使用量减少 50%,CPU 使用量减少约 20%
- 观点: Py 不适合编写100行以上的软件,因为弱类型、重构难和性能
- 上下文管理器
骗你的。Java式接口让人难以评价:
btw. 你可以用 %%showast 和 astor 查看算式的树状图和代码形式
- viztracer 提供了 DevTools profile 页
#datas 绘制多个直方图、折线图表
- #tex 对比"星星旗帜"的海龟画图 Python 来学习 PostScript
PostScript 广泛用于打印机、出版和图形设备。文章将可被
#java 如何编写简单的C模块,篡改 CPython 解释器的数字
导入一个模块后,如何让 print(8) 会打印出 9?只需要拿到整数对象池,交换两个大整数引用的值
在 py 文件中写上一句,执行这个文件,幕后都发生了什么呢?文章使用了 readelf 、strace 、ldd 、debugfs 、/proc 、ltrace 、dd 和 stat 等工具,详细解释了脚本被执行的过程。
主要涉及操作系统,GNU libc 相关的内容
推荐阅读
—
#js htmx: 强化的 form table dialog,交互式界面扩展
#php 🤯 Slack: 我们认真觉得PHP好用
#ts Mypy: 1.5
Mypy 是 Python 的静态类型检查工具,1.5 版本主要功能有: @overrride 、更灵活的 TypedDict(字面创建的 dataclass) 创建和更新、可显示错误代码的文档、改进了泛型函数的类型推断、
__slots__
的优化、步进 Python 3.12#ai 整理和预处理pdf文件,让GPT访问
from bot import Retriever, llm_reply#backend 用 numpy, 线程池 优化数学区间求和函数
- 杀死 ProcessPoolExecutor
Python 自身不适合处理 CPU 密集型任务,文章中项目原本使用进程池来规避 GIL 问题,后使用线程、C++ 扩展,内存使用量减少 50%,CPU 使用量减少约 20%
- 观点: Py 不适合编写100行以上的软件,因为弱类型、重构难和性能
from contextlib import suppress的妙用
with suppress(FileNotFoundError):
- 上下文管理器
from tenacity import Retrying, stop_after_attempt #AbortSignal:
for attempt in Retrying(3):
with attempt
骗你的。Java式接口让人难以评价:
for i in Retrying(stop=stop_after_attempt(3)):#visualize #plt LibCST: 遍历Python3代码树
with i:
print(f"🧨炸弹{'真的'*i.retry_state.attempt_number} 要炸了!")
try: time.sleep(2) # 按Ctrl+C !
except:pass
else: raise Exception("💥!")
btw. 你可以用 %%showast 和 astor 查看算式的树状图和代码形式
- viztracer 提供了 DevTools profile 页
#datas 绘制多个直方图、折线图表
- #tex 对比"星星旗帜"的海龟画图 Python 来学习 PostScript
PostScript 广泛用于打印机、出版和图形设备。文章将可被
convert -page 720x480 flag.ps flag.png
的程序,直译成对接到 matplotlib 的 Python 代码#java 如何编写简单的C模块,篡改 CPython 解释器的数字
导入一个模块后,如何让 print(8) 会打印出 9?只需要拿到整数对象池,交换两个大整数引用的值
swap( (PyLongObject*)PyLong_FromLong(8)->ob_digit[0] , (9) )#os #linux 在 execvp(["python3", “Hello World.py”]) 时,会发生什么?
在 py 文件中写上一句,执行这个文件,幕后都发生了什么呢?文章使用了 readelf 、strace 、ldd 、debugfs 、/proc 、ltrace 、dd 和 stat 等工具,详细解释了脚本被执行的过程。
主要涉及操作系统,GNU libc 相关的内容
推荐阅读
—
#js htmx: 强化的 form table dialog,交互式界面扩展
<form hx-put="/contact/1" hx-target="this" hx-swap="outerHTML">
#php 🤯 Slack: 我们认真觉得PHP好用
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
🦄文章&教程
- 如何分析 FastAPI 异步请求的性能?
- 利用 FastAPI 的后台任务:增强性能和响应能力
- 使用 Python 创建直方图
- Mypy 1.5 发布了
- 在 Linux 上运行 Python 的“Hello World”脚本时,会发生什么?
- 通过对比 Python 来学习 PostScript
- Python 中不那么随意的性能优化
-…
Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
🦄文章&教程
- 如何分析 FastAPI 异步请求的性能?
- 利用 FastAPI 的后台任务:增强性能和响应能力
- 使用 Python 创建直方图
- Mypy 1.5 发布了
- 在 Linux 上运行 Python 的“Hello World”脚本时,会发生什么?
- 通过对比 Python 来学习 PostScript
- Python 中不那么随意的性能优化
-…
duangsuse::Echo
#py 周刊 - 周刊1 无语了, #telegram 上写文怎么破事那么多呢? Ctrl+K 弹框又限bot干🐴呢,哇会做C++ UX真是太厉害了,Markdown编辑都搞不全 //替换/^\d*、//g; $0.innerHTML.replace(/<.?p.*?>/g,"") $$('p').forEach(e=> e.replaceWith(...e.childNodes)) $('[tabindex]:read-write').innerHTML=prompt() 只能在vs和web两个浏览器间,直接CtrlCV文档…
#py 周刊
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包
Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备
3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API
不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv 。
uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。
从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间
#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。
数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)
esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。
#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置
Python 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。
从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。
#精通
Python 是一种编译型语言
我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示
开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。
你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。
#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)
XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站。
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包
Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备
3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API
不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv 。
uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。
从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间
#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。
数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)
esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。
#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置
@pytest.mark.parametrize
HypothesisPython 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。
从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。
#精通
Python 是一种编译型语言
我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示
开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。
你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。
#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)
XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站。
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
🦄文章&教程
1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具
2、你应该什么时候升级到 Python 3.12?
3、Python 3.12:一个被人忽略的史诗级版本
4、不要再用 requirements.txt 了
5、为什么 Django 后台管理系统那么“丑陋”?
6、我迁移弃用 setup\.py 的糟糕体验
7、使用 Ptpython 提高你的编码效率…
Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
🦄文章&教程
1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具
2、你应该什么时候升级到 Python 3.12?
3、Python 3.12:一个被人忽略的史诗级版本
4、不要再用 requirements.txt 了
5、为什么 Django 后台管理系统那么“丑陋”?
6、我迁移弃用 setup\.py 的糟糕体验
7、使用 Ptpython 提高你的编码效率…
duangsuse::Echo
噢对了,之前做一个这个 https://duangsuse.github.io/mkey/making_reco/#sorts3 #algorithm #visualize
https://tttttt.me/hyi0618/5036?comment=6393
#algorithm #visualize
>poetry pip 用 #Rust rewrite #statement
这种类似 docker/chroot 的东西其实C API调用都很少,最复杂的部分反而可能是 CLI getopt 和配置文件模板,根本不需要rust..
rust 的意义就是让我们觉得很Niubility,很neo,但写出来的东西,其实不比拿zsh或py胶水几个包快。 printf "\e[33m黄字" 这样的功能强吗? ruby也能做啊,写那么麻烦没意义,其实就是上情绪价值。
像 Vue 最近那个 oxc ESTree 用Rust才有点意义,因为它背后有一个更简洁通用的数据模型,类似与 tree-sitter vs ANTLR/PEGgyjs.org ,这才是革命性的
#algorithm #visualize
>poetry pip 用 #Rust rewrite #statement
这种类似 docker/chroot 的东西其实C API调用都很少,最复杂的部分反而可能是 CLI getopt 和配置文件模板,根本不需要rust..
rust 的意义就是让我们觉得很Niubility,很neo,但写出来的东西,其实不比拿zsh或py胶水几个包快。 printf "\e[33m黄字" 这样的功能强吗? ruby也能做啊,写那么麻烦没意义,其实就是上情绪价值。
像 Vue 最近那个 oxc ESTree 用Rust才有点意义,因为它背后有一个更简洁通用的数据模型,类似与 tree-sitter vs ANTLR/PEGgyjs.org ,这才是革命性的
Telegram
duangsuse in Channel comments
找了俩更好玩的
https://gallery.selfboot.cn/en/algorithms/dijkstra
https://clementmihailescu.github.io/Pathfinding-Visualizer/#
其实Web上算法+UIUX双修的大佬很多, 一定要找visualized
https://gallery.selfboot.cn/en/algorithms/dijkstra
https://clementmihailescu.github.io/Pathfinding-Visualizer/#
其实Web上算法+UIUX双修的大佬很多, 一定要找visualized
duangsuse::Echo
#py #code #learn 协程 https://gist.github.com/BeautyyuYanli/0a6891d8959bcf06b5cd2e5bd30ef3d1 ……利用了py本身就支持 yield&return 而已。 其实和 https://www.ruanyifeng.com/blog/2015/05/co.html 一模一样,加了个 await(1)不回调优化 如果编译器愿意,它也可以在有 await() 时自动把def变async,甚至用类型隐藏await,只是这样就不一致了…
#algorithm #visualize 前缀树 https://youtu.be/af1oqpnH1vA?t=361 🔎"懂KMP"
KMP 是为了减少如 substr.index(s,S)==2 ; s="adad_ads" S="ad_ad" 里判定 for i in S: s[pos+i]==S[i] 移动对齐的次数,避免低效的pos++
如果"ada"\="ad_" 而pos+=3,一定会漏判a"d_ads",需要有办法不跳过'a',这就是next.'_'=2 = (n"ad" - failgo['_'])
S="ABCDAB" 时,failgo[后俩AB]=[1 2] ,我们就能记住AB已读,goto回"CDAB"继续。 O(nm) 变成了 O(n)! failgo是只依赖S的共同前后缀长度生成的,您可以了解分治三兄贵: DP动态规划 、递归、伪递归aka递推
这是一种阉割版Trie+failgoto,也叫AC自动机,是DFA确定性状态机,使用树状数组的压缩思路(图即KV, V=Int=K)。Regex实现的一步就是NFA图压缩到DFA
今天用于中英分词的就是双数组字典树版DA-Trie。 编译原理里LL(1)也很在乎是否右侧最多有peek s[i+1], s[i++]
但没必要实现这些比goto更难看的算法。不妨试一下后缀树如何生成
>我发现"adad_ads" 这个例子举的不如"ABCDAB" …… 当时心里知道KMP是为回文pattern优化的,但回文不朗朗上口,竟然想了老半天。
99% 算法题解从不考虑 demo input 是否既揭示边界条件+算法特性,又朗朗上口。 我非常注重,总是白费许多时间……
KMP 是为了减少如 substr.index(s,S)==2 ; s="adad_ads" S="ad_ad" 里判定 for i in S: s[pos+i]==S[i] 移动对齐的次数,避免低效的pos++
如果"ada"\="ad_" 而pos+=3,一定会漏判a"d_ads",需要有办法不跳过'a',这就是next.'_'=2 = (n"ad" - failgo['_'])
S="ABCDAB" 时,failgo[后俩AB]=[1 2] ,我们就能记住AB已读,goto回"CDAB"继续。 O(nm) 变成了 O(n)! failgo是只依赖S的共同前后缀长度生成的,您可以了解分治三兄贵: DP动态规划 、递归、伪递归aka递推
这是一种阉割版Trie+failgoto,也叫AC自动机,是DFA确定性状态机,使用树状数组的压缩思路(图即KV, V=Int=K)。Regex实现的一步就是NFA图压缩到DFA
今天用于中英分词的就是双数组字典树版DA-Trie。 编译原理里LL(1)也很在乎是否右侧最多有peek s[i+1], s[i++]
但没必要实现这些比goto更难看的算法。不妨试一下后缀树如何生成
echo p/{ub,r/{ot,iv
}}n=a=>a.length; trieS=d=>(k,v)=>{
let pre=(a,b)=>{let i=0,N=Math.min(n(a),n(b));for(;i<N;i++)if(a[i]!==b[i])return i; return N},
p=d,K,p1 ,S//AME part
fndK:for(;;){for([K,p1]of p)if(S=pre(K,k))
if(p1.set&&S==n(K) ){p=p1,k=k.slice(S);continue fndK} else {
p.set(K.slice(0,S), p.delete(K)&&new Map([[k.slice(S),v],[K.slice(S),p1]]) /*长k短'' 新先*/);return}
p.set(k,v) ;break}
}
k=trieS(ks=new Map)
`pub priv prot`.split(/ /).forEach(k)
>我发现"adad_ads" 这个例子举的不如"ABCDAB" …… 当时心里知道KMP是为回文pattern优化的,但回文不朗朗上口,竟然想了老半天。
99% 算法题解从不考虑 demo input 是否既揭示边界条件+算法特性,又朗朗上口。 我非常注重,总是白费许多时间……
YouTube
最浅显易懂的 KMP 算法讲解
Milkice's NG
虽然平安果是圣诞节进入中国后本土化的产物,但美好的祝福从不需要节日作契机,祝大家平安夜安康,吃个平安果
This media is not supported in your browser
VIEW IN TELEGRAM
#cg #js 🎄 https://js1k.com/2010-xmas/demo/856
圣诞节,程序员圈的日常?
原理比 https://tttttt.me/dsuse/19402 的2D几何复杂点,使用了画家算法:z-index排序,正交绘制
2013春,作者解释了 🐝 的绘制算法 #visualize http://www.romancortes.com/blog/furbee-my-js1k-spring-13-entry/
圣诞节,程序员圈的日常?
原理比 https://tttttt.me/dsuse/19402 的2D几何复杂点,使用了画家算法:z-index排序,正交绘制
2013春,作者解释了 🐝 的绘制算法 #visualize http://www.romancortes.com/blog/furbee-my-js1k-spring-13-entry/