跳至正文
LNN的博客!

编程

文章列表

编程 esolang

brainf 解释器,但它是一个 Python 表达式

(lambda cod, _, inp: (lambda *, _cp = 0, _mp = 0, _ip = 0, _mem = {}, _inp = inp
.encode(), _out = b"": next(__import__("sys").stdout.buffer.write(_out) and None
or None for _ in __import__("itertools").count() if not (_mem.__setitem__(_mp, (
(_mem[_mp] if _mp in _mem else 0) + (1 if cod[_cp] == "+" else -1 if cod[_cp] ==
"-" else 0)) & 255) and 0 or (_mp := _mp + (1 if cod[_cp] == ">" else -1 if cod[
_cp] == "<" else 0)) and 0 or ((_cp := (lambda si, *, _d = 0: next(i for i in (
range(si, len(cod)) if cod[si] == "[" else range(si, -1, -1)) if cod[i] in "[]"
and ((_d := _d + (1 if cod[i] == "[" else -1)) == 0)))(_cp)) if cod[_cp] in "[]"
and bool(_mem[_mp] if _mp in _mem else 0) == bool(cod[_cp] == "]") else 0) and 0
or ((_out := _out + bytes((_mem[_mp],))) if cod[_cp] == "." else _mem.__setitem__
(_mp, _inp[_ip]) and 0 or (_ip := _ip + 1) if cod[_cp] == "," and _ip < len(_inp)
else 0) and 0 or (_cp := _cp + 1) < len(cod))))())(*__import__("sys").stdin.read
().partition("!"))
编程 日常写代码

JavaScript,但是你可以用 new int[len] 来创建类型化数组

int* arr = new int[20];

🤔…

const array = new int[20]
console.log(array) // ==> Int32Array(20)
编程 esolang

文言标准输入语法糖《閱文秘術》使用例

前情提要:“文言”编程语言能读取标准输入了 | LNN的博客!

去年底(2021-12)我给文言写了个读取标准输入的库,名之曰“閱文秘術”,发布在“文淵閣”。有了这个库就可以用文言愉快地 scanf 了,再也不需要 require('fs').readFileSync("/dev/stdin").toString().trim().split(/\s+/g).map(parseInt)」。名之曰輸入 了。这里通过几道非常简单的题目演示一下“閱文秘術”的实际使用。我们使用文言的编译器将代码编译成 JavaScript 后在洛谷按 Node.js 提交。

编程 esolang

“文言”编程语言能读取标准输入了

前不久我给“文言”写了个扩展库,让它能够通过 Node.js 读取标准输入。现已被收入“文言”的包管理系统“文淵閣”

研究过这门深奥编程语言的朋友可能知道,“文言”中没有原生的办法来读取标准输入。我猜测这大概也是洛谷网不再支持这门语言的原因之一。

编程 日常写代码

给 Jekyll 博客添加评论区

近日我给这个博客添加了评论区。因为是使用 Github PagesJekyll 构建的静态网页博客,不方便实时地把评论添加到网站上。

给静态博客添加评论区的一个常见方法是使用 Disqus。这是一个博客评论平台,只需在自己的静态站上引用相应的脚本,就可以创建一个评论区。

编程 日常写代码

用自动脚本整理 Derpibooru 图集

我在 Derpibooru 做了一个图集“M6就要整整齐齐”,里面的图片都是每6张为一组。我今天写了一个自动脚本来给这个图集的图片整理排序。

Derpibooru 官方没有提供修改图集内图片顺序的 API;我通过浏览器开发者工具找到了这个 API。它的工作原理很迷,我没有看懂……废话,我不会 Elixir这是它的源代码

编程 esolang

重写的brainf 99bottles

前两天想起之前写的brainfuck 99bottles还有很大优化空间,就改进了一下。

比起之前的版本,这次的版本有效指令数更少,运行用时更短。这得利于在开始主循环开始前提前保存好一些字符串“常量”,而不是每次用到都重新计算一遍。

编程 日常写代码

再谈自产生程序

之前那篇关于自产生程序的博客表述不清,现决定重新讲解一下。

这里的“自产生程序”是指输出自身源代码的程序。自产生程序有几种不同的思路,而我使用的这种思路可以类比为……“噬菌体”。

我们知道,噬菌体是一种简单的病毒,它专门感染细菌,在结构上由蛋白质外壳和遗传物质(一般是DNA)组成。这些遗传物质记录了整个蛋白质外壳的内容,而在蛋白质外壳的帮助下,噬菌体才能去感染细菌,并生产出新的DNA和蛋白质外壳,从而繁殖出新的噬菌体。

编程 日常写代码 音乐

musicpy制作音符画

musicpy是国人写的一个不错的库,操作音符挺方便的,运算符重载很到位,只是IDE太寒碜了(×)(建议开发VSCode插件(

今天呢就用它解决了困扰了我一段时间的问题——按几何图形绘制音符画。之前尝试拿鼠标手动画每个音符,到最后就发现画得一点也不像。现在就可以用musicpy自动画出来。

编程 日常写代码

Richard写的文本加密算法

Richard在他的新作品中使用一种可逆的加密算法来把源代码中的文本加密成乱码。其实质很简单,类似于异或加密——把字符编码‌“最高的一个有效位”‌(即最高的一个1)以下的每一位都反转,如:

编程 日常写代码

实 验 室 制 取 锟 斤 拷

Ruby

encodeOpt = { :invalid => :replace, :undef => :replace }
str = "你好,世界!"
str.encode!('gbk', encodeOpt)
str.force_encoding('utf-8')
str.encode!('utf-8', encodeOpt)
str.force_encoding('gbk')
puts str.encode('utf-8', encodeOpt)
编程 日常写代码

很久以前写的诸个quine

原文写于2020年3月22日;C++实现写于28日


纯真灵魂的自产生程序

用不同语言写自产生程序,作为个人练习。太烧脑了

编程 esolang

brainfuck二进制转十进制

诶――朋友们好啊,我是普通的高中生DGCK81LNN。刚才有个朋友问我L老师发生甚么事了,我说怎么回事,给我发过来一……几张截图,我一看,嗷,原来是昨天,有一个同学,塔说,诶……我写了个程序,二进制转十进制:

编程 esolang

JvavScript

JvavScript是我提出的一个基于JavaScript的深奥编程语言,是JavaScript的一个子集,也是JSFuck的一个超集。JvavScript代码符合JavaScript表达式的语法,然而只能使用有限的几种字符:

( ) [ ] < > + - ! , = ? : _ $
编程 前端

鉴别浏览器ECMAScript版本

所谓ECMAScript(ES),就是JavaScript(JS)的核心部分:语法、基本原理、基本对象,负责核心的语言功能;而DOM(文档对象模型)提供了访问和操作网页内容的方法和接口,BOM(浏览器对象模型)提供了与浏览器交互的方法和接口,ES加上DOM和BOM就是JS。

今天写了个粗略鉴别ES版本的代码。

编程 esolang

禁止套深奥编程语言!用Befunge程序生成brainfuck代码

关于Befunge和brainfuck是什么我就不说了,Esolangs上有详细说明

今天随便写了这个Befunge程序,它可以生成一段会输出指定文字的brainfuck代码。

编程

可以运行的乱码JavaScript?)

console.log((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]); // "fail"

这就nm离谱

编程 esolang

奇怪的AV号-BV号转换程序增加了!

众所周知,哔哩哔哩已经把旧版视频番号AV号隐藏,只显示新版番号BV号,而这两种番号可以通过一个算法相互转换。

我用两种深奥编程语言,即娱乐性大于实用性的编程语言实现了番号转换,话不多说,直接上源码