duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from duangsuse Throws
🤔 红茶我已经喝完,不知为何仍未昏睡#life #Haha #ACG #inm
#Haha #PL #life #inm 🤣哈哈哈哈哈 还有Duck typing
#algorithm UnionFind、三角分形(精简版)

如果要实现 Set 你会怎么做?每次 add(x) 时去重遍历 uniq() 吗?
现在按数组Array(N).fill(0).map((x,i)=>i) 实现 Set<Int> 。每位与一个索引关联,初始是和自己
当加一对 a-b ,把它们的位置赋上彼此,就能知道在不在同集合内——不行,如果还有a-b-c 咋赋值?
答案是 a->b 关联 b->c 再关联,因此 find() 变成链表遍历后最终同一。然后 add(a,c) 先找这个"b",把它->c
最终这个 Map<Int,Parent=Int> 会变成树状数组,只是不被遍历。UF集也有a-b小size侧优先-> 权重,和max()时顺便合并快查法

UF=(N,up=Array(N).fill(0).map((x,i)=>i) )=>(a,b,eq=true)=>{
let max=i=>{for(;i!= (i=up[i]);); return i}, iA=max(a),iB=max(b)
if(eq&&iA!=iB)up[iA]=iB; return eq||iA==iB //不上obj,写不好..
}
let o=UF(3); o(0,1);o(1,2)
o(0,2, false)==true


//给不懂的同学:N是(Map状数组)项个数,up是“父数字” ,eq代表不仅查询还建立a-b 连接关系。 UF算法与up[] 是1:1 ,所以随便起了个o=UF() 数据来功能test
这个相当于List<Set<Int>>
另外 UF,BFS 都是在节点图上判断两点是否联通,如果需要路径则用 DFS ,如从节点 2 的[+3,*3]边怎么走到 "9":
dfs=(link,flink,out,chk=(e,e1)=>{let k,k1;if(e==e1)return[]; if(!out(e)) for(k of link){k1=chk/*找!*/(flink(e,k),e1); if(k1)return k1.concat(k) } })=>chk
ten=dfs(["+3","*3"], (a,k)=>eval(a+k), a=>a>10)
ten(2,9)
->+3*3 (chk完还应reverse下.)
//当然比较hack,如果是专门讲我就会用正经let函数
然后最短路径可以用Dij狄图算法(也可优化权重边),也有A*啥的寻路法。 pip,apt 等依赖工具就是简单BFS可达搜索搞定;我不搞OI懂的不多
#inm 比较喜欢的数字论证生成器可以是这样 11 = 11*-4+51+4

我找了两个与算法解读比 较差的博文:
https://blog.csdn.net/dm_vincent/article/details/7655764
https://www.cnblogs.com/SeaSky0606/p/4752941.html
还有正经算法解读: https://zhuanlan.zhihu.com/p/63123489
大家可以比比它们的信息量。

你要咋画 Xecades大佬的三角分形 (三角内接倒三角,其三边与我顶点继续如此)?
本来是要在中线拿3点(shift遍重组,或者手写配对)和带深度递归的,可看起来只需要
#js #code
document.write`<canvas id=eg>`
{
let sq=Math.sqrt, dim=(e,[w,h])=>{e.width=w,e.height=h}
y = Math.min(innerHeight, innerWidth * sq(3) / 2)
g = eg.getContext("2d");
g.fillStyle = "blue";

let P=[[0,y],[y / sq(3),0], [2*y / sq(3),y]],p=[...P[0]] //左顶右
dim(eg,P[2]);dim(eg.style,["100%","100%"])

setInterval(() => {
let j=0,i = Math.random() * 3 >>0
for(;j<2;j++) p[j]=(p[j]+P[i][j])/2 //随机选方向游走
g.fillRect(...p,1,1)
})
}
//g;画布,dim:宽高wh ,sq:三角(点->点)xy距离的计算, j:仿造向量的计算同时应用于xy

就够了。GLSL 里画三角
#define v1 float
v1 PI=3.14;
v1 ply(int N,vec2 p){
//多边形. 三角[0,y],[y / sq(3),0], [2*y / sq(3),y] 都没了..
v1 d, TURN=2.*PI;
// space to -1~1.
p = p *2.-1.;

// Angle and radius from the current pixel
v1 r = TURN/float(N);
v1 l = atan(p.x,p.y)+PI;
d = cos(floor(.5+l/r)*r -l)* length(p);//distance-shape

return 1.0-step(.4,d);//也可smoothstep(a,b,v)模糊锐边
}
void mainImage(out vec4 bg, vec2 P){P/=iResolution.xy;
P.x *= iResolution.x/iResolution.y;
bg=vec4(0,0, ply(3,P), 1.);//左中 蓝三角
}
// 这个我没法注释,因为SL图形和数学几何关系大。有的时候看不懂也不是因为故弄玄虚,而是那个领域本身难懂。比如我define v1=float 和rld仨变量变 degRee(不用a因为编程有数组要命名),length,distance 后对第三块代码难度影响不大,因为核心不是浮点有几个字

