冒泡.gif
2025年12月,预防用Uiua语言制作了一个冒泡排序演示动画GIF,我为其添加文字“冒泡”后当作动画表情,这个版本被一些群友传播使用。如果你见过这个动画表情,也许你我是有点缘分在的。而现在,我重新编写代码重制了这个动图。
起因是群友最近提起这个动画表情的历史,让我发现了旧版冒泡动图的打乱算法不是等概率的:
Uiua 是一门还在迭代开发中的基于堆栈的隐式(即函数不显示标示其参数)的阵列编程语言,追求代码简洁,在设计上借鉴了 BQN、APL、J 语言。
2025年12月,预防用Uiua语言制作了一个冒泡排序演示动画GIF,我为其添加文字“冒泡”后当作动画表情,这个版本被一些群友传播使用。如果你见过这个动画表情,也许你我是有点缘分在的。而现在,我重新编写代码重制了这个动图。
起因是群友最近提起这个动画表情的历史,让我发现了旧版冒泡动图的打乱算法不是等概率的:
是的,时隔六年,我决定重制一下本博客的第一篇文章。
2020年3月,B站推出了 bvid(BV号)来代替之前的 aid(AV号)作为每个视频的唯一编号。bvid 长 12 个字符,开头固定为“BV1”,之后 9 位为 58 进制编码,可通过算法与 aid 相互转换。
时过境迁啊,当初最早被披露的算法已不适用于后来 aid 值较大的视频。这次我用我们的老朋友文言和新朋友 WhatLang、Uiua 三种语言了实现番号转换,三种语言各有特点,一起来看看吧!
Uiua 99bottlesUiua 是一门还在迭代开发中的、基于堆栈(stack-based)的阵列编程(array programming)语言,在设计上借鉴了 BQN、APL、J 语言。
瓶 ← (
⍣("No" @s °0|1 "" °1|:@s)
$"_ bottle_ of beer"
)
墙 ← $"_ on the wall" 瓶
拿 ← ⍣(
⍩($"Go to the store, buy some more,\n_" 墙99) °0
| ⍩($"Take one down, pass it around,\n_" 墙-1)
)
⇌⇡100
&p /$"_\n\n_" ≡(□$"_,\n_.\n_." ⊃(墙|瓶|拿))