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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
有时候虽然他们只是在吐槽过于简单,我都觉得有点太爱秀了的意思,大概是老「反向偏见」了
可能是我对数学的一些人的某些作风有一些成见吧,不过本苏也不会算法和 DP 动态规划,当然递归和缓存是会的。

不过这道题 JavaScript 里也可这样答:
const
int2float=(n)=>applyKeepSign(n, i=>digitCat(0.0, [...digitPop(i)].reverse())),
digitPop=function*(n){ let acc=n; while(acc>0) { yield acc%10; acc=Math.floor(acc/10); } },
digitCat=(init,ds)=>{ let acc=init; for(let d of ds)acc=acc*10+d; return acc },
applyKeepSign=(n,op)=>Math.sign(n)*op(Math.abs(n));

然后 [-10, 251, 0].map(int2float) == [-10,251,0]

其实我最大的成见就是,算法在实际应用中不是最重要的;学会设计和编程调试在大部分应用/服务里对性能及健壮性、易用性的影响更显著,很多时候看似简单的算法反而有更低时间复杂度;人的能力不是通过「不明觉历」能评价的。 🤔💭
Forwarded from 浪人新闻
AI:你们卷吧,我先去赛博坦了
#日常精神分裂 #DOM #game #js
A: 你看到了吗,那个从视口顶部丢球球下来,像俄罗斯方块一样的球碰撞游戏,是叫合成大西瓜来着
B: 那是个逻辑相当简单的游戏,也看见有三四个人做了翻版(奥利给等),如果按环节重复、更新规则、动画细节三项而言,细节不超过六个
A: 如果我们利用 canvas 做碰撞检测复刻一个,你觉得怎么样?整个绘制只有 Ball(p,r) 一种类型两个参数!简直和只有 fillRect 的贪吃蛇一样简单
B: 和 web asteroids 的 doc.elementFromPoint 不一样-_-|| 这次要手写 2D 游戏引擎碰撞检测部分,除了基础的加速度和碰撞方向检测;老实说都是数理密集算法
A: (不考虑与边界矩形的碰撞)我想到了三种方法做纯圆球的碰撞检测,首先是遍历球表算距离……
B: 没用!这样相当于每个配对你都要检测一次,要知道这个游戏后期会有 20 来个的,为保证不穿模,每一帧都计算?!
A: 那我参考整体动量,间隔毫秒或者帧号判断呢?
B: 都说了会穿模了
A: 第二种方法,参考物体的运动方向延长线,看交点,每对 ab,ba 缓存下只算一次
这种方法也可以用来优化一个物体不动的碰撞,或可预判碰撞发生时间,有变再 cancel 重算
B: 好啊,你怎么取射线和圆的交集?
A: 第三种方法,其实理论上只有画特效需要用到 canvas ,其它的尽量用 DOM 元素,就可以利用浏览器的既有算法,我知道有个 Element.nearest(selector) ,这样每对物体检测一次 d(p1,p2)<(r1+r2) 就够了;对边框是特例,只要对所有物体增加 x,y in clientRect.innerDist(r) 就可以了
B: 是个可取的方法,你不会用框架吗,整个游戏只有 ellipse collision 和 gravity 、force ,再简单点就只有放球和贴图,碰撞只是换贴图+增长,球与上框碰撞结束而已。
A: 嫌大了。 DOM 已经足够强大,何须更多修饰? 高射炮打蚊子

B: 好了,谈谈复用问题吧,假设你不用框架,却又写了个用途单一的正圆碰撞检测算法…… 我猜测应用部分是这样的:

gameStart() = rateLimit(waitPutBall, 4000)
onEach(ball)
limitInRect(world.rect.innerMinus(ball.r), ball) // 模拟边框碰撞体
if ball.p.y<yTopline: gameOver()
waitPutBall()
ball = newBall(randPick(cfg.sizes), randPick(cfg.colors))
ball.y = yTopline; ball.g = cfg.weight
onmousemove = ev=> ball.x=ev.x
onmousedown = ()=> world.attach(ball) // 球开始下落
onCollide(a,b)
a.r += b.r
a.onChange()
b.remove()


gameOver() 的条件也可以换成在放球和最近球的碰撞检测 避免每个都判断

A: 我相信关于代码复用和框架组织,咱会有办法的!
#rust #parser 普通的 Lex/Recurive 流解析器,分词靠 regexp,中缀优先级分左右,Lua 模式;最后教了 Scheme 的 s-expr 解析
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
正则表达式拼词游戏
http://jimbly.github.io/regex-crossword/
这种图应该怎么做啊…… (我好像又说了一遍
#DontKnow #推测性 #web 关于两个常见交互/功能设计!二维码登录和「划屏手势同时使用 pager 和 paged banner」

一般而言,网站使用 cookie (本意是临时的标识符)获取用户的登录身份。不同设备有不同网络地址,最好不要复用 cookie ,服务端一般要写专门的逻辑支持「手机扫码登录」。

但是,所需最小的信息交换和直接共享登录 cookie(token) 的方法是一致的。网页端显示的二维码蕴含已登录客户端和自己都明白的一个「读写位置」,它能写的数据可能是固定的,比如由已登录客户端请求服务端写入新 cookie ;但本质仍是通过「二客户端都知晓的读写位置」来实现,只是掩盖了直接读写的操作且支持了事件

为了监听到登录事件,往往选择暴露 WebSocket 接口

== 很多时候 DOM 树上接受某事件的元素不止一个。 举个(不同平台的)例子, Android 上一些 ViewPager 里可能有横向滚动条,为什么只有滑动到滚动条末端 pager 才会翻页?

从嵌套序来看是 pager 包含了(其子项) ScrollView ,但对于用户的输入 event ,传播责任链是深者优先——直接目标 Scroll 会处理这个交互。

如果滚动条已到最左而仍收到 swipe 手势,它就不能截获(intercept)此事件仅由自己处理,故此其父项 pager 就有机会往左翻一页;反之,如果它明白事件的涵义是滚动自身,则可以消耗它而不影响父视图。
duangsuse::Echo
这种图应该怎么做啊…… (我好像又说了一遍
第一遍是写函数图渲染的时候,我说可以支持 script 公式项和 T 变量,这些字符都单独 measure+sum width & fillText 然后给 x,y 加随机量(呃好像不要 T 变量了,但公式含随机量的动画性要检测)

现在我考虑下有两种方案:
1. 每行去 canvas 堆叠 width 获取 x,y,text 表,交给一个 op 每帧预处理
2. 切分成许多 span ,生成抖动 CSS 动画 keyframes 。纯静态不知道位置可以用 transform ,JS 生成可以直接设置 left, top

等着我的好消息🤔 https://t.me/dsuse/16701
我的天呐,这人怕不是对 JIT 即时编译一词有什么误解…… #tencent