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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from Gumball Watterson
把 Mivik 的重写又重写了一遍,加了更新参数和 GLSL 的功能;感觉最近越来越接触到自己不会的东西了,太菜了啊。
duangsuse::Echo
#life #science 订户评论: 麻醉师的职业目标是让患者平稳地度过手术,这就需要控制剂量、根据患者反应随时调整。 目的是暂时昏迷,不考虑可能的对对方的轻微损伤的话,就可以什么麻上什么。 而且吸入式麻醉剂也确实不少(比如最知名的乙醚 ,仅作例子不是例外) https://t.me/outvivid/2705
https://t.me/personal_trash_can/19556
社会公民安全的问题还是要重视,而不能抠字眼。 🌚
真是受害者的话三秒几十秒有什么区别,搞不好还是真能死人的,「合法」渠道实在是堪忧(本身不合法哪来的合法渠道 草),必须严加管束。

另外相关博主还给了一个小提示,如果真有遭到歹徒袭击,可以装晕再找机会逃跑。但是 谁也不会用这种药物助眠吧,那么为什么不表示立刻全面查处呢? 🌝
http://passer-by.com/relationship/ 丈母娘=老婆的妈妈 #relation #functonal 对!要的就是这个 🌚
下次关系式实践就一定要弄这个,可以算过去可以推出来,非常实际,还能支持 ABCD 变量是最好的了

要是只支持一个方向多无聊, 父母儿女 兄弟姐妹 拿 Map fold 一下就解决了,可是关系式求解才有意思 🌝
好吧,为了证明这个问题(单向查称呼以及单层回溯)没意思我就举个 #Python #code

族谱关系只分长幼男女两种,究其根本也就是「亲孩 长幼(指同辈关系的)」四个字

relationCode = """
父 爸.; 母 妈.
儿 儿子; 女 女儿
兄 哥.; 弟 弟.
姐 姐.; 妹 妹.
妻 老婆; 夫 老公
妻父 岳父; 妻母 岳母
夫父 公.; 夫母 婆.
母母 姥姥; 母父 姥爷
父母 奶奶; 父父 爷爷
母姐 大姨; 母妹 小姨
母兄 大舅; 母弟 小舅
父兄 叔叔; 父弟 小叔叔
"""
def relativeData(code, sep=' '): op=lambda s:s.split(sep,maxsplit=1); return {kv[0]:re.sub('(.)\\.', "\\1\\1", kv[1]) for kv in map(op, re.split('''\s*[;\n]\s*''', code)) if len(kv)==2}

def mktrie(d, k_end=None):
def br(dd,kk): v=dd.get(kk); vd = v if isinstance(v,dict) else ({k_end:v} if v else {}); dd[kk]=vd; return vd
for kkz in (iter(k_:=k) for k in d if len(k) > 1):
v = d[k_]; d0 = d
for kk in kkz: d0 = br(d0, kk)
d0[k_end] = v

class bidir_map(dict):
def __init__(*arg): dict.__init__(*arg); o=arg[0];o._rev = {o[k]:k for k in o}
def keyOf(self, v): return self._rev.get(v)
def relDesc(s, use_short): # 父父=爸爸的爸爸(=爷爷)
if use_short: return sep.join(rels[k] for k in s)
path = rels; res = []
for i, ch in enumerate(s):
if ch not in path: raise ValueError(f"unknow {ch} in {repr(s[:i+1])} at {path}")
if (v:=path[ch][None]): res.append(v); path = rels
def rrelDesc(ss): return [rels.keyOf(s) or s for s in ss]
# ~女儿的妈=女母 (要检测自相等关系和有效性就必须明白性别什么的 很麻烦,但是机械执行就不需要算法


下面的部分是湖北本地的叫法,当然这都是配置文件,能随便切换的。 😋