(不过要画三角分形就会难许多了,而且Xe的游走三角是靠边点累积来的,SL不支持累积..)
可以看出,物理的矢量是非常高明的代码复用,少做了很多结构性的事,却照样实现图形效果,而且更可调参——例如靠点集计算就做不到 ply() 边缘模糊的效果
duangsuse::Echo
像 AlphaCode 一样,它能贴出算法 ..不能说这全都是语料库里既存拼接出来的,有许多或简或繁的例子,甚至能定义新语言语法让它执行! 只要上文语境交谈清楚,它就没有不能写的代码 如果想使用新API,或重构旧代码,最好让语言AI来完成了。 程序员没编程语言鸿沟,对脚本化的函数是直接写代码更快
#end NewBing评测
- 字符画(py,java,cpp)👍优于普通人
- ML基础(py,js iris分类器)👍省力
- 字符动画(PIL+cv2)🤔 据上文重构能力有限, 注意 rgb_to_ascii 和问题1 map_pix2char 是一样的
他没法很智能地完成程序融合、框架设计
- py mapSum() 👍能够理解函数外提等重命名操作,但不多
- 人脸识别(仅py) 👍融合了多篇文章的内容,代码质量比原文高/英文提问
- js Trie字典树() 🤔算法选型上优于普通人,非常易读,但设计力较低。都是网上有的
- #inm https://telegra.ph/野兽先辈大战星之卡比-02-25 ()非常爆笑,ChatGPT写这个要手动输入上文
想要写好故事,提示词应该不短。但AI帮你打基础故事的字,实在太方便
另外Bing是可以帮你调用网页UI的。目前客制化还很低
https://tttttt.me/dsuses/5082
- 这个语言模型可以自己做二分查找等程序的后台思考🤪,但不稳

- 用WebGL绘制bezier边框的矩形 😐 只能给建议,可能是语料库少。改天用英文问
👆搜了三次,给了普通圆角、4边粗细不同、边缘极坐标、4个bezier叠加等方案,代码质量和链接404(一本正经地贴不存在的链接,变量名竟穷尽24字母..),可复现性也堪忧.. 最后还是选择spline连线,和bezier圆角差不多

综上:快点来体验牛必应🐮🍺
墙内还有人黄牛对话API呢 ,以后被墙可就不方便了❤️
duangsuse::Echo
完了,孔乙己要脱去长衫,降低工资,拉车卖夜宵了🤪😂 中文提问的响应速度变快 AI的逻辑和知识赛高,唯独就是技术选型被大众带偏,不爱复用,没有审美 #bing 编程实现base64和base16 算法,基于代码复用 js实现
#talk (这个不是采访稿😂。可以理解为我博客的特色文笔

>注意看,一个月前自GPT爆火以来,他一直在收集 #AI 编程质量和适用范围相关的示例

>无视GPT3和copilot也能完成任务编程,比配置新工具容易的多,为何要关注GPT的能力呢?

copilot是付费的,而 openai.com 通过新必应很容易体验,我一直想以10分钟左右的成本探索一些技巧/新途径,或者问问记忆了更多见闻的AI 对我的设计有何建议

另外,如果以后我需要解决“业务逻辑”的套话代码,最好是让机器生成和修改
我也很感兴趣,如何利用对话补齐/Bing chat 等接口扩充既有的教程和文档工具 ,比如界面设计、翻译、给伪数据生成提供UI
感觉这样能极大降低门槛、提升创造丰富性

>你平时在设计什么

我是js,py 玩家,但其实也写过C++,Kotlin,Rust,Haskell 等不同范式的代码 ,很少写CRUD

编程纯粹就是玩,之前在写base64的位运算实现和 py ast 宏展开、编译到SQL的语言,还有 canvas/svg/webgl 的CSS绑定,反正就是对软件功能或简化开发有意义的框架。

>GPT能生成多大比率的这些功能?提示词很难吗?

