跳至正文
LNN的博客!

esolang

Esoteric programming language,简称Esolang,它们的设计被用于测试计算机语言设计的极限,作为一个概念的证明,或仅仅是一个玩笑。Esolang创作者[……]几乎不会在意语言的可用性,甚至恰恰相反,会故意增加使用难度。

——张凯强《文言文编程火了,可我完全学不懂》

我最喜欢的 esolang 有 brainfuck、Befunge-93 和文言。

外部链接

温馨提示:以下链接无特别注明的均为英文。

文言

Befunge-93

brainfuck

文章列表

编程 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("!"))
编程 esolang

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

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

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

编程 esolang

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

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

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

编程 esolang

重写的brainf 99bottles

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

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

编程 esolang

brainfuck二进制转十进制

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

编程 esolang

JvavScript

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

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

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

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

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

编程 esolang

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

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

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