本文引用通告至奇怪的 AV 号–BV 号转换程序增加了!,该文用两种奇诡的编程语言实现转换。Scratch 有一定限制,如不支持异或,比较字符不区分大小写,因此 BV 转 AV 实际用全半角字符区分。源码在此。
Scratch 中即使变量也非一等公民。变量与过程即新建积木均依赖角色,甚至不可创建带返回值的函数。因此调用积木只是写入 返回
变量。
定义[A]异或[B]
将[返回]设为{0}
将[i]设为{1}
将[a]设为[A]
将[b]设为[B]
重复执行直到([a]={0})或([b]={0})
如果([[a]除以{2}的余数]=[[b]除以{2}的余数])
将[返回]增加[i]
将[i]增加[i]
将[a]设为[向下取整[[a]/{2}]]
将[b]设为[向下取整[[b]/{2}]]
将[返回]增加[[i]*[[a]+[b]]]
定义[张家庄]的第几个字符是[张]
将[i]设为{1}
将[返回]设为{0}
重复执行直到(([i]>[[张家庄]的字符数])或([返回]>{0}))
如果([[张家庄]的第[i]个字符]=[张])那么
将[返回]设为[i]
否则
将[i]增加[1]
定义[AV号]转BV号
删除[栈]的全部项目
[AV号]异或{177451812}
将[a]设为[返回]
将[返回]设为{BV}
将[i]设为{1}
重复执行{10}次
将[a]增加[连接[{0501111431}的第[i]个字符]和[{6537733013}的第[i]个字符]]
将[[a]除以{58}的余数]加入[栈]
将[a]设为[向下取整[[a]/{58}]]
将[i]增加{1}
将[i]设为{1}
重复执行{10}次
将[b]设为[{73596X4821}的第[i]个字符]
如果([b]={X})那么
将[b]设为{10}
将[返回]设为[连接[返回]和[{fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF}的第[{1}+[[栈]的第[b]项]]个字符]]
将[i]增加{1}
定义[BV号]转AV号
删除[栈]的全部项目
将[i]设为{1}
重复执行{10}次
将{0}加入[栈]
重复执行{10}次
将[b]设为[{73596X4821}的第[i]个字符]
如果([b]={X})那么
将[b]设为{10}
将[a]设为[i]
{fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF}的第几个字符是[[BV号]的第[i]个字符]
将[栈]的第[b]项替换为[[返回]-{1}]
将[i]设为[{1}+[a]]
将[返回]设为{0}
重复执行{10}次
将[i]增加{-1}
将[返回]设为[[{58}*[返回]]+[[[栈]的第[i]项]-[连接[{0501111431}的第[i]个字符]和[{6537733013}的第[i]个字符]]]
[返回]异或{177451812}
{170001}转BV号
思考[返回]{2}秒
{17x411w7KC}转AV号
思考[返回]{2}秒