GPT3 基于搜索结果,可以100%实现和理解:
基于B站或Pinterest API 的脚本、利用各类系统服务API、生成json等配置
机器访问工具/新闻网站,完成RPA交互任务
py,java,cpp 版的字符画/badapple
使用torch、dlib人脸识别、Vec2/Mat 等不同方法完成任务

实现 Trie, 解释器, 四则计算器, 编程语言 时,提示词没有具体术语的话,就生成一堆假大空。 应该是越流行的应用,提及的方式就可以越隐晦
https://tttttt.me/dsuse/18116

但总而言之,只要逻辑和资料是完备的,AI 100%可以生成和重构完成任务的代码 ,只是比较没重点。说谎的概率比非编程题低

>那么AI“会”编程吗?

精通八国语言、19门编程同步学的模型应该算是会编程,它能完成需求、解读和重构代码片段,还能把算法用在对话里,有自己的逻辑链,但“能实现”不算编程创作。

AI 可以在“不必提供完整信息”的前提下就设计一个app,甚至只说要加/使用什么元素 就能直接体验,这样,文档和语法糖还有意义吗?

用懂没听说过的体系、获取编程的语感、理解代码结构的框架性,其实才算是编程。 码农和CRUD boy 就不会,主打一个CtrlCV和改配置模板,但他们也是占很大市场的,比如在日本就很吃香,现在还有copilot。或许每天十行就月入过万
语法糖的本质是让代码长得更像UI而易读改(定义式编程)并能够扩充, 不能因为可以生成就无视代码的易读和优雅性,而缝合面条代码。糖的存在让代码自文档,就利于文档的示例化,利于开放者寻找灵感
#statement

AI有些缺点,首先是难以专项学习冷门体系,它缺少这类经验;而对于热门的那些,它的经验都是主流观点,没有人格和特色(好比AI小说比较乏味)
无脑提问,它的技术选型就会很烂,
虽然总体开销比非AI编程低,但事后若发现走了弯路,又要再监督它生成一遍。提问者最好还是“会编程的” ,而对各种工具的设计者,AI做的也更像编程语言的社区/标准库 会提供的创作素材。

>既然理科上打不赢AI,你不担心被AI替换掉吗
Jupyter提供的UI界面库很“编程友好”,但选择它的也是少数。许多东西的用途远远少于适用性,GPT 也是这样
有一点会争议很大:
“人是共同交流,不是用于替换”

其实菜一点也会轻松不少,回忆起最初的动机,就是想设计简单泛用的编程体系,并不包含“变得很高深 会很多”这种事。饭碗的问题,说到底也不是疯狂内卷能解决的。

>你觉得计算机领域不该存在?

>你打算如何让AI辅助lib和项目的设计

>未来你的技能会完全被AI掌握吗?

人脑有860亿神经元,而GPT4有2k亿参数
神经细胞是尚难以解释其规律的存在,有能感知时空轨迹、能建立记忆的神经元,而不同细胞的激活规则也完全未知。
即便基于模型权重能完成很多任务、记忆海量词库,用于对话续写和图像,也不能证明能力上是无限的。
duangsuse::Echo
执行时是怎么样的呢? 🤔(当然这里可能不严谨,不过也够了,反正大家很多人连 CDEF 系统栈是怎么维护的都不知道,也算是科普一下) 我们的 caller 叫做 main,它执行如下代码以调用我们的子程序 bd: sub esp, (2*4) <sp> [....] [....] |***** mov ecx, ; buffer ; ecx = (char *) buffer mov [esp+4], "SGVsbG8K" <sp> [....] [*"SGV....] |***** mov [esp]…
#backend #asm 原来yt上也有这么多人在做CS科普
好怀念以前什么都不了解,没有地方拿到「原始资料」的时候啊..
那时候就是靠猜、靠一些中文资料碎片,也不熟悉「内存布局和跳转」的C语言指针模型,更不会把 struct;union; subtype; weak type;trait; 这些放在一个心智模型里去diff

现在看来是走太多弯路,实现了貌似「科班」轻松就懂的、无意义的东西,但在我看来,用x86 写算法明明就是容易搞懂的事,错误在于最简例、可视化和复用的缺失

说起来,频道的 #tag 太多,成了失去归类能力的野草..😓 对我而言「流行编程语言」就像这样吧;为了摆架子,搞丢了问题的本源

又说了奇怪的话了..😶‍🌫️ 知乎上也会被PL人喷是民科
幸而最近有点时间编程, 不知道能整出啥

#dalao #blog #inm 野兽的链表里技!