这个东西稍微推广下,结果 list 化下,就能支持关系别名,或泛性别、泛长幼的查询 ,但是一点意思也没有 要做就做好玩又好学的😒
从一个拓扑图里导出任意两点的关系写出的应用最优雅,可惜我不会,有没有人能教会我…… 可是博文 hello declarative world 的大佬都没能教会我 😢 扶不起
#Python #code 写了也没用…… 还是赶紧睡大觉
duangsuse::Echo
http://passer-by.com/relationship/ 丈母娘=老婆的妈妈 #relation #functonal 对!要的就是这个 🌚 下次关系式实践就一定要弄这个,可以算过去可以推出来,非常实际,还能支持 ABCD 变量是最好的了 要是只支持一个方向多无聊, 父母儿女 兄弟姐妹 拿 Map fold 一下就解决了,可是关系式求解才有意思 🌝 好吧,为了证明这个问题(单向查称呼以及单层回溯)没意思我就举个 #Python #code 族谱关系只分长幼男女两种,究其根本也就是「亲孩…
https://github.com/mumuy/relationshiprelation.js (同目录还有个 common.js)写得贼复杂,还有同志去重、逆向ID、逆向关系链什么的 🌝🤔
我也不知道该不该分析,分析吧是功能很杂乱,不分析吧又好像在做自我限制。 不过这个脚本 mktrie 字典树算法写了半天,测试次数远远超出我的预期,可见我是没算法商(

对了,以上 py 代码都是我为压行压字写的(当然我也很克制没滥用),大家千万不要模仿(实际工程应该切忌省击键 尤其是压行)
用的什么 kk, v1 这种命名都是有次序语义的(所以我才能用这种鬼画符写代码……只是这命名应该就只有我理解了)

明天先去把 Yuuta 的 BFS 写一下,好久没写图算法了 😋(记得上次写 dijkstra.kt 是什么时候
duangsuse::Echo
https://github.com/mumuy/relationship 的 relation.js (同目录还有个 common.js)写得贼复杂,还有同志去重、逆向ID、逆向关系链什么的 🌝🤔 我也不知道该不该分析,分析吧是功能很杂乱,不分析吧又好像在做自我限制。 不过这个脚本 mktrie 字典树算法写了半天,测试次数远远超出我的预期,可见我是没算法商( 对了,以上 py 代码都是我为压行压字写的(当然我也很克制没滥用),大家千万不要模仿(实际工程应该切忌省击键 尤其是压行) 用的什么 kk, v1…
还是上一下贼船吧,毕竟 miui 系统计算器就有模块引用这个代码🌚
//转换类型:'default'算称谓,'chain'算关系(此时reverse无效)
reverse:false //称呼方式:true对方称呼我,false我称呼对方

首先 api 是 calc(options={}) 而不是 calc(text, options) 这接口就有问题,不常规也不吼 😒

既然 reverse 在 type 为 "chain" 时无效(请注意特定配置下未用的配置永远是设计不当 露骨点就是编程者对此语言的分支类型写法或相应设计模式不了解😓老实说在前端界挺普遍),我们认为实际上有三种模式:
default, reverse, chain
前二者分别对应 type=="deft." 时 reverse 的两种情况,我几乎以为这么加个字段是有意义的。噢天哪😩 什么时候大部分人能认真处理界面和后端的分离。

然后 reverse ,我们竟然已经知道了一个 bidir_map 的对应关系,反向其实只需把既有单称谓改成正反向的称谓列表, rev 时得出结果翻转列表,再用反向称谓即可。

比如 妻父父=岳父的父亲
反过来就是 r(父亲) r(岳父) ,即 =儿子的女婿
超级简单而且与之前的数据复用设计,照应了🌝(但我还是觉得关系式一致化求解好 还能自动 simplify ,不像序列就只能靠定义相反关系之类的方法🤪

还有就是 自体相等性、弟兄 可能是自己的猜测、禁止同志政治正确性 都做完了基本就没什么了🌚

计算器可以说是最适合跨平台实践的应用种类了😋 IO 类型很单一,几乎不需要外部库,UI 能做的扩展轻松而且选择自由度高,算法种类可自选到简单的,是值得一试的东西。
duangsuse::Echo
#Python #code 写了也没用…… 还是赶紧睡大觉
我 DIO 败了😂,明明没好气的说自己用的是鬼画符,看来还是比不上各类前端大佬鬼画符。

要是我,可能选择把自体判断和 父妻=$母 这种东西给移到另一个“绝对准确”的模块里,而且数据要压缩就会选择脚本预处理,字符串内存优化就会选择加一层恒等替换字典,总之绝不会另外搞一套 notation... 😒

另外动苏非常清楚这个东西绝对不可能有批处理的应用场景,权衡利耗后我觉得完全没有压缩数据包或内存的价值,性能也绝对不重要(不能再快就是了) 断舍离就是这么干脆😋

毕竟写的东西多了,也明白性能这个东西是不可臆测或不可企及的 没有执念了 #statement
duangsuse::Echo
https://github.com/mumuy/relationship 的 relation.js (同目录还有个 common.js)写得贼复杂,还有同志去重、逆向ID、逆向关系链什么的 🌝🤔 我也不知道该不该分析,分析吧是功能很杂乱,不分析吧又好像在做自我限制。 不过这个脚本 mktrie 字典树算法写了半天,测试次数远远超出我的预期,可见我是没算法商( 对了,以上 py 代码都是我为压行压字写的(当然我也很克制没滥用),大家千万不要模仿(实际工程应该切忌省击键 尤其是压行) 用的什么 kk, v1…
https://gist.github.com/duangsuse/54fa58d51e543e9c51fac2793aca82ab #Java #algorihtm #code 又败了。 😢

开始的思路是用 Queue 模拟维护单个 stack 的 backtrace 路径 StringBuilder ,后来为了同时 IO 的子程序写错改了很多次
最后才发现, AlgorBFS 根本不能用非复制的方法构造 backtrace ,必须是每一步都记好路径才行,因为顺序弄岔了…… 单点就得先找 ll, lr, ... 方向,不是四个方向随便先 lrud 记下来再每个去找就可以免 stack 的。 (当然鱼塔的代码也有能改进的地方,可是算法的要点是没法改的)

其实写了半天我的核心思想就是 BFS 能和 backtrace 一起用而且不需要每步都复制路径,这当然是扯淡。 🤪
待会我往上加一个 nullable 递归 DFS 的,BFS 复制的有点慢。

本来打算发给鱼塔的,我看我自己也不会写。 唉
🌚 生草的时光总是过得飞快, DFS 没有寻到最短路径但是的确能用。 一个半小时就过去了
这时候我终于体会到 #OI 生的坚困难苦难艰困,实在是太强自不息息自强了。 😭
duangsuse::Echo
🌚 生草的时光总是过得飞快, DFS 没有寻到最短路径但是的确能用。 一个半小时就过去了 这时候我终于体会到 #OI 生的坚困难苦难艰困,实在是太强自不息息自强了。 😭
记得之前写的文章里也有走迷宫,那个大概也不是最短路径,最短可能要每步选 minBy ,草
我都不能把 LIFO stack 和 recursion 对应起来,只知道用递归程序这样

传 history 大概是为了快一点,避免重分配 List 或者是为了能尾递归(误人子弟) 其实就相当于我的 char+String 实现方式
注意这个 #Haskell 版用的也没有 HashSet... 现在发现 let (x,y) = p in x >= (length m) or (y >= length m!!x) 大概是写反了吧 噢不这个矩阵就是 [y1, [x1,x2]] 的竖向...
duangsuse::Echo
https://gist.github.com/duangsuse/54fa58d51e543e9c51fac2793aca82ab #Java #algorihtm #code 又败了。 😢 开始的思路是用 Queue 模拟维护单个 stack 的 backtrace 路径 StringBuilder ,后来为了同时 IO 的子程序写错改了很多次 最后才发现, AlgorBFS 根本不能用非复制的方法构造 backtrace ,必须是每一步都记好路径才行,因为顺序弄岔了…… 单点就得先找 ll, lr…
#algorithm #learn 关于这两个算法说一句,它们其实还是能秽土转生的🤪

AlgorBFS 只要把它的 FIFO Queue 改成 LIFO Stack 就活了,但是原来在 Iterator.next 维护的路径就要改成在 poll() 后的头部撤销失败尝试,换句话说也就是没有灵魂了(灵魂是只靠改迭代器就能实现单 item 多 links 路径回溯的解决。
当然,也可以选择 Yuuta 式的记录 path 的 copy ,但那样 BFS 内容就是 [int, String] 二元组了(而且后面还要 filter 掉一切走不通的,效能非常低。

而对于第二个已经正确的 DFS,找到最短路径即便用 UDLR, LURD 的试走顺序也没用,唯一的方法是(应该明白这个算法是拿来走有遮挡块的迷宫的 不是求直角最短径的)

思考一下,以 UDLR 扫描大概是先达到顶边,试过出界点的块试 D 已走过,于是试 L ,再 D 到末尾再 L 就会出现这种非常奇特的填充方式……

之所以找到的路径这么曲折就是因为怎么走都是这个模式,而且因为试步有去重每个子问题也不可能试出更短的结果,所以如果迷宫有大部分空地,找最短路径只能预判两点相对位置,然后采取不同步序(如目标在右下,取步序 DRLU 和 RDLU 两次的最少步结果。

至于为什么我自己不写呢…… 一部分原因是我精力还没有电击小子那么充足🌝 还有 我想让它们死( #endFork
#applt #design 🌝👍
duangsuse::Echo
#algorithm #learn 关于这两个算法说一句,它们其实还是能秽土转生的🤪。 AlgorBFS 只要把它的 FIFO Queue 改成 LIFO Stack 就活了,但是原来在 Iterator.next 维护的路径就要改成在 poll() 后的头部撤销失败尝试,换句话说也就是没有灵魂了(灵魂是只靠改迭代器就能实现单 item 多 links 路径回溯的解决。 当然,也可以选择 Yuuta 式的记录 path 的 copy ,但那样 BFS 内容就是 [int, String] 二元组了(而且后面还要…
本来说做个绘制工具可以研究下这个的(当然不是那种泛向的框架 只支持一个队列式算法),最后勉强是用毅力实现了一下,妄想的不用递归也能实现最后成了泡泡,太烧脑了最后选择了 Dijkstra 式 Map+backtrace... 😭 不过好在安排的特性都完成了

关于为什么不能做成框架,是因为我的动画方式是 await/async... 本身 setTimeout fillRect 已经够简洁了,而且我不会其它的算法。 如果说是递归算法又不方便移植到这个示例来,栈深有限。

https://duangsuse-valid-projects.github.io/Share/HTMLs/lrud.html
『广度优先的染色,是从侧面看还是从下面看更好?』
「BFS 是圆的也好,是扁的也好,关键在和哪门语言一起看。
和你喜欢的语言一起看吧。」🥰
——
不断重复的,春日的某一天。

寒假,某个平原的城镇。
OI 大会近在眼前,班上的同学兴奋地谈论“从深度优先搜索的话,路径是长的呢还是短的呢?”
此时,源所暗恋的治,由于栈决定溢出而将要被忘记。

“我们,私奔吧”

源如此劝诱治,并打算逃离递归栈,
却被 stackguard 带了回去。
仅仅是在一旁看着,没能帮上忙的治。

“如果,那个时候我……”

没能拯救源的治,由于焦躁不安而扔出了源在海边捡到的不可思议、广度优先的列与表。
之后,不知何时,时间回转到了栈被挤爆之前……。
在不断重复仿佛死循环的这一天的尽头,算法所抵达的命运会是?

烟花飞上天空之际,拓扑图上的奇迹便会发生——

题外话:
据说,图像连通区域检测
可以用2个Mask来会扫描
然后标记记录发现的连通信息

可以在 对相对于 角线长度 的线性时间完成 #algorithm
#recommend #PLT 各种语言里 print ArchIsTheBest 的写法
草,还有 #Ruby Shoes GUI 的…… Shakesphere 的代码行数最多