wenyan

From Esolang
Jump to navigation Jump to search

wenyan (文言) is a language created by LingDong- in 2019. The language is Turing Complete. Wenyan-lang use classical Chinese as its source code. It currently has multiple backends including JavaScript, Python, and Ruby.

Code Samples

Hello World:

吾有一言。曰「「Hello World」」。書之。

99 bottles of beer simulator:

吾有一言。曰「「春日宴。」」。書之。
有數九。名之曰「酒數」。

恆為是。若「酒數」等於零者乃止也。

	吾有三言。曰「「與君」」。曰「酒數」。
		曰「「杯酒。可以窮歡宴。綠酒一杯歌一遍。」」。書之。

減「酒數」以一。昔之「酒數」者。今其是矣云云。

吾有一言。曰「「綠酒千杯腸已爛。」」。書之。

In English:

有數九九。名之曰「a」。
恆為是。
 若「a」小於三者乃止也。
 減「a」以一。
 有數一。名之曰「z」。昔之「z」者。今其是矣。
 吾有六言。
  曰「a」。
  曰「「bottles of beer on the wall,」」。
  曰「a」。
  曰「「bottles of beer.\nTake one down and pass it around,」」。
  曰「z」。
  曰「「bottles of beer on the wall.\n」」。
 書之。
 昔之「a」者。今「z」是矣
云云。
吾有一言。曰「「2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n\n1 bottle of beer on the wall, 1 bottle of beer.\nTake one down and pass it around, no more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.」」。書之。

This one print Fibonacci sequence from 1 to 10.

有數一。名之曰「代」。
有數零。名之曰「母」。
有數一。名之曰「子」。
有數零。名之曰「实」。

恆為是。若「代」大於十者乃止也。
    加「母」以「子」。昔之「实」者。今其是矣。
    夫「代」,夫「「代:」」,夫「实」,書之。
    昔之「子」者。今「母」是矣。
    昔之「母」者。今「实」是矣。
    加「代」以一。昔之「代」者。今其是矣。
云云。

Mandelbrot set code:

吾有一術。名之曰「曼德博」。欲行是術。必先得二數。曰「寬」。曰「高」。乃行是術曰。
	批曰。「「曼德博集。亦稱曼德布洛特复数集合。复平面上组成分形之点之集合也。」」

	吾有一言。曰「「丁龘蠹臺龜畫龍淼蔑高五三二」」。名之曰「皴法」。
	批曰。「「皴法者。圖畫之法也」」。

	減零以一。名之曰「上」。加零以一。名之曰「下」。
	減零以二。名之曰「左」。加零以二。名之曰「右」。

	減「右」以「左」。除其以「寬」。名之曰「橫步」。
	減「下」以「上」。除其以「高」。名之曰「縱步」。

	有數零。名之曰「戊」。恆為是。若「戊」等於「高」者乃止也。

		乘「縱步」以「戊」。加其以「上」。以名之曰「虛」。

		吾有一言。名之曰「行」。

		有數零。名之曰「戌」。恆為是。若「戌」等於「寬」者乃止也。

			乘「橫步」以「戌」。加其以「左」。名之曰「實」。

			夫「虛」。名之曰「虛虛」。
			夫「實」。名之曰「實實」。

			批曰。「「凡每一像素。皆算令其收斂之最大疊代數」」。

			有數零。名之曰「己」。恆為是。若「己」等於十二者乃止也。

				乘「實實」以「實實」。乘「虛虛」以「虛虛」。名之曰「甲」。曰「乙」。
				加「甲」以「乙」。名之曰「丙」。
				若「丙」大於四者乃止也。

				乘「虛虛」以「實實」。乘其以二。加其以「虛」。昔之「虛虛」者。今其是矣。
				減「甲」以「乙」。加其以「實」。昔之「實實」者。今其是矣。

			加一以「己」。昔之「己」者。今其是矣云云。

			批曰。「「既得疊代數。乃以皴法圖之」」。

			減十三以「己」。名之曰「巳」。
			夫「皴法」之「巳」。名之曰「墨」。
			加「行」以「墨」。昔之「行」者。今其是矣。

		加一以「戌」。昔之「戌」者。今其是矣云云。

		吾有一言。曰「行」。書之。
	加一以「戊」。昔之「戊」者。今其是矣云云。
是謂「曼德博」之術也。

批曰。「「畫曼德博集合之法。至是盡矣。乃一試之」」。

施「曼德博」於五十九。於二十四。

批曰。「「This programming language currently doesn't support standard input.」」。


Powers of 2:

有數一。名之曰「z」。
有數百。名之曰「a」。
恆為是。若「a」等於零者乃止也。
	減「a」以一。昔之「a」者。今其是矣。
	吾有一言。曰「z」。書之。
	乘「z」以二。昔之「z」者。今其是矣。
云云。

Quine (Shortest possible, I think):

吾有一術曰「String.fromCharCode」名之曰「e」吾有一言曰「「吾有一術曰!String.fromCharCode$名之曰!e$吾有一言曰!!@$$名之曰!a$施!(x=>x.replaceAll('!',e(12300)).replaceAll('$',e(12301)).replace('@',a))$於!a$書之」」名之曰「a」施「(x=>x.replaceAll('!',e(12300)).replaceAll('$',e(12301)).replace('@',a))」於「a」書之

The one given as example:

吾有一術。名之曰「自己複製」。欲行是術。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。曰星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。曰「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。

External resources