From 840b7a5e9f75301eb502fd43fb132472f93e963b Mon Sep 17 00:00:00 2001 From: cuixiping Date: Tue, 31 Dec 2019 17:32:09 +0800 Subject: [PATCH 01/28] Auto generate examples README.md by nodejs. --- examples/README.md | 110 +++++++++++++--------------------- package.json | 1 + tools/examples_alias.js | 7 ++- tools/examples_links.js | 4 ++ tools/make_examples_readme.js | 61 +++++++++++++++++++ 5 files changed, 112 insertions(+), 71 deletions(-) create mode 100644 tools/examples_links.js create mode 100644 tools/make_examples_readme.js diff --git a/examples/README.md b/examples/README.md index 84989196..3fd17a63 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,72 +1,44 @@ - + # Examples(範例) -| File(文檔) | Remark(說明) | -| -------------------------- | ----------------------- | -| [beer.wy][3] | while | -| [collatz.wy][4] | 角谷猜想 | -| [collatz2.wy][5] | 考拉兹猜想(角谷猜想) | -| [divination.wy][6] | 春秋古筮法 | -| [eightqueens.wy][7] | 八皇后問題 | -| [euclidean.wy][8] | 歐幾里得法 | -| [factorial.wy][9] | 階乘 | -| [fibonacci.wy][10] | 斐波那契 | -| [fibonacci2.wy][11] | 斐氏列 | -| [fizzbuzz.wy][12] | [Fizz buzz][1] | -| [hanoi.wy][13] | 漢諾塔 | -| [helloworld.wy][14] | 問天地好在 | -| [helloworld+.wy][15] | 問天地好在+ | -| [import.wy][16] | 導入 | -| [mandelbrot.wy][17] | 曼德博集 | -| [mergesort.wy][18] | 歸併排序 | -| [misc.wy][19] | 雜項 | -| [modinv.wy][20] | 大衍求一術 | -| [multiplication_table.wy][21] | 乘算口訣 | -| [nested_fun.wy][22] | 函数 | -| [obj.wy][23] | 对象 | -| [pi_leibniz.wy][24] | 萊布尼茲圓周率估算 | -| [pi_liuhui.wy][25] | 劉徽割圓術求圓周率 | -| [quicksort.wy][26] | 快速排序 | -| [quicksort_inplace.wy][27] | 快速排序2 | -| [quine.wy][28] | [自產生程式][2] | -| [quine2.wy][29] | 自產生程式2 | -| [selectionsort.wy][30] | 選擇排序 | -| [sieve.wy][31] | 埃氏篩 | -| [sqrt_newton.wy][32] | 牛頓求根法 | -| [turing.wy][33] | 圖靈機 | -| [draw_heart.wy][34] | 畫心 | +| File(文檔) | Remark(說明) | +| -------------------------------------- | ------------------------- | +| [beer.wy](beer.wy) | 九十九瓶啤酒 | +| [collatz.wy](collatz.wy) | 考拉兹猜想 | +| [collatz2.wy](collatz2.wy) | 考拉兹猜想二 | +| [divination.wy](divination.wy) | 春秋古筮法 | +| [draw_heart.wy](draw_heart.wy) | 畫心 | +| [eightqueens.wy](eightqueens.wy) | 八皇后問題 | +| [euclidean.wy](euclidean.wy) | 歐幾里得法 | +| [factorial.wy](factorial.wy) | 階乘 | +| [fibonacci.wy](fibonacci.wy) | 斐氏列 | +| [fibonacci2.wy](fibonacci2.wy) | 斐氏列二 | +| [fizzbuzz.wy](fizzbuzz.wy) | [嘶嘶嗡嗡][1] | +| [hanoi.wy](hanoi.wy) | 漢諾塔 | +| [helloworld.wy](helloworld.wy) | 問天地好在 | +| [helloworld+.wy](helloworld+.wy) | 問天地好在+ | +| [import.wy](import.wy) | 導入示例 | +| [macro.wy](macro.wy) | 宏示例 | +| [mandelbrot.wy](mandelbrot.wy) | 曼德博集 | +| [mergesort.wy](mergesort.wy) | 歸併排序 | +| [misc.wy](misc.wy) | 雜項 | +| [modinv.wy](modinv.wy) | 大衍求一術 | +| [multiplication_table.wy](multiplication_table.wy) | 乘算口訣 | +| [nested_fun.wy](nested_fun.wy) | 嵌套調用示例 | +| [obj.wy](obj.wy) | 对象示例 | +| [pi_leibniz.wy](pi_leibniz.wy) | 萊布尼茲圓周率估算 | +| [pi_liuhui.wy](pi_liuhui.wy) | 劉徽割圓術求圓周率 | +| [quicksort.wy](quicksort.wy) | 快速排序 | +| [quicksort_inplace.wy](quicksort_inplace.wy) | 快速排序二 | +| [quine.wy](quine.wy) | [自產生程式][2] | +| [quine2.wy](quine2.wy) | 自產生程式二 | +| [selectionsort.wy](selectionsort.wy) | 選擇排序 | +| [sieve.wy](sieve.wy) | 埃氏篩 | +| [sqrt_newton.wy](sqrt_newton.wy) | 牛頓求根法 | +| [tree.wy](tree.wy) | 畫樹 | +| [tree2.wy](tree2.wy) | 畫樹二 | +| [try.wy](try.wy) | 異常處理示例 | +| [turing.wy](turing.wy) | 圖靈機 | -[1]: https://en.wikipedia.org/wiki/Fizz_buzz "Fizz buzz" -[2]: https://zh.wikipedia.org/wiki/自產生程式 "自產生程式" -[3]: beer.wy -[4]: collatz.wy -[5]: collatz2.wy -[6]: divination.wy -[7]: eightqueens.wy -[8]: euclidean.wy -[9]: factorial.wy -[10]: fibonacci.wy -[11]: fibonacci2.wy -[12]: fizzbuzz.wy -[13]: hanoi.wy -[14]: helloworld.wy -[15]: helloworld+.wy -[16]: import.wy -[17]: mandelbrot.wy -[18]: mergesort.wy -[19]: misc.wy -[20]: modinv.wy -[21]: multiplication_table.wy -[22]: nested_fun.wy -[23]: obj.wy -[24]: pi_leobniz.wy -[25]: pi_liuhui.wy -[26]: quicksort.wy -[27]: quicksort_inplace.wy -[28]: quine.wy -[29]: quine2.wy -[30]: selectionsort.wy -[31]: sieve.wy -[32]: sqrt_newton.wy -[33]: turing.wy -[34]: draw_heart.wy +[1]: https://en.wikipedia.org/wiki/Fizz_buzz +[2]: https://zh.wikipedia.org/wiki/自產生程式 diff --git a/package.json b/package.json index 1822b526..15b07367 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "publish:ci": "node ./tools/publish.js", "release": "bump --commit --tag && git push --follow-tags", "docs:update": "node ./tools/stdlib_doc.js", + "make_examples_readme": "node ./tools/make_examples_readme.js", "make_ide": "node ./tools/make_ide.js", "make_site": "node ./tools/make_site.js", "ide:dev": "nodemon --ignore build,dist ./tools/make_ide.js", diff --git a/tools/examples_alias.js b/tools/examples_alias.js index c0f385fc..ef50fdb9 100644 --- a/tools/examples_alias.js +++ b/tools/examples_alias.js @@ -3,6 +3,7 @@ module.exports = { collatz: "考拉兹猜想", collatz2: "考拉兹猜想二", divination: "春秋古筮法", + draw_heart: "畫心", eightqueens: "八皇后問題", euclidean: "歐幾里得法", factorial: "階乘", @@ -15,6 +16,7 @@ module.exports = { import: "導入示例", mandelbrot: "曼德博集", mergesort: "歸併排序", + macro: "宏示例", misc: "雜項", modinv: "大衍求一術", multiplication_table: "乘算口訣", @@ -30,6 +32,7 @@ module.exports = { sieve: "埃氏篩", sqrt_newton: "牛頓求根法", turing: "圖靈機", - try: "異常處理示例", - macro: "宏示例" + tree: "畫樹", + tree2: "畫樹二", + try: "異常處理示例" }; diff --git a/tools/examples_links.js b/tools/examples_links.js new file mode 100644 index 00000000..70751747 --- /dev/null +++ b/tools/examples_links.js @@ -0,0 +1,4 @@ +module.exports = { + fizzbuzz: "[1]: https://en.wikipedia.org/wiki/Fizz_buzz", + quine: "[2]: https://zh.wikipedia.org/wiki/自產生程式" +}; diff --git a/tools/make_examples_readme.js b/tools/make_examples_readme.js new file mode 100644 index 00000000..764fb615 --- /dev/null +++ b/tools/make_examples_readme.js @@ -0,0 +1,61 @@ +const fs = require("fs"); +const examplesAlias = require("./examples_alias"); +const examplesLinks = require("./examples_links"); + +const files = fs + .readdirSync(__dirname + "/../examples/") + .filter(x => x.endsWith(".wy")); +files.sort((a, b) => a.slice(0, -3).localeCompare(b.slice(0, -3))); + +const leftWidth = "--------------------------------------".length; +const rightWidth = "-------------------------".length; + +let content = ` +# Examples(範例) + +| File(文檔) | Remark(說明) | +| -------------------------------------- | ------------------------- | +`; + +function ansiLength(str) { + return str.length + str.replace(/[\x00-\xff]+/g, "").length; +} + +let links = []; + +for (let fname of files) { + let basename = fname.replace(/\.wy$/, ""); + let left = `[${fname}](${fname})`; + if (left.length < leftWidth) { + left = left.padEnd(leftWidth, " "); + } else { + left += " "; + } + let alias = examplesAlias[basename]; + let link = examplesLinks[basename]; + let linkTag = link && /^\[.+?\]:/.test(link) && link.match(/^\[.+?\]/)[0]; + let right = link ? `[${alias || basename}]${linkTag}` : alias || ""; + let rightLength = ansiLength(right); + let d = leftWidth + rightWidth - left.length - rightLength; + if (d >= 0) { + right += " ".repeat(d); + } else { + right += " "; + } + if (link) { + links.push(`${link}`); + } + content += `| ${left} | ${right} |` + "\n"; +} + +if (links.length) { + content += "\n"; + content += links.join("\n"); + content += "\n"; +} + +console.log(content); + +fs.writeFileSync(__dirname + "/../examples/README.md", content); + +console.log('"examples/README.md" updated'); From 564a14c221005836da023af7c89609cbe95f411d Mon Sep 17 00:00:00 2001 From: statementreply Date: Tue, 31 Dec 2019 22:12:06 +0800 Subject: [PATCH 02/28] Fix compiler crash with 0-argument macros --- src/macro.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/macro.js b/src/macro.js index 5576b1d8..531b5f38 100644 --- a/src/macro.js +++ b/src/macro.js @@ -82,9 +82,13 @@ function extractMacros(lang, txt, { lib, reader }) { var ins = s0.match(/「[甲乙丙丁戊己庚辛壬癸]」/g); var ous = s1.match(/「[甲乙丙丁戊己庚辛壬癸]」/g); - for (var k = 0; k < ous.length; k++) { - var ii = ins.indexOf(ous[k]); - s1 = s1.replace(new RegExp(ous[k], "g"), `\$${ii + 1}`); + if (ins !== null && ous !== null) { + for (var k = 0; k < ous.length; k++) { + var ii = ins.indexOf(ous[k]); + if (ii >= 0) { + s1 = s1.replace(new RegExp(ous[k], "g"), `\$${ii + 1}`); + } + } } s0 = s0.replace(/「[甲乙丙丁戊己庚辛壬癸]」/g, "(.*?)"); macs.push([s0, s1]); From 644fc9c0dcb2ffc40fa52a57c583d188736c267c Mon Sep 17 00:00:00 2001 From: Lingdong Huang Date: Tue, 31 Dec 2019 10:22:35 -0500 Subject: [PATCH 03/28] combine alias and link into info and fix english --- tools/examples_alias.js | 38 ------------------------------ tools/examples_info.js | 44 +++++++++++++++++++++++++++++++++++ tools/examples_links.js | 4 ---- tools/make_examples_readme.js | 5 ++-- tools/make_ide.js | 2 +- 5 files changed, 47 insertions(+), 46 deletions(-) delete mode 100644 tools/examples_alias.js create mode 100644 tools/examples_info.js delete mode 100644 tools/examples_links.js diff --git a/tools/examples_alias.js b/tools/examples_alias.js deleted file mode 100644 index ef50fdb9..00000000 --- a/tools/examples_alias.js +++ /dev/null @@ -1,38 +0,0 @@ -module.exports = { - beer: "九十九瓶啤酒", - collatz: "考拉兹猜想", - collatz2: "考拉兹猜想二", - divination: "春秋古筮法", - draw_heart: "畫心", - eightqueens: "八皇后問題", - euclidean: "歐幾里得法", - factorial: "階乘", - fibonacci: "斐氏列", - fibonacci2: "斐氏列二", - fizzbuzz: "嘶嘶嗡嗡", - hanoi: "漢諾塔", - helloworld: "問天地好在", - "helloworld+": "問天地好在+", - import: "導入示例", - mandelbrot: "曼德博集", - mergesort: "歸併排序", - macro: "宏示例", - misc: "雜項", - modinv: "大衍求一術", - multiplication_table: "乘算口訣", - nested_fun: "嵌套調用示例", - obj: "对象示例", - pi_leibniz: "萊布尼茲圓周率估算", - pi_liuhui: "劉徽割圓術求圓周率", - quicksort: "快速排序", - quicksort_inplace: "快速排序二", - quine: "自產生程式", - quine2: "自產生程式二", - selectionsort: "選擇排序", - sieve: "埃氏篩", - sqrt_newton: "牛頓求根法", - turing: "圖靈機", - tree: "畫樹", - tree2: "畫樹二", - try: "異常處理示例" -}; diff --git a/tools/examples_info.js b/tools/examples_info.js new file mode 100644 index 00000000..570f760c --- /dev/null +++ b/tools/examples_info.js @@ -0,0 +1,44 @@ +module.exports = { + examplesAlias: { + beer: "九十九瓶啤酒", + collatz: "考拉兹猜想", + collatz2: "考拉兹猜想二", + divination: "春秋古筮法", + draw_heart: "畫心", + eightqueens: "八皇后問題", + euclidean: "歐幾里得法", + factorial: "階乘", + fibonacci: "斐氏列", + fibonacci2: "斐氏列二", + fizzbuzz: "嘶嘶嗡嗡", + hanoi: "漢諾塔", + helloworld: "問天地好在", + "helloworld+": "問天地好在+", + import: "導入示例", + mandelbrot: "曼德博集", + mergesort: "歸併排序", + macro: "宏示例", + misc: "雜項", + modinv: "大衍求一術", + multiplication_table: "乘算口訣", + nested_fun: "嵌套調用示例", + obj: "对象示例", + pi_leibniz: "萊布尼茲圓周率估算", + pi_liuhui: "劉徽割圓術求圓周率", + quicksort: "快速排序", + quicksort_inplace: "快速排序二", + quine: "自產生程式", + quine2: "自產生程式二", + selectionsort: "選擇排序", + sieve: "埃氏篩", + sqrt_newton: "牛頓求根法", + turing: "圖靈機", + tree: "畫樹", + tree2: "畫樹二", + try: "異常處理示例" + }, + examplesLinks: { + fizzbuzz: "[1]: https://en.wikipedia.org/wiki/Fizz_buzz", + quine: "[2]: https://zh.wikipedia.org/wiki/自產生程式" + } +}; diff --git a/tools/examples_links.js b/tools/examples_links.js deleted file mode 100644 index 70751747..00000000 --- a/tools/examples_links.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - fizzbuzz: "[1]: https://en.wikipedia.org/wiki/Fizz_buzz", - quine: "[2]: https://zh.wikipedia.org/wiki/自產生程式" -}; diff --git a/tools/make_examples_readme.js b/tools/make_examples_readme.js index 764fb615..ce7964f7 100644 --- a/tools/make_examples_readme.js +++ b/tools/make_examples_readme.js @@ -1,6 +1,5 @@ const fs = require("fs"); -const examplesAlias = require("./examples_alias"); -const examplesLinks = require("./examples_links"); +const { examplesAlias, examplesLinks } = require("./examples_info"); const files = fs .readdirSync(__dirname + "/../examples/") @@ -10,7 +9,7 @@ files.sort((a, b) => a.slice(0, -3).localeCompare(b.slice(0, -3))); const leftWidth = "--------------------------------------".length; const rightWidth = "-------------------------".length; -let content = ` +let content = ` # Examples(範例) | File(文檔) | Remark(說明) | diff --git a/tools/make_ide.js b/tools/make_ide.js index cebd710c..1a78c413 100644 --- a/tools/make_ide.js +++ b/tools/make_ide.js @@ -6,7 +6,7 @@ var fs = require("fs"); var execSync = require("child_process").execSync; var parser = require("../src/parser"); var utils = require("./utils"); -const examplesAlias = require("./examples_alias"); +const { examplesAlias } = require("./examples_info"); var files = fs.readdirSync("../examples/").filter(x => x.endsWith(".wy")); var prgms = {}; From 883a4b964ea3318a359046fc173b8b91bfabfdb6 Mon Sep 17 00:00:00 2001 From: Lingdong Huang Date: Tue, 31 Dec 2019 10:23:27 -0500 Subject: [PATCH 04/28] rebuild --- examples/README.md | 2 +- site/ide.html | 240 +++++++++++++++++++++++++-------------------- 2 files changed, 134 insertions(+), 108 deletions(-) diff --git a/examples/README.md b/examples/README.md index 3fd17a63..3a09aeec 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,4 +1,4 @@ - + # Examples(範例) | File(文檔) | Remark(說明) | diff --git a/site/ide.html b/site/ide.html index a8d4c1ad..59720549 100644 --- a/site/ide.html +++ b/site/ide.html @@ -12,62 +12,62 @@ + - + - - + @@ -68,4 +68,4 @@ function compile(targetLang: string, source: string, options?: CompilerOptions) | romanizeIdentifiers | none | Romanize variable identifiers (e.g. `甲` to `JIA2`) | | resetVarCnt | false | Reset temporary variable counter | | logCallback | console.log | Get verbose debug log | -| errorLog | process.exit | Error log | \ No newline at end of file +| errorLog | process.exit | Error log | From 4f9a166b4904f099308cebe4b8d0bc424bfaf153 Mon Sep 17 00:00:00 2001 From: Fros1er <34234343+Fros1er@users.noreply.github.com> Date: Wed, 1 Jan 2020 22:42:40 +0800 Subject: [PATCH 16/28] added function bool2hanzi --- src/hanzi2num.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hanzi2num.js b/src/hanzi2num.js index 7899bbc6..98f1ae35 100644 --- a/src/hanzi2num.js +++ b/src/hanzi2num.js @@ -849,6 +849,13 @@ function num2hanzi(n, format = "", precision = undefined) { return str; } +function bool2hanzi(b) { + if (b) { + return "陽"; + } + return "陰"; +} + try { - module.exports = { hanzi2num, hanzi2numstr, num2hanzi }; + module.exports = { hanzi2num, hanzi2numstr, num2hanzi, bool2hanzi }; } catch (e) {} From 5312f4db72648cbaad236858b0d086db4b86668b Mon Sep 17 00:00:00 2001 From: Fros1er <34234343+Fros1er@users.noreply.github.com> Date: Wed, 1 Jan 2020 22:45:46 +0800 Subject: [PATCH 17/28] Update parser.js --- src/parser.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/parser.js b/src/parser.js index 5a90a4b6..0f4d6d95 100644 --- a/src/parser.js +++ b/src/parser.js @@ -1,5 +1,5 @@ try { - var { hanzi2num, hanzi2numstr, num2hanzi } = require("./hanzi2num"); + var { hanzi2num, hanzi2numstr, num2hanzi, bool2hanzi } = require("./hanzi2num"); var hanzi2pinyin = require("./hanzi2pinyin"); var STDLIB = require("./stdlib"); var { NUMBER_KEYWORDS, KEYWORDS } = require("./keywords"); @@ -761,6 +761,7 @@ var parser = { hanzi2num, hanzi2numstr, num2hanzi, + bool2hanzi, hanzi2pinyin, KEYWORDS, NUMBER_KEYWORDS, From 2b0b73b467a150d51472eb0cf8751c3a23d7101c Mon Sep 17 00:00:00 2001 From: Fros1er <34234343+Fros1er@users.noreply.github.com> Date: Wed, 1 Jan 2020 22:48:36 +0800 Subject: [PATCH 18/28] Update make_site.js --- tools/make_site.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/make_site.js b/tools/make_site.js index c5f13257..3b6aae64 100644 --- a/tools/make_site.js +++ b/tools/make_site.js @@ -87,6 +87,8 @@ function main() { for (var i = 1; i < arguments.length; i++) { if (typeof arguments[i] == "number") { outdiv.innerText += num2hanzi(arguments[i]); + } else if (typeof arguments[i] == "boolean") { + outdiv.innerText += bool2hanzi(arguments[i]); } else { outdiv.innerText += arguments[i]; } From 2f3b05efbd8f8ae5d61d25e594938fa1f4c93b6c Mon Sep 17 00:00:00 2001 From: Fros1er <34234343+Fros1er@users.noreply.github.com> Date: Wed, 1 Jan 2020 22:49:09 +0800 Subject: [PATCH 19/28] Update make_ide.js --- tools/make_ide.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/make_ide.js b/tools/make_ide.js index 1a78c413..57485d07 100644 --- a/tools/make_ide.js +++ b/tools/make_ide.js @@ -166,6 +166,8 @@ function main() { for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] == "number") { outdiv.innerText += num2hanzi(arguments[i]); + } else if (typeof arguments[i] == "boolean") { + outdiv.innerText += bool2hanzi(arguments[i]); } else { outdiv.innerText += arguments[i]; } From 0e8b3d620942bc1ce5c406bb95db96ee2b111c49 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Thu, 2 Jan 2020 09:33:30 +0800 Subject: [PATCH 20/28] docs: add badges --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 0b6a5d6c..92f7264f 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ # 文言 wenyan-lang +[![npm](https://img.shields.io/npm/v/@wenyanlang/core)](https://www.npmjs.com/package/@wenyanlang/core) +[![build](https://img.shields.io/github/workflow/status/LingDong-/wenyan-lang/Build%20%26%20Test)](https://github.com/LingDong-/wenyan-lang/actions) + [http://wenyan-lang.lingdong.works](http://wenyan-lang.lingdong.works) English | [简体中文](./README.zh-Hans.md) | [繁体中文](./README.zh-Hant.md) From a01baf03b9336d87b11db7702b0e9e3521f8e6d4 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Thu, 2 Jan 2020 10:29:51 +0800 Subject: [PATCH 21/28] feat: execute API --- src/cli.js | 19 ++++++-------- src/parser.js | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 13 deletions(-) diff --git a/src/cli.js b/src/cli.js index 9ab9f138..2801d2fc 100644 --- a/src/cli.js +++ b/src/cli.js @@ -1,6 +1,6 @@ const fs = require("fs"); const version = require("./version"); -const { compile } = require("./parser"); +const { compile, evalCompiled } = require("./parser"); const { render, unrender } = require("./render"); const path = require("path"); const commander = require("commander"); @@ -38,6 +38,7 @@ program "--roman [method]", 'Romanize identifiers. The method can be "pinyin", "baxter" or "unicode"' ) + .option("--outputHanzi", "Convert output to hanzi", true) .option("--log ", "Save log to file") .option("--title ", "Override title in rendering") .helpOption("-h, --help", "Display help"); @@ -192,17 +193,11 @@ function exec() { ); process.exit(1); } - if (program.lang === "js") { - eval(getCompiled()); - } else if (program.lang === "py") { - var execSync = require("child_process").execSync; - fs.writeFileSync("tmp.py", out); - var ret = execSync( - "which python3; if [ $? == 0 ]; then python3 tmp.py; else python tmp.py; fi; rm tmp.py", - { encoding: "utf-8" } - ); - console.log(ret); - } + + evalCompiled(getCompiled(), { + outputHanzi: program.outputHanzi, + lang: program.lang + }); } function replscope() { diff --git a/src/parser.js b/src/parser.js index 0f4d6d95..cf4b6e33 100644 --- a/src/parser.js +++ b/src/parser.js @@ -1,5 +1,10 @@ try { - var { hanzi2num, hanzi2numstr, num2hanzi, bool2hanzi } = require("./hanzi2num"); + var { + hanzi2num, + hanzi2numstr, + num2hanzi, + bool2hanzi + } = require("./hanzi2num"); var hanzi2pinyin = require("./hanzi2pinyin"); var STDLIB = require("./stdlib"); var { NUMBER_KEYWORDS, KEYWORDS } = require("./keywords"); @@ -753,8 +758,69 @@ function compile( return targ; } +function isLangSupportedForEval(lang) { + if (lang !== "js") + throw new Error( + `Executing for target language "${lang}" is not supported in current environment` + ); + return true; +} + +function hanzinize(value) { + if (typeof value == "number") { + return num2hanzi(value); + } else if (typeof value == "boolean") { + return bool2hanzi(value); + } else if (Array.isArray(value)) { + return value.map(i => hanzinize(i)); + } else { + return value; + } +} + +function outputHanziWrapper(log) { + return function output(...args) { + log(...args.map(i => hanzinize(i))); + }; +} + +function evalCompiled(compiledCode, options = {}) { + const { outputHanzi = true, scoped = false, lang = "js" } = options; + + isLangSupportedForEval(lang); + + let code = compiledCode; + + (() => { + const _console_log = console.log; + if (outputHanzi) { + console.log = outputHanziWrapper(_console_log); + } + try { + if (!scoped && "window" in this) { + window.eval(code); + } else { + eval(code); + } + } catch (e) { + throw e; + } finally { + if (outputHanzi) console.log = _console_log; + } + })(); +} + +function execute(source, options = {}) { + const { lang = "js" } = options; + isLangSupportedForEval(lang); + const compiled = compile(options.lang, source, options); + evalCompiled(compiled, options); +} + var parser = { compile, + evalCompiled, + execute, version, wy2tokens, tokens2asc, From 98898a259a0ccea188f42e032c7c43bc1d95b4a3 Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 10:40:09 +0800 Subject: [PATCH 22/28] feat: make outputHanzi works for ide and site --- src/parser.js | 11 ++++++++--- tools/make_ide.js | 25 ++++++++----------------- tools/make_site.js | 35 ++++++----------------------------- 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/src/parser.js b/src/parser.js index cf4b6e33..fd761b03 100644 --- a/src/parser.js +++ b/src/parser.js @@ -772,7 +772,7 @@ function hanzinize(value) { } else if (typeof value == "boolean") { return bool2hanzi(value); } else if (Array.isArray(value)) { - return value.map(i => hanzinize(i)); + return value.map(i => hanzinize(i)).join("。"); } else { return value; } @@ -785,7 +785,12 @@ function outputHanziWrapper(log) { } function evalCompiled(compiledCode, options = {}) { - const { outputHanzi = true, scoped = false, lang = "js" } = options; + const { + outputHanzi = true, + scoped = false, + lang = "js", + output = console.log + } = options; isLangSupportedForEval(lang); @@ -794,7 +799,7 @@ function evalCompiled(compiledCode, options = {}) { (() => { const _console_log = console.log; if (outputHanzi) { - console.log = outputHanziWrapper(_console_log); + console.log = outputHanziWrapper(output); } try { if (!scoped && "window" in this) { diff --git a/tools/make_ide.js b/tools/make_ide.js index 57485d07..f210a541 100644 --- a/tools/make_ide.js +++ b/tools/make_ide.js @@ -136,6 +136,8 @@ function main() { selr.onchange = run; var hidestd = document.getElementById("hide-std"); + var outdiv = document.getElementById("out"); + hidestd.onchange = run; function run() { @@ -153,27 +155,16 @@ function main() { document.getElementById("js").innerText = js_beautify(showcode); hljs.highlightBlock(document.getElementById("js")); - code = code.replace(/console.log\(/g, `log2div(`); - eval(code); + + evalCompiled(code, { + output: (...args) => { + outdiv.innerText += args.join(" ") + "\n"; + } + }); } - // document.getElementById("in").append(ln); document.getElementById("in").append(ed); - document.getElementById("run").onclick = run; - function log2div() { - var outdiv = document.getElementById("out"); - for (var i = 0; i < arguments.length; i++) { - if (typeof arguments[i] == "number") { - outdiv.innerText += num2hanzi(arguments[i]); - } else if (typeof arguments[i] == "boolean") { - outdiv.innerText += bool2hanzi(arguments[i]); - } else { - outdiv.innerText += arguments[i]; - } - } - outdiv.innerText += "\n"; - } run(); } diff --git a/tools/make_site.js b/tools/make_site.js index 3b6aae64..d91a0c05 100644 --- a/tools/make_site.js +++ b/tools/make_site.js @@ -25,7 +25,6 @@ function load_svg(pth) { svg = svg.replace(/(\d+)\.(\d)\d*/g, `$1.$2`); svg = svg.replace(/width=".+?"/, `width="100%"`); svg = svg.replace(/height=".+?"/, ``); - console.log(svg); return svg; } @@ -45,7 +44,7 @@ function main() { romanizeIdentifiers: "none", errorCallback: function(x) { hasError = true; - log2div(i, x); + louts[i].innerText = x; } }); if (i == 0) { @@ -64,36 +63,14 @@ function main() { document.getElementById("rb").innerText = "# Ruby\n" + rb.split("#####\n")[1]; } - // hljs.highlightBlock(document.getElementById("js")); - if (!hasError) { - code = code.replace(/console.log\(/g, `log2div(` + i + ","); - eval(code); - } - } - function log2div() { - // alert(arguments[1]) - if (arguments[1] instanceof Array && arguments.length == 2) { - var l = []; - for (var i = 0; i < arguments[1].length; i++) { - if (i != 0) { - l.push("。"); + if (!hasError) { + evalCompiled(code, { + output: (...args) => { + outs[i].innerText += args.join(" ") + "\n"; } - l.push(arguments[1][i]); - } - return log2div(arguments[0], ...l); - } - var outdiv = outs[arguments[0]]; - for (var i = 1; i < arguments.length; i++) { - if (typeof arguments[i] == "number") { - outdiv.innerText += num2hanzi(arguments[i]); - } else if (typeof arguments[i] == "boolean") { - outdiv.innerText += bool2hanzi(arguments[i]); - } else { - outdiv.innerText += arguments[i]; - } + }); } - outdiv.innerText += "\n"; } function loop() { From dc7a43c2895f3e1e2193d10c817290b18874ccc2 Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 10:45:07 +0800 Subject: [PATCH 23/28] feat: works for runtime --- src/browser_runtime.js | 20 +++++--------------- src/parser.js | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/browser_runtime.js b/src/browser_runtime.js index 0aad4855..98fc0f9c 100644 --- a/src/browser_runtime.js +++ b/src/browser_runtime.js @@ -1,32 +1,22 @@ /* wenyan-catsrc-ignore */ (() => { - const { compile } = require("./parser"); + const { execute } = require("./parser"); const isDev = false; async function run(script) { const scoped = !!script.attributes.scoped; + let code = script.innerText; if (script.src) { const response = await fetch(script.src); - const code = await response.text(); - await exec(code.toString(), scoped); - } else { - await exec(script.innerText, scoped); + code = (await response.text()).toString(); } - } - - async function exec(code, scoped = false) { - let compiled = compile("js", code, { + execute(code, { + scoped, logCallback: isDev ? console.log : () => {}, resetVarCnt: false }); - - // wrap for scoped scripts that won't expose any variables to global - if (scoped) compiled = `(()=>{${compiled}})()`; - - // executing - window.eval(compiled); } document.addEventListener("DOMContentLoaded", async () => { diff --git a/src/parser.js b/src/parser.js index fd761b03..4044ac58 100644 --- a/src/parser.js +++ b/src/parser.js @@ -818,7 +818,7 @@ function evalCompiled(compiledCode, options = {}) { function execute(source, options = {}) { const { lang = "js" } = options; isLangSupportedForEval(lang); - const compiled = compile(options.lang, source, options); + const compiled = compile(lang, source, options); evalCompiled(compiled, options); } From 3fac775134875681afe97aa929a9914dc6fc391f Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 11:07:54 +0800 Subject: [PATCH 24/28] feat: make unit test works --- src/parser.js | 10 +- src/stdlib.js | 6 +- .../examples.test.js.mocha-snapshot | 311 ++++-------------- test/examples.test.js | 41 ++- tools/utils.js | 12 +- 5 files changed, 96 insertions(+), 284 deletions(-) diff --git a/src/parser.js b/src/parser.js index 4044ac58..1310d502 100644 --- a/src/parser.js +++ b/src/parser.js @@ -653,10 +653,8 @@ function defaultReader(x) { } } -function compile( - lang, - txt, - { +function compile(lang, txt, options = {}) { + const { romanizeIdentifiers = "none", resetVarCnt, logCallback = x => @@ -666,8 +664,8 @@ function compile( errorCallback = process.exit, lib = typeof STDLIB == "undefined" ? {} : STDLIB, reader = defaultReader - } = {} -) { + } = options; + if (resetVarCnt) idenMap = {}; txt = (txt || "").replace(/\r\n/g, "\n"); diff --git a/src/stdlib.js b/src/stdlib.js index 48c71e4b..59340d83 100644 --- a/src/stdlib.js +++ b/src/stdlib.js @@ -1,3 +1,5 @@ +const STDLIB = {}; + try { function loadStdlib() { const STDLIB = {}; @@ -17,6 +19,6 @@ try { return STDLIB; } - - module.exports = loadStdlib(); + STDLIB = loadStdlib(); + module.exports = STDLIB; } catch (e) {} diff --git a/test/__snapshots__/examples.test.js.mocha-snapshot b/test/__snapshots__/examples.test.js.mocha-snapshot index 5dbb5b6a..19806b86 100644 --- a/test/__snapshots__/examples.test.js.mocha-snapshot +++ b/test/__snapshots__/examples.test.js.mocha-snapshot @@ -1,270 +1,80 @@ -exports["examples/js/beer(0)"] = "var _ans1=\"春日宴。\";console.log(_ans1);var 酒數=9;while (true){if (酒數==0){break;};var _ans2=\"與君\";var _ans3=酒數;var _ans4=\"杯酒。可以窮歡宴。綠酒一杯歌一遍。\";console.log(_ans2,_ans3,_ans4);var _ans5=酒數-1;酒數=_ans5;};var _ans6=\"綠酒千杯腸已爛。\";console.log(_ans6);"; +exports["examples/javascript/beer(0)"] = "春日宴。\n與君 九 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 八 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 七 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 六 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 五 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 四 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 三 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 二 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 一 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n綠酒千杯腸已爛。\n"; -exports["examples/js/collatz(0)"] = "var 角谷猜想=()=>0;角谷猜想=function(甲){var 助手=()=>0;助手=function(乙){var _ans7=乙%2;var 積=_ans7;if (積!=0){var _ans8=3*乙;var 埃=_ans8;var _ans9=1+埃;var 埃=_ans9;}else{var _ans10=乙/2;var 埃=_ans10;};return 埃};var 回=[];回.push(甲);while (true){if (甲==1){break;};var _ans11=助手(甲);甲=_ans11;回.push(甲);};回.push(1);return 回};var _ans12=角谷猜想(12);console.log(_ans12);var _ans13=角谷猜想(19);console.log(_ans13);var _ans14=角谷猜想(27);console.log(_ans14);"; +exports["examples/javascript/collatz(0)"] = "一十二。六。三。一十。五。一十六。八。四。二。一。一\n一十九。五十八。二十九。八十八。四十四。二十二。一十一。三十四。一十七。五十二。二十六。一十三。四十。二十。一十。五。一十六。八。四。二。一。一\n二十七。八十二。四十一。一百二十四。六十二。三十一。九十四。四十七。一百四十二。七十一。二百一十四。一百零七。三百二十二。一百六十一。四百八十四。二百四十二。一百二十一。三百六十四。一百八十二。九十一。二百七十四。一百三十七。四百一十二。二百零六。一百零三。三百一十。一百五十五。四百六十六。二百三十三。七百。三百五十。一百七十五。五百二十六。二百六十三。七百九十。三百九十五。一千一百八十六。五百九十三。一千七百八十。八百九十。四百四十五。一千三百三十六。六百六十八。三百三十四。一百六十七。五百零二。二百五十一。七百五十四。三百七十七。一千一百三十二。五百六十六。二百八十三。八百五十。四百二十五。一千二百七十六。六百三十八。三百一十九。九百五十八。四百七十九。一千四百三十八。七百一十九。二千一百五十八。一千零七十九。三千二百三十八。一千六百一十九。四千八百五十八。二千四百二十九。七千二百八十八。三千六百四十四。一千八百二十二。九百一十一。二千七百三十四。一千三百六十七。四千一百零二。二千零五十一。六千一百五十四。三千零七十七。九千二百三十二。四千六百一十六。二千三百零八。一千一百五十四。五百七十七。一千七百三十二。八百六十六。四百三十三。一千三百。六百五十。三百二十五。九百七十六。四百八十八。二百四十四。一百二十二。六十一。一百八十四。九十二。四十六。二十三。七十。三十五。一百零六。五十三。一百六十。八十。四十。二十。一十。五。一十六。八。四。二。一。一\n"; -exports["examples/js/collatz2(0)"] = "var 考拉茲=()=>0;考拉茲=function(甲){var 總=0;for (var _rand1=0;_rand1<9999;_rand1++){if (甲==1){return 總}else{var _ans15=甲%2;var 丙=_ans15;if (丙==0){var _ans16=甲/2;var 半=_ans16;甲=半;}else{var _ans17=甲*3;var 丁=_ans17;var _ans18=丁+1;var 戊=_ans18;甲=戊;};var _ans19=總+1;var 己=_ans19;總=己;};};};var _ans20=考拉茲(18);console.log(_ans20);var _ans21=考拉茲(123);console.log(_ans21);var _ans22=考拉茲(978);console.log(_ans22);var _ans23=考拉茲(6);console.log(_ans23);"; +exports["examples/javascript/collatz2(0)"] = "二十\n四十六\n四十九\n八\n"; -exports["examples/js/divination(0)"] = "var 听天由命=()=>0;听天由命=function(a){return Math.floor(Math.random()*a);\n};var 春秋古筮法=()=>0;春秋古筮法=function(现余策){var 左余策=0;var 左剩策=0;var 右余策=0;var 右剩策=0;var _ans24=现余策-1;var 现余策=_ans24;/*-*/现余策=_ans24;var _ans25=听天由命(现余策);左余策=_ans25;var _ans26=现余策+1;现余策=_ans26;var _ans27=左余策+1;左余策=_ans27;var _ans28=现余策-左余策;右余策=_ans28;/*\"分而为二以象两\"*/var _ans29=左余策%4;/*\"揲之以四象四时\"*/左剩策=_ans29;if (左剩策==0){左剩策=4;};var _ans30=右余策%4;右剩策=_ans30;if (右剩策==0){右剩策=4;};var _ans31=现余策-左剩策;现余策=_ans31;var _ans32=现余策-右剩策;现余策=_ans32;return 现余策};var 爻基=[];var 甲=6;while (true){if (甲==0){break;};var 余策=50;/*\"大衍之数五十\"*/var _ans33=余策-1;余策=_ans33;/*\"其用四十有九\"*/for (var _rand2=0;_rand2<3;_rand2++){/*\"三变成一爻\"*/var _ans34=春秋古筮法(余策);余策=_ans34;};爻基.push(余策);var _ans35=甲-1;甲=_ans35;};甲=6;var 判據=0;while (true){if (甲==0){break;};var _ans36=爻基[甲-1];var _ans37=_ans36/4;var _ans38=_ans37%2;判據=_ans38;if (判據==0){var _ans39=\"-- --\";console.log(_ans39);}else{var _ans40=\"-----\";console.log(_ans40);};var _ans41=甲-1;甲=_ans41;};"; +exports["examples/javascript/eightqueens(0)"] = "一。五。八。六。三。七。二。四\n一。六。八。三。七。四。二。五\n一。七。四。六。八。二。五。三\n一。七。五。八。二。四。六。三\n二。四。六。八。三。一。七。五\n二。五。七。一。三。八。六。四\n二。五。七。四。一。八。六。三\n二。六。一。七。四。八。三。五\n二。六。八。三。一。四。七。五\n二。七。三。六。八。五。一。四\n二。七。五。八。一。四。六。三\n二。八。六。一。三。五。七。四\n三。一。七。五。八。二。四。六\n三。五。二。八。一。七。四。六\n三。五。二。八。六。四。七。一\n三。五。七。一。四。二。八。六\n三。五。八。四。一。七。二。六\n三。六。二。五。八。一。七。四\n三。六。二。七。一。四。八。五\n三。六。二。七。五。一。八。四\n三。六。四。一。八。五。七。二\n三。六。四。二。八。五。七。一\n三。六。八。一。四。七。五。二\n三。六。八。一。五。七。二。四\n三。六。八。二。四。一。七。五\n三。七。二。八。五。一。四。六\n三。七。二。八。六。四。一。五\n三。八。四。七。一。六。二。五\n四。一。五。八。二。七。三。六\n四。一。五。八。六。三。七。二\n四。二。五。八。六。一。三。七\n四。二。七。三。六。八。一。五\n四。二。七。三。六。八。五。一\n四。二。七。五。一。八。六。三\n四。二。八。五。七。一。三。六\n四。二。八。六。一。三。五。七\n四。六。一。五。二。八。三。七\n四。六。八。二。七。一。三。五\n四。六。八。三。一。七。五。二\n四。七。一。八。五。二。六。三\n四。七。三。八。二。五。一。六\n四。七。五。二。六。一。三。八\n四。七。五。三。一。六。八。二\n四。八。一。三。六。二。七。五\n四。八。一。五。七。二。六。三\n四。八。五。三。一。七。二。六\n五。一。四。六。八。二。七。三\n五。一。八。四。二。七。三。六\n五。一。八。六。三。七。二。四\n五。二。四。六。八。三。一。七\n五。二。四。七。三。八。六。一\n五。二。六。一。七。四。八。三\n五。二。八。一。四。七。三。六\n五。三。一。六。八。二。四。七\n五。三。一。七。二。八。六。四\n五。三。八。四。七。一。六。二\n五。七。一。三。八。六。四。二\n五。七。一。四。二。八。六。三\n五。七。二。四。八。一。三。六\n五。七。二。六。三。一。四。八\n五。七。二。六。三。一。八。四\n五。七。四。一。三。八。六。二\n五。八。四。一。三。六。二。七\n五。八。四。一。七。二。六。三\n六。一。五。二。八。三。七。四\n六。二。七。一。三。五。八。四\n六。二。七。一。四。八。五。三\n六。三。一。七。五。八。二。四\n六。三。一。八。四。二。七。五\n六。三。一。八。五。二。四。七\n六。三。五。七。一。四。二。八\n六。三。五。八。一。四。二。七\n六。三。七。二。四。八。一。五\n六。三。七。二。八。五。一。四\n六。三。七。四。一。八。二。五\n六。四。一。五。八。二。七。三\n六。四。二。八。五。七。一。三\n六。四。七。一。三。五。二。八\n六。四。七。一。八。二。五。三\n六。八。二。四。一。七。五。三\n七。一。三。八。六。四。二。五\n七。二。四。一。八。五。三。六\n七。二。六。三。一。四。八。五\n七。三。一。六。八。五。二。四\n七。三。八。二。五。一。六。四\n七。四。二。五。八。一。三。六\n七。四。二。八。六。一。三。五\n七。五。三。一。六。八。二。四\n八。二。四。一。七。五。三。六\n八。二。五。三。一。七。四。六\n八。三。一。六。二。五。七。四\n八。四。一。三。六。二。七。五\n"; -exports["examples/js/euclidean(0)"] = "var 歐幾里得法=()=>0;歐幾里得法=function(甲,乙){var 回=0;if (乙==0){return 甲}else{var 削除=0;var _ans42=甲%乙;削除=_ans42;var _ans43=歐幾里得法(乙,削除);回=_ans43;};return 回};var 互質=()=>0;互質=function(甲,乙){var 回=0;var _ans44=歐幾里得法(甲,乙);回=_ans44;if (回==1){return true}else{return false};};var 歐拉餘數=()=>0;歐拉餘數=function(甲){/*非最優解矣。吾算術及數論廢也*/var 埃=2;var 積=1;/*\"畸\"*/while (true){if (甲<=埃){break;};var 回=false;var _ans45=互質(甲,埃);回=_ans45;if (回){var _ans46=積+1;var 積=_ans46;};var _ans47=埃+1;var 埃=_ans47;};return 積};var _ans48=歐幾里得法(1071,462);console.log(_ans48);var _ans49=歐幾里得法(123,4);console.log(_ans49);var _ans50=互質(123,4);console.log(_ans50);var _ans51=互質(4,2);console.log(_ans51);var _ans52=歐拉餘數(2);console.log(_ans52);var _ans53=歐拉餘數(12);console.log(_ans53);var _ans54=歐拉餘數(13);console.log(_ans54);var _ans55=歐拉餘數(16);console.log(_ans55);var _ans56=歐拉餘數(255);console.log(_ans56);"; +exports["examples/javascript/euclidean(0)"] = "二十一\n一\n陽\n陰\n一\n四\n一十二\n八\n一百二十八\n"; -exports["examples/js/factorial(0)"] = "var 階乘=()=>0;階乘=function(甲){if (甲==1){return 甲}else{var _ans57=甲-1;var 乙=_ans57;var _ans58=階乘(乙);var 丙=_ans58;var _ans59=丙*甲;var 丁=_ans59;return 丁};};var _ans60=階乘(5);console.log(_ans60);"; +exports["examples/javascript/factorial(0)"] = "一百二十\n"; -exports["examples/js/fibonacci(0)"] = "var 斐波那契=()=>0;斐波那契=function(甲){if (甲==0){return 0};if (甲==1){return 1};var _ans61=甲-1;var _ans62=甲-2;var 乙=_ans61;var 丙=_ans62;var _ans63=斐波那契(乙);var 丁=_ans63;var _ans64=斐波那契(丙);var 戊=_ans64;var _ans65=丁+戊;var 己=_ans65;return 己};var _ans66=斐波那契(12);console.log(_ans66);"; +exports["examples/javascript/fibonacci(0)"] = "一百四十四\n"; -exports["examples/js/fibonacci2(0)"] = "var 斐氏列=()=>0;斐氏列=function(因){var 頭=0;var 尾=1;var 計=1;var 果=0;if (因==0){果=因;};if (因==1){果=因;};while (true){if (計>=因){break;};var _ans67=頭+尾;果=_ans67;頭=尾;尾=果;var _ans68=計+1;計=_ans68;};return 果};var _ans69=斐氏列(10);console.log(_ans69);"; +exports["examples/javascript/fibonacci2(0)"] = "五十五\n"; -exports["examples/js/fizzbuzz(0)"] = "var 戊=1;while (true){var _ans70=戊%3;var _ans71=!_ans70;var 三餘=_ans71;var _ans72=戊%5;var _ans73=!_ans72;var 五餘=_ans73;var _ans74=三餘||五餘;var _ans75=!_ans74;var 寂=_ans75;if (寂){var _ans76=戊;console.log(_ans76);}else{var 聲=\"\";if (三餘){var _ans77=聲+\"黃河流水鳴濺濺。\";聲=_ans77;};if (五餘){var _ans78=聲+\"燕山胡騎鳴啾啾。\";聲=_ans78;};var _ans79=聲;console.log(_ans79);};if (戊==100){break;};var _ans80=1+戊;戊=_ans80;};"; - -exports["examples/js/hanoi(0)"] = "var 漢諾塔=()=>0;漢諾塔=function(盤數,甲塔,乙塔,丙塔){if (盤數==0){var _ans81=[];return _ans81};var _ans82=盤數-1;盤數=_ans82;var _ans83=漢諾塔(盤數,甲塔,丙塔,乙塔);var 古=_ans83;var _ans84=漢諾塔(盤數,丙塔,乙塔,甲塔);var 後=_ans84;var 步=[];步.push(甲塔,乙塔);var 今=[];今.push(步);var _ans85=古.concat(今).concat(後);var 史=_ans85;return 史};var 畫塔法=()=>0;畫塔法=function(盤數,史){var 諸名=\"甲乙丙\";var 三塔=[];三塔.push(盤數,0,0);var 畫=()=>0;畫=function(){var 戌=1;while (true){if (戌>3){break;};var _ans86=三塔[戌-1];var 碟=_ans86;var _ans87=盤數-碟;var 柱=_ans87;var 行=\"\";for (var _rand3=0;_rand3<碟;_rand3++){var _ans88=行+\"盤\";行=_ans88;};for (var _rand4=0;_rand4<柱;_rand4++){var _ans89=行+\"一\";行=_ans89;};var _ans90=諸名[戌-1];var 名=_ans90;var _ans91=\"〔\";var _ans92=名;var _ans93=\"〕\";var _ans94=行;console.log(_ans91,_ans92,_ans93,_ans94);var _ans95=1+戌;戌=_ans95;};console.log();};for (var 步 of 史){var _ans96=畫();var _ans97=步[1-1];var 起=_ans97;var _ans98=步[2-1];var 訖=_ans98;var _ans99=三塔[起-1];var _ans100=_ans99-1;三塔[起-1]=_ans100;var _ans101=三塔[訖-1];var _ans102=_ans101+1;三塔[訖-1]=_ans102;console.log();};var _ans103=畫();var _ans104=\"畢\";console.log(_ans104);};var 盤數=4;var _ans105=漢諾塔(盤數,1,2,3);var 史=_ans105;var _ans106=畫塔法(盤數,史);"; - -exports["examples/js/helloworld+(0)"] = "var 甲=3;for (var _rand5=0;_rand5<甲;_rand5++){var _ans107=\"問天地好在。\";console.log(_ans107);};"; - -exports["examples/js/helloworld(0)"] = "var _ans108=\"問天地好在。\";console.log(_ans108);"; - -exports["examples/js/mandelbrot(0)"] = "var 曼德博=()=>0;曼德博=function(寬,高){/*\"曼德博集。亦稱曼德布洛特复数集合。复平面上组成分形之点之集合也。\"*/var 皴法=\"丁龘蠹臺龜畫龍淼蔑高五三二\";/*\"皴法者。圖畫之法也\"*/var _ans109=0-1;var 上=_ans109;var _ans110=0+1;var 下=_ans110;var _ans111=0-2;var 左=_ans111;var _ans112=0+2;var 右=_ans112;var _ans113=右-左;var _ans114=_ans113/寬;var 橫步=_ans114;var _ans115=下-上;var _ans116=_ans115/高;var 縱步=_ans116;var 戊=0;while (true){if (戊==高){break;};var _ans117=縱步*戊;var _ans118=_ans117+上;var 虛=_ans118;var 行=\"\";var 戌=0;while (true){if (戌==寬){break;};var _ans119=橫步*戌;var _ans120=_ans119+左;var 實=_ans120;var 虛虛=虛;var 實實=實;/*\"凡每一像素。皆算令其收斂之最大疊代數\"*/var 己=0;while (true){if (己==12){break;};var _ans121=實實*實實;var _ans122=虛虛*虛虛;var 甲=_ans121;var 乙=_ans122;var _ans123=甲+乙;var 丙=_ans123;if (丙>4){break;};var _ans124=虛虛*實實;var _ans125=_ans124*2;var _ans126=_ans125+虛;虛虛=_ans126;var _ans127=甲-乙;var _ans128=_ans127+實;實實=_ans128;var _ans129=1+己;己=_ans129;};/*\"既得疊代數。乃以皴法圖之\"*/var _ans130=13-己;var 巳=_ans130;var _ans131=皴法[巳-1];var 墨=_ans131;var _ans132=行+墨;行=_ans132;var _ans133=1+戌;戌=_ans133;};var _ans134=行;console.log(_ans134);var _ans135=1+戊;戊=_ans135;};};/*\"畫曼德博集合之法。至是盡矣。乃一試之\"*/var _ans136=曼德博(59,24);"; - -exports["examples/js/mergesort(0)"] = "var 歸併=()=>0;歸併=function(甲,乙){if (甲.length==0){return 乙};if (乙.length==0){return 甲};var 甲引=1;var 乙引=1;var 果=[];while (true){if (甲.length<甲引){break;};if (乙.length<乙引){break;};var _ans137=甲[甲引-1];var 甲一=_ans137;var _ans138=乙[乙引-1];var 乙一=_ans138;if (甲一<=乙一){果.push(甲一);var _ans139=甲引+1;var 甲引=_ans139;}else{果.push(乙一);var _ans140=乙引+1;var 乙引=_ans140;};};if (甲.length<甲引){while (true){if (乙.length<乙引){break;};var _ans141=乙[乙引-1];var 乙餘=_ans141;果.push(乙餘);var _ans142=乙引+1;var 乙引=_ans142;};return 果};if (乙.length<乙引){while (true){if (甲.length<甲引){break;};var _ans143=甲[甲引-1];var 甲餘=_ans143;果.push(甲餘);var _ans144=甲引+1;var 甲引=_ans144;};return 果};};var 並排=()=>0;並排=function(甲){if (甲.length<=1){return 甲};var _ans145=甲.length;var 甲長=_ans145;var _ans146=_ans145%2;var 甲餘=_ans146;var _ans147=甲長-甲餘;var _ans148=_ans147/2;var 甲中=_ans148;var 甲前=[];var 甲後=[];var 甲引=1;while (true){if (甲引>甲.length){break;};var _ans149=甲[甲引-1];var 甲一=_ans149;if (甲引<=甲中){甲前.push(甲一);}else{甲後.push(甲一);};var _ans150=甲引+1;var 甲引=_ans150;};var _ans151=並排(甲前);甲前=_ans151;var _ans152=並排(甲後);甲後=_ans152;var _ans153=歸併(甲前,甲後);var 果=_ans153;return 果};var 測排=[];測排.push(1,3,2,18,14);var _ans154=並排(測排);console.log(_ans154);"; - -exports["examples/js/misc(0)"] = "var _ans155=\"問天地好在。\";console.log(_ans155);var 甲=30;var _ans156=\"甲之數\";var _ans157=甲;var _ans158=\"也\";console.log(_ans156,_ans157,_ans158);/*\"文氣淋灕。字句切實\"*/var 天=true;var 地=false;var _ans159=天&&地;var _ans160=天||地;var _ans161=!天;var 人=_ans161;var _ans162=甲-1;var _ans163=甲+2;var 乙=_ans162;var 丙=_ans163;var 丁=[];丁.push(1,2,3,4);var 戊=1;while (true){if (戊==甲){break;};var _ans164=戊;console.log(_ans164);var _ans165=1+戊;戊=_ans165;};var 階乘=()=>0;階乘=function(甲){if (甲==1){return 甲}else{var _ans166=甲-1;var 乙=_ans166;var _ans167=階乘(乙);var 丙=_ans167;var _ans168=丙*甲;var 丁=_ans168;return 丁};};var 異或=()=>0;異或=function(甲,乙){if (甲==乙){return false}else{return true};};var 快排=()=>0;快排=function(甲){if (甲.length<=1){return 甲};var 首=[];var 頷=[];var 尾=[];var _ans169=甲[1-1];var 甲一=_ans169;頷.push(甲一);var _ans170=甲.slice(1);var 甲餘=_ans170;for (var 丁 of 甲餘){if (丁<甲一){首.push(丁);}else{尾.push(丁);};};var _ans171=快排(首);首=_ans171;var _ans172=快排(尾);尾=_ans172;var _ans173=首.concat(頷).concat(尾);var 乙=_ans173;return 乙};var 己=[];己.push(5,3,20,8,35,700);var _ans174=快排(己);console.log(_ans174);"; - -exports["examples/js/modinv(0)"] = "var 大衍求一=()=>0;大衍求一=function(奇數,定母){/*\"大衍求一術云︰置奇右上。定居右下。立天元一於左上。先以右上除右下。\n\t所得商數與左上一相生。入左下。然後乃以右行上下。以少除多。遞互除之。\n\t所得商數隨即遞互累乘。歸左行上下。須使右上末後奇一而止。乃驗左上所得。以為乘率。\"*/var 天元=1;右上=奇數;右下=定母;左上=天元;左下=0;while (true){if (右上==1){return 左上};var _ans175=右下%右上;var 餘數=_ans175;var _ans176=右下-餘數;var _ans177=_ans176/右上;var 商數=_ans177;var _ans178=商數*左上;var _ans179=左下+_ans178;左下=_ans179;右下=餘數;/*\"若右下等於零者。曰奇數與定母不互素。無乘率也。\"*/if (右下==0){return 0};var _ans180=右上-1;var _ans181=_ans180%右下;var _ans182=_ans181+1;var 餘數=_ans182;var _ans183=右上-餘數;var _ans184=_ans183/右下;var 商數=_ans184;var _ans185=商數*左下;var _ans186=左上+_ans185;左上=_ans186;右上=餘數;};};var _ans187=大衍求一(49,142857);var 乘率=_ans187;var _ans188=49*乘率;var _ans189=_ans188%142857;console.log(_ans189);"; - -exports["examples/js/pi_leibniz(0)"] = "var 萊布尼茲圓周率估算=()=>0;萊布尼茲圓周率估算=function(頂){var _ans190=0;var _ans191=0;var _ans192=0;var 埃=_ans190;var 積=_ans191;var 畸=_ans192;var 符=1;while (true){if (埃>頂){break;};var _ans193=埃*2;var 畸=_ans193;var _ans194=畸+1;var 畸=_ans194;var _ans195=符/畸;var 畸=_ans195;var _ans196=畸*4;var 畸=_ans196;var _ans197=積+畸;var 積=_ans197;var _ans198=符*-1;var 符=_ans198;var _ans199=埃+1;var 埃=_ans199;};return 積};var _ans200=萊布尼茲圓周率估算(10);console.log(_ans200);var _ans201=萊布尼茲圓周率估算(69);console.log(_ans201);var _ans202=萊布尼茲圓周率估算(420);console.log(_ans202);var _ans203=萊布尼茲圓周率估算(1337);console.log(_ans203);var _ans204=萊布尼茲圓周率估算(114514);console.log(_ans204);"; - -exports["examples/js/quicksort(0)"] = "var 快排=()=>0;快排=function(甲){if (甲.length<=1){return 甲};var 首=[];var 頷=[];var 尾=[];var _ans205=甲[1-1];var 甲一=_ans205;頷.push(甲一);var _ans206=甲.slice(1);var 甲餘=_ans206;for (var 丁 of 甲餘){if (丁<甲一){首.push(丁);}else{尾.push(丁);};};var _ans207=快排(首);首=_ans207;var _ans208=快排(尾);尾=_ans208;var _ans209=首.concat(頷).concat(尾);var 乙=_ans209;return 乙};var 己=[];己.push(5,3,20,8,35,700);var _ans210=快排(己);console.log(_ans210);"; - -exports["examples/js/quine(0)"] = "/*Reference: *//*https://qiita.com/amoO_O/items/5d0c4edfc99f64bea6fb\n*/var 自己複製=()=>0;自己複製=function(){var 置換=()=>0;置換=function(文字列,置換対象,置換先){var 返品=\"\";var 未来=2;var 実行条件=true;for (var 文字 of 文字列){if (実行条件){if (文字==\"星\"&&文字列[未来-1]==置換対象){文字=置換先;実行条件=false;};var _ans211=返品+文字;返品=_ans211;}else{実行条件=true;};var _ans212=未来+1;未来=_ans212;};return 返品};var 函数=String.fromCharCode;var _ans213=函数(12300);始=_ans213;var _ans214=函数(12301);終=_ans214;var _ans215=\"吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。\";var _ans216=\"\";var 原文=_ans215;var 結果=_ans216;var _ans217=置換(原文,\"甲\",始);結果=_ans217;var _ans218=置換(結果,\"乙\",終);結果=_ans218;var _ans219=置換(結果,\"丙\",原文);結果=_ans219;var _ans220=結果;console.log(_ans220);};var _ans221=自己複製();"; - -exports["examples/js/quine2(0)"] = "/*Reference: *//*https://qiita.com/amoO_O/items/5d0c4edfc99f64bea6fb\n*/var 自己複製=()=>0;自己複製=function(){var 置換=()=>0;置換=function(文字列,置換対象,置換先){var 返品=\"\";var 未来=2;var 実行条件=true;for (var 文字 of 文字列){if (実行条件){if (文字==\"星\"&&文字列[未来-1]==置換対象){var _ans222=返品+置換先;返品=_ans222;実行条件=false;}else{var _ans223=返品+文字;返品=_ans223;};}else{実行条件=true;};var _ans224=未来+1;未来=_ans224;};return 返品};var 函数=String.fromCharCode;var _ans225=函数(12300);始括弧=_ans225;var _ans226=函数(12301);終括弧=_ans226;var _ans227=函数(32);空白=_ans227;var _ans228=空白+空白;空白=_ans228;var _ans229=函数(10);改行=_ans229;var 原文=\"吾有一術。名之曰星甲自己複製星乙。星丁欲行是術。是術曰。星丁星丁吾有一術。名之曰星甲置換星乙。星丁欲行是術。必先得三數。星丁曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。星丁星丙吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。星丁星丙吾有一數。曰二。名之曰星甲未来星乙。星丁星丙吾有一數。曰陽。名之曰星甲実行条件星乙。星丁星丙凡星甲文字列星乙中之星甲文字星乙。星丁星丙星丙星丙若星甲実行条件星乙者。星丁星丙星丙星丙星丙若星甲文字星乙等於星甲星甲星星乙星乙星乙中無陰乎星甲文字列星乙之未来等於星甲置換対象星乙者。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲置換先星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙星丙昔之星甲実行条件星乙者。今陰是。星丁星丙星丙星丙星丙若非。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙也。星丁星丙星丙星丙若非。星丁星丙星丙星丙星丙昔之星甲実行条件星乙者。今陽是。星丁星丙星丙星丙也。星丁星丙星丙加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。星丁星丙云云。星丁星丙乃得星甲返品星乙。星丁是謂星甲置換星乙之術也。星丁星丁吾有一言。曰String.fromCharCode名之曰星甲函数星乙。星丁施星甲函数星乙於一萬二千三百。昔之星甲始括弧星乙者。今其是矣。星丁施星甲函数星乙於一萬二千三百零一。昔之星甲終括弧星乙者。今其是矣。星丁施星甲函数星乙於三十二。昔之星甲空白星乙者。今其是矣。星丁加星甲空白星乙以星甲空白星乙。昔之星甲空白星乙者。今其是矣。星丁施星甲函数星乙於十。昔之星甲改行星乙者。今其是矣。星丁吾有一言。曰星甲星甲星戊星乙星乙。名之曰星甲原文星乙。星丁吾有一言。曰星甲星甲星乙星乙。名之曰星甲結果星乙。星丁施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲空白星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丁星乙星乙。於星甲改行星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲戊星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。星丁吾有一言。曰星甲結果星乙。書之。星丁星丁是謂星甲自己複製星乙之術也。星丁施星甲自己複製星乙。\";var 結果=\"\";var _ans230=置換(原文,\"甲\",始括弧);結果=_ans230;var _ans231=置換(結果,\"乙\",終括弧);結果=_ans231;var _ans232=置換(結果,\"丙\",空白);結果=_ans232;var _ans233=置換(結果,\"丁\",改行);結果=_ans233;var _ans234=置換(結果,\"戊\",原文);結果=_ans234;var _ans235=結果;console.log(_ans235);};var _ans236=自己複製();"; - -exports["examples/js/sieve(0)"] = "var 埃氏篩=()=>0;埃氏篩=function(甲){var 掩=[];for (var _rand6=0;_rand6<甲;_rand6++){掩.push(true);};var _ans237=甲/2;var 甲半=_ans237;var 戊=2;while (true){if (戊==甲半){break;};var 戌=2;while (true){if (戌==甲半){break;};var _ans238=戊*戌;var 合=_ans238;if (合<=甲){掩[合-1]=false;}else{break;};var _ans239=1+戌;戌=_ans239;};var _ans240=1+戊;戊=_ans240;};var 諸素=[];var 戊=2;while (true){if (戊==掩.length){break;};var _ans241=掩[戊-1];var 素耶=_ans241;if (素耶){諸素.push(戊);};var _ans242=1+戊;戊=_ans242;};return 諸素};var _ans243=埃氏篩(100);console.log(_ans243);"; - -exports["examples/js/sqrt_newton(0)"] = "var 牛頓求根法=()=>0;牛頓求根法=function(試){var 甲=1;var 乙=1;for (var _rand7=0;_rand7<試;_rand7++){var _ans244=甲*甲;var 乙=_ans244;var _ans245=乙-2;var 乙=_ans245;var _ans246=甲*2;var 丙=_ans246;var _ans247=乙/丙;var 茂=_ans247;var _ans248=甲-茂;var 甲=_ans248;};return 甲};var _ans249=牛頓求根法(2);console.log(_ans249);var _ans250=牛頓求根法(3);console.log(_ans250);var _ans251=牛頓求根法(5);console.log(_ans251);var _ans252=牛頓求根法(7);console.log(_ans252);var _ans253=牛頓求根法(13);console.log(_ans253);var _ans254=牛頓求根法(131);console.log(_ans254);var _ans255=牛頓求根法(1013);console.log(_ans255);"; - -exports["examples/js/turing(0)"] = "var 圖靈機=()=>0;圖靈機=function(諸律,始態,終態){var 帶=[];帶.push(\"白\");var 針=1;var 左疆=1;var 右疆=1;var 態=始態;var 圖靈機畫法=()=>0;圖靈機畫法=function(){var 畫帶=\"\";var 筆=左疆;while (true){if (筆>右疆){break;};var _ans256=帶[筆-1];var 符=_ans256;if (針==筆){var _ans257=\"〔\"+符;var _ans258=_ans257+\"〕\";符=_ans258;}else{var _ans259=\"、\"+符;var _ans260=_ans259+\"、\";符=_ans260;};var _ans261=畫帶+符;畫帶=_ans261;var _ans262=1+筆;筆=_ans262;};var _ans263=態;var _ans264=\"《\";var _ans265=畫帶;var _ans266=\"》\";console.log(_ans263,_ans264,_ans265,_ans266);};var _ans267=圖靈機畫法();while (true){for (var 律 of 諸律){var _ans268=律[1-1];var 甲態=_ans268;var _ans269=律[2-1];var 讀符=_ans269;var _ans270=律[3-1];var 乙態=_ans270;var _ans271=律[4-1];var 畫符=_ans271;var _ans272=律[5-1];var 移=_ans272;if (態==甲態){if (帶[針-1]==讀符){帶[針-1]=畫符;態=乙態;if (移==\"左\"){var _ans273=針-1;針=_ans273;};if (移==\"右\"){var _ans274=針+1;針=_ans274;};break;};};};if (針<左疆){帶[針-1]=\"白\";左疆=針;};if (針>右疆){帶[針-1]=\"白\";右疆=針;};var _ans275=圖靈機畫法();if (態==終態){break;};};};var 製律=()=>0;製律=function(諸律,甲態,讀符,乙態,畫符,移){var 律=[];律.push(甲態,讀符,乙態,畫符,移);諸律.push(律);};var _ans276=\"營營河狸。止于樊。\";console.log(_ans276);var 諸律=[];var 陽符=\"墨\";var 陰符=\"白\";var _ans277=製律(諸律,\"甲\",陰符,\"乙\",陽符,\"右\");var _ans278=製律(諸律,\"甲\",陽符,\"丙\",陽符,\"左\");var _ans279=製律(諸律,\"乙\",陰符,\"甲\",陽符,\"左\");var _ans280=製律(諸律,\"乙\",陽符,\"乙\",陽符,\"右\");var _ans281=製律(諸律,\"丙\",陰符,\"乙\",陽符,\"左\");var _ans282=製律(諸律,\"丙\",陽符,\"樊\",陽符,\"中\");var _ans283=圖靈機(諸律,\"甲\",\"樊\");"; - -exports["examples/js/beer(1)"] = "春日宴。\n與君 9 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 8 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 7 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 6 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 5 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 4 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 3 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 2 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 1 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n綠酒千杯腸已爛。\n"; - -exports["examples/js/collatz(1)"] = "[ 12, 6, 3, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 27,\n 82,\n 41,\n 124,\n 62,\n 31,\n 94,\n 47,\n 142,\n 71,\n 214,\n 107,\n 322,\n 161,\n 484,\n 242,\n 121,\n 364,\n 182,\n 91,\n 274,\n 137,\n 412,\n 206,\n 103,\n 310,\n 155,\n 466,\n 233,\n 700,\n 350,\n 175,\n 526,\n 263,\n 790,\n 395,\n 1186,\n 593,\n 1780,\n 890,\n 445,\n 1336,\n 668,\n 334,\n 167,\n 502,\n 251,\n 754,\n 377,\n 1132,\n 566,\n 283,\n 850,\n 425,\n 1276,\n 638,\n 319,\n 958,\n 479,\n 1438,\n 719,\n 2158,\n 1079,\n 3238,\n 1619,\n 4858,\n 2429,\n 7288,\n 3644,\n 1822,\n 911,\n 2734,\n 1367,\n 4102,\n 2051,\n 6154,\n 3077,\n 9232,\n 4616,\n 2308,\n 1154,\n 577,\n 1732,\n 866,\n 433,\n 1300,\n 650,\n 325,\n 976,\n 488,\n 244,\n 122,\n 61,\n 184,\n 92,\n 46,\n 23,\n 70,\n 35,\n 106,\n ... 13 more items ]\n"; - -exports["examples/js/collatz2(1)"] = "20\n46\n49\n8\n"; - -exports["examples/js/divination(1)"] = "-----\n-----\n-----\n-----\n-----\n-----\n"; - -exports["examples/js/euclidean(1)"] = "21\n1\ntrue\nfalse\n1\n4\n12\n8\n128\n"; - -exports["examples/js/factorial(1)"] = "120\n"; - -exports["examples/js/fibonacci(1)"] = "144\n"; - -exports["examples/js/fibonacci2(1)"] = "55\n"; - -exports["examples/js/fizzbuzz(1)"] = "1\n2\n黃河流水鳴濺濺。\n4\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n7\n8\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n11\n黃河流水鳴濺濺。\n13\n14\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n16\n17\n黃河流水鳴濺濺。\n19\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n22\n23\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n26\n黃河流水鳴濺濺。\n28\n29\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n31\n32\n黃河流水鳴濺濺。\n34\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n37\n38\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n41\n黃河流水鳴濺濺。\n43\n44\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n46\n47\n黃河流水鳴濺濺。\n49\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n52\n53\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n56\n黃河流水鳴濺濺。\n58\n59\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n61\n62\n黃河流水鳴濺濺。\n64\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n67\n68\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n71\n黃河流水鳴濺濺。\n73\n74\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n76\n77\n黃河流水鳴濺濺。\n79\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n82\n83\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n86\n黃河流水鳴濺濺。\n88\n89\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n91\n92\n黃河流水鳴濺濺。\n94\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n97\n98\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n"; - -exports["examples/js/hanoi(1)"] = "〔 甲 〕 盤盤盤盤\n〔 乙 〕 一一一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤盤盤一\n〔 乙 〕 一一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤盤\n〔 丙 〕 一一一一\n\n畢\n"; - -exports["examples/js/helloworld+(1)"] = "問天地好在。\n問天地好在。\n問天地好在。\n"; - -exports["examples/js/helloworld(1)"] = "問天地好在。\n"; - -exports["examples/js/mandelbrot(1)"] = "二二二二三三三三五五五五五五五五五五五五高高高高蔑蔑淼龜龜蠹蔑高高高五五五三三三三三三三三三三三三三三三三三三三二二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘龍淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n"; - -exports["examples/js/mergesort(1)"] = "[ 1, 2, 3, 14, 18 ]\n"; - -exports["examples/js/misc(1)"] = "問天地好在。\n甲之數 30 也\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n[ 3, 5, 8, 20, 35, 700 ]\n"; - -exports["examples/js/modinv(1)"] = "1\n"; - -exports["examples/js/pi_leibniz(1)"] = "3.232315809405594\n3.127307667981234\n3.143967947151556\n3.1408452695387057\n3.141601386070187\n"; - -exports["examples/js/quicksort(1)"] = "[ 3, 5, 8, 20, 35, 700 ]\n"; - -exports["examples/js/quine(1)"] = "吾有一術。名之曰「自己複製」。欲行是術。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。\n"; - -exports["examples/js/quine2(1)"] = "吾有一術。名之曰「自己複製」。\n欲行是術。是術曰。\n\n吾有一術。名之曰「置換」。\n欲行是術。必先得三數。\n曰「文字列」。曰「置換対象」。曰「置換先」是術曰。\n 吾有一言。曰「「」」。名之曰「返品」。\n 吾有一數。曰二。名之曰「未来」。\n 吾有一數。曰陽。名之曰「実行条件」。\n 凡「文字列」中之「文字」。\n 若「実行条件」者。\n 若「文字」等於「「星」」」中無陰乎「文字列」之未来等於「置換対象」者。\n 加「返品」以「置換先」。昔之「返品」者。今其是矣。\n 昔之「実行条件」者。今陰是。\n 若非。\n 加「返品」以「文字」。昔之「返品」者。今其是矣。\n 也。\n 若非。\n 昔之「実行条件」者。今陽是。\n 也。\n 加「未来」以一。昔之「未来」者。今其是矣。\n 云云。\n 乃得「返品」。\n是謂「置換」之術也。\n\n吾有一言。曰String.fromCharCode名之曰「函数」。\n施「函数」於一萬二千三百。昔之「始括弧」者。今其是矣。\n施「函数」於一萬二千三百零一。昔之「終括弧」者。今其是矣。\n施「函数」於三十二。昔之「空白」者。今其是矣。\n加「空白」以「空白」。昔之「空白」者。今其是矣。\n施「函数」於十。昔之「改行」者。今其是矣。\n吾有一言。曰「「吾有一術。名之曰星甲自己複製星乙。星丁欲行是術。是術曰。星丁星丁吾有一術。名之曰星甲置換星乙。星丁欲行是術。必先得三數。星丁曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。星丁星丙吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。星丁星丙吾有一數。曰二。名之曰星甲未来星乙。星丁星丙吾有一數。曰陽。名之曰星甲実行条件星乙。星丁星丙凡星甲文字列星乙中之星甲文字星乙。星丁星丙星丙星丙若星甲実行条件星乙者。星丁星丙星丙星丙星丙若星甲文字星乙等於星甲星甲星星乙星乙星乙中無陰乎星甲文字列星乙之未来等於星甲置換対象星乙者。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲置換先星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙星丙昔之星甲実行条件星乙者。今陰是。星丁星丙星丙星丙星丙若非。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙也。星丁星丙星丙星丙若非。星丁星丙星丙星丙星丙昔之星甲実行条件星乙者。今陽是。星丁星丙星丙星丙也。星丁星丙星丙加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。星丁星丙云云。星丁星丙乃得星甲返品星乙。星丁是謂星甲置換星乙之術也。星丁星丁吾有一言。曰String.fromCharCode名之曰星甲函数星乙。星丁施星甲函数星乙於一萬二千三百。昔之星甲始括弧星乙者。今其是矣。星丁施星甲函数星乙於一萬二千三百零一。昔之星甲終括弧星乙者。今其是矣。星丁施星甲函数星乙於三十二。昔之星甲空白星乙者。今其是矣。星丁加星甲空白星乙以星甲空白星乙。昔之星甲空白星乙者。今其是矣。星丁施星甲函数星乙於十。昔之星甲改行星乙者。今其是矣。星丁吾有一言。曰星甲星甲星戊星乙星乙。名之曰星甲原文星乙。星丁吾有一言。曰星甲星甲星乙星乙。名之曰星甲結果星乙。星丁施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲空白星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丁星乙星乙。於星甲改行星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲戊星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。星丁吾有一言。曰星甲結果星乙。書之。星丁星丁是謂星甲自己複製星乙之術也。星丁施星甲自己複製星乙。」」。名之曰「原文」。\n吾有一言。曰「「」」。名之曰「結果」。\n施「置換」於「原文」。於「「甲」」。於「始括弧」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「乙」」。於「終括弧」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「丙」」。於「空白」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「丁」」。於「改行」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「戊」」。於「原文」。昔之「結果」者。今其是矣。\n吾有一言。曰「結果」。書之。\n\n是謂「自己複製」之術也。\n施「自己複製」。\n"; - -exports["examples/js/sieve(1)"] = "[ 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97 ]\n"; - -exports["examples/js/sqrt_newton(1)"] = "1.4166666666666667\n1.4142156862745099\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n"; - -exports["examples/js/turing(1)"] = "營營河狸。止于樊。\n甲 《 〔白〕 》\n乙 《 、墨、〔白〕 》\n甲 《 〔墨〕、墨、 》\n丙 《 〔白〕、墨、、墨、 》\n乙 《 〔白〕、墨、、墨、、墨、 》\n甲 《 〔白〕、墨、、墨、、墨、、墨、 》\n乙 《 、墨、〔墨〕、墨、、墨、、墨、 》\n乙 《 、墨、、墨、〔墨〕、墨、、墨、 》\n乙 《 、墨、、墨、、墨、〔墨〕、墨、 》\n乙 《 、墨、、墨、、墨、、墨、〔墨〕 》\n乙 《 、墨、、墨、、墨、、墨、、墨、〔白〕 》\n甲 《 、墨、、墨、、墨、、墨、〔墨〕、墨、 》\n丙 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n樊 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n"; - -exports["examples/javascript/beer(0)"] = "春日宴。\n與君 9 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 8 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 7 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 6 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 5 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 4 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 3 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 2 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 1 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n綠酒千杯腸已爛。\n"; - -exports["examples/javascript/beer(1)"] = "春日宴。\n與君 9 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 8 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 7 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 6 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 5 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 4 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 3 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 2 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 1 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n綠酒千杯腸已爛。\n"; - -exports["examples/javascript/collatz(0)"] = "[ 12, 6, 3, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 27,\n 82,\n 41,\n 124,\n 62,\n 31,\n 94,\n 47,\n 142,\n 71,\n 214,\n 107,\n 322,\n 161,\n 484,\n 242,\n 121,\n 364,\n 182,\n 91,\n 274,\n 137,\n 412,\n 206,\n 103,\n 310,\n 155,\n 466,\n 233,\n 700,\n 350,\n 175,\n 526,\n 263,\n 790,\n 395,\n 1186,\n 593,\n 1780,\n 890,\n 445,\n 1336,\n 668,\n 334,\n 167,\n 502,\n 251,\n 754,\n 377,\n 1132,\n 566,\n 283,\n 850,\n 425,\n 1276,\n 638,\n 319,\n 958,\n 479,\n 1438,\n 719,\n 2158,\n 1079,\n 3238,\n 1619,\n 4858,\n 2429,\n 7288,\n 3644,\n 1822,\n 911,\n 2734,\n 1367,\n 4102,\n 2051,\n 6154,\n 3077,\n 9232,\n 4616,\n 2308,\n 1154,\n 577,\n 1732,\n 866,\n 433,\n 1300,\n 650,\n 325,\n 976,\n 488,\n 244,\n 122,\n 61,\n 184,\n 92,\n 46,\n 23,\n 70,\n 35,\n 106,\n ... 13 more items ]\n"; - -exports["examples/javascript/collatz(1)"] = "[ 12, 6, 3, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 27,\n 82,\n 41,\n 124,\n 62,\n 31,\n 94,\n 47,\n 142,\n 71,\n 214,\n 107,\n 322,\n 161,\n 484,\n 242,\n 121,\n 364,\n 182,\n 91,\n 274,\n 137,\n 412,\n 206,\n 103,\n 310,\n 155,\n 466,\n 233,\n 700,\n 350,\n 175,\n 526,\n 263,\n 790,\n 395,\n 1186,\n 593,\n 1780,\n 890,\n 445,\n 1336,\n 668,\n 334,\n 167,\n 502,\n 251,\n 754,\n 377,\n 1132,\n 566,\n 283,\n 850,\n 425,\n 1276,\n 638,\n 319,\n 958,\n 479,\n 1438,\n 719,\n 2158,\n 1079,\n 3238,\n 1619,\n 4858,\n 2429,\n 7288,\n 3644,\n 1822,\n 911,\n 2734,\n 1367,\n 4102,\n 2051,\n 6154,\n 3077,\n 9232,\n 4616,\n 2308,\n 1154,\n 577,\n 1732,\n 866,\n 433,\n 1300,\n 650,\n 325,\n 976,\n 488,\n 244,\n 122,\n 61,\n 184,\n 92,\n 46,\n 23,\n 70,\n 35,\n 106,\n ... 13 more items ]\n"; - -exports["examples/javascript/collatz2(0)"] = "20\n46\n49\n8\n"; - -exports["examples/javascript/collatz2(1)"] = "20\n46\n49\n8\n"; - -exports["examples/javascript/divination(0)"] = "var 听天由命=()=>0;听天由命=function(a){return Math.floor(Math.random()*a);\n};var 春秋古筮法=()=>0;春秋古筮法=function(现余策){var 左余策=0;var 左剩策=0;var 右余策=0;var 右剩策=0;var _ans24=现余策-1;var 现余策=_ans24;/*-*/现余策=_ans24;var _ans25=听天由命(现余策);左余策=_ans25;var _ans26=现余策+1;现余策=_ans26;var _ans27=左余策+1;左余策=_ans27;var _ans28=现余策-左余策;右余策=_ans28;/*\"分而为二以象两\"*/var _ans29=左余策%4;/*\"揲之以四象四时\"*/左剩策=_ans29;if (左剩策==0){左剩策=4;};var _ans30=右余策%4;右剩策=_ans30;if (右剩策==0){右剩策=4;};var _ans31=现余策-左剩策;现余策=_ans31;var _ans32=现余策-右剩策;现余策=_ans32;return 现余策};var 爻基=[];var 甲=6;while (true){if (甲==0){break;};var 余策=50;/*\"大衍之数五十\"*/var _ans33=余策-1;余策=_ans33;/*\"其用四十有九\"*/for (var _rand2=0;_rand2<3;_rand2++){/*\"三变成一爻\"*/var _ans34=春秋古筮法(余策);余策=_ans34;};爻基.push(余策);var _ans35=甲-1;甲=_ans35;};甲=6;var 判據=0;while (true){if (甲==0){break;};var _ans36=爻基[甲-1];var _ans37=_ans36/4;var _ans38=_ans37%2;判據=_ans38;if (判據==0){var _ans39=\"-- --\";console.log(_ans39);}else{var _ans40=\"-----\";console.log(_ans40);};var _ans41=甲-1;甲=_ans41;};"; - -exports["examples/javascript/divination(1)"] = "-----\n-----\n-----\n-----\n-- --\n-- --\n"; - -exports["examples/javascript/euclidean(0)"] = "21\n1\ntrue\nfalse\n1\n4\n12\n8\n128\n"; - -exports["examples/javascript/euclidean(1)"] = "21\n1\ntrue\nfalse\n1\n4\n12\n8\n128\n"; - -exports["examples/javascript/factorial(0)"] = "120\n"; - -exports["examples/javascript/factorial(1)"] = "120\n"; - -exports["examples/javascript/fibonacci(0)"] = "144\n"; - -exports["examples/javascript/fibonacci(1)"] = "144\n"; - -exports["examples/javascript/fibonacci2(0)"] = "55\n"; - -exports["examples/javascript/fibonacci2(1)"] = "55\n"; - -exports["examples/javascript/fizzbuzz(0)"] = "1\n2\n黃河流水鳴濺濺。\n4\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n7\n8\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n11\n黃河流水鳴濺濺。\n13\n14\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n16\n17\n黃河流水鳴濺濺。\n19\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n22\n23\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n26\n黃河流水鳴濺濺。\n28\n29\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n31\n32\n黃河流水鳴濺濺。\n34\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n37\n38\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n41\n黃河流水鳴濺濺。\n43\n44\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n46\n47\n黃河流水鳴濺濺。\n49\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n52\n53\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n56\n黃河流水鳴濺濺。\n58\n59\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n61\n62\n黃河流水鳴濺濺。\n64\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n67\n68\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n71\n黃河流水鳴濺濺。\n73\n74\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n76\n77\n黃河流水鳴濺濺。\n79\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n82\n83\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n86\n黃河流水鳴濺濺。\n88\n89\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n91\n92\n黃河流水鳴濺濺。\n94\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n97\n98\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n"; - -exports["examples/javascript/fizzbuzz(1)"] = "1\n2\n黃河流水鳴濺濺。\n4\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n7\n8\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n11\n黃河流水鳴濺濺。\n13\n14\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n16\n17\n黃河流水鳴濺濺。\n19\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n22\n23\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n26\n黃河流水鳴濺濺。\n28\n29\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n31\n32\n黃河流水鳴濺濺。\n34\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n37\n38\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n41\n黃河流水鳴濺濺。\n43\n44\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n46\n47\n黃河流水鳴濺濺。\n49\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n52\n53\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n56\n黃河流水鳴濺濺。\n58\n59\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n61\n62\n黃河流水鳴濺濺。\n64\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n67\n68\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n71\n黃河流水鳴濺濺。\n73\n74\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n76\n77\n黃河流水鳴濺濺。\n79\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n82\n83\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n86\n黃河流水鳴濺濺。\n88\n89\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n91\n92\n黃河流水鳴濺濺。\n94\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n97\n98\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n"; +exports["examples/javascript/fizzbuzz(0)"] = "一\n二\n黃河流水鳴濺濺。\n四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n七\n八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n一十一\n黃河流水鳴濺濺。\n一十三\n一十四\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n一十六\n一十七\n黃河流水鳴濺濺。\n一十九\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n二十二\n二十三\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n二十六\n黃河流水鳴濺濺。\n二十八\n二十九\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n三十一\n三十二\n黃河流水鳴濺濺。\n三十四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n三十七\n三十八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n四十一\n黃河流水鳴濺濺。\n四十三\n四十四\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n四十六\n四十七\n黃河流水鳴濺濺。\n四十九\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n五十二\n五十三\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n五十六\n黃河流水鳴濺濺。\n五十八\n五十九\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n六十一\n六十二\n黃河流水鳴濺濺。\n六十四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n六十七\n六十八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n七十一\n黃河流水鳴濺濺。\n七十三\n七十四\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n七十六\n七十七\n黃河流水鳴濺濺。\n七十九\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n八十二\n八十三\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n八十六\n黃河流水鳴濺濺。\n八十八\n八十九\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n九十一\n九十二\n黃河流水鳴濺濺。\n九十四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n九十七\n九十八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n"; exports["examples/javascript/hanoi(0)"] = "〔 甲 〕 盤盤盤盤\n〔 乙 〕 一一一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤盤盤一\n〔 乙 〕 一一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤盤\n〔 丙 〕 一一一一\n\n畢\n"; -exports["examples/javascript/hanoi(1)"] = "〔 甲 〕 盤盤盤盤\n〔 乙 〕 一一一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤盤盤一\n〔 乙 〕 一一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤盤\n〔 丙 〕 一一一一\n\n畢\n"; - exports["examples/javascript/helloworld+(0)"] = "問天地好在。\n問天地好在。\n問天地好在。\n"; -exports["examples/javascript/helloworld+(1)"] = "問天地好在。\n問天地好在。\n問天地好在。\n"; - exports["examples/javascript/helloworld(0)"] = "問天地好在。\n"; -exports["examples/javascript/helloworld(1)"] = "問天地好在。\n"; - exports["examples/javascript/mandelbrot(0)"] = "二二二二三三三三五五五五五五五五五五五五高高高高蔑蔑淼龜龜蠹蔑高高高五五五三三三三三三三三三三三三三三三三三三三二二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘龍淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n"; -exports["examples/javascript/mandelbrot(1)"] = "二二二二三三三三五五五五五五五五五五五五高高高高蔑蔑淼龜龜蠹蔑高高高五五五三三三三三三三三三三三三三三三三三三三二二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘龍淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n"; - -exports["examples/javascript/mergesort(0)"] = "[ 1, 2, 3, 14, 18 ]\n"; - -exports["examples/javascript/mergesort(1)"] = "[ 1, 2, 3, 14, 18 ]\n"; +exports["examples/javascript/mergesort(0)"] = "一。二。三。一十四。一十八\n"; -exports["examples/javascript/misc(0)"] = "問天地好在。\n甲之數 30 也\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n[ 3, 5, 8, 20, 35, 700 ]\n"; +exports["examples/javascript/misc(0)"] = "問天地好在。\n甲之數 三十 也\n一\n二\n三\n四\n五\n六\n七\n八\n九\n一十\n一十一\n一十二\n一十三\n一十四\n一十五\n一十六\n一十七\n一十八\n一十九\n二十\n二十一\n二十二\n二十三\n二十四\n二十五\n二十六\n二十七\n二十八\n二十九\n三。五。八。二十。三十五。七百\n"; -exports["examples/javascript/misc(1)"] = "問天地好在。\n甲之數 30 也\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n[ 3, 5, 8, 20, 35, 700 ]\n"; +exports["examples/javascript/modinv(0)"] = "一\n"; -exports["examples/javascript/modinv(0)"] = "1\n"; +exports["examples/javascript/multiplication_table(0)"] = "一 一 得 一\n一 二 得 二\n二 二 得 四\n一 三 得 三\n二 三 得 六\n三 三 得 九\n一 四 得 四\n二 四 得 八\n三 四 一十二\n四 四 一十六\n一 五 得 五\n二 五 一十\n三 五 一十五\n四 五 二十\n五 五 二十五\n一 六 得 六\n二 六 一十二\n三 六 一十八\n四 六 二十四\n五 六 三十\n六 六 三十六\n一 七 得 七\n二 七 一十四\n三 七 二十一\n四 七 二十八\n五 七 三十五\n六 七 四十二\n七 七 四十九\n一 八 得 八\n二 八 一十六\n三 八 二十四\n四 八 三十二\n五 八 四十\n六 八 四十八\n七 八 五十六\n八 八 六十四\n一 九 得 九\n二 九 一十八\n三 九 二十七\n四 九 三十六\n五 九 四十五\n六 九 五十四\n七 九 六十三\n八 九 七十二\n九 九 八十一\n"; -exports["examples/javascript/modinv(1)"] = "1\n"; +exports["examples/javascript/nested_fun(0)"] = ""; -exports["examples/javascript/pi_leibniz(0)"] = "3.232315809405594\n3.127307667981234\n3.143967947151556\n3.1408452695387057\n3.141601386070187\n"; +exports["examples/javascript/obj(0)"] = "{\"丙\":\"某甲\",\"丁\":5}\n{\"丙\":\"某甲\"}\n"; -exports["examples/javascript/pi_leibniz(1)"] = "3.232315809405594\n3.127307667981234\n3.143967947151556\n3.1408452695387057\n3.141601386070187\n"; +exports["examples/javascript/pi_leibniz(0)"] = "三又二分三釐二毫三絲一忽五微八纖零九塵四埃零六漠\n三又一分二釐七毫三絲零七微六纖六沙七塵九埃八渺一漠\n三又一分四釐三毫九絲六忽七微九纖四沙七塵一埃五渺二漠\n三又一分四釐零八絲四忽五微二纖六沙九塵五埃三渺九漠\n三又一分四釐一毫六絲零一微三纖八沙六塵零七渺\n"; -exports["examples/javascript/quicksort(0)"] = "[ 3, 5, 8, 20, 35, 700 ]\n"; +exports["examples/javascript/quicksort(0)"] = "三。五。八。二十。三十五。七百\n"; -exports["examples/javascript/quicksort(1)"] = "[ 3, 5, 8, 20, 35, 700 ]\n"; +exports["examples/javascript/quicksort_inplace(0)"] = "陽 一。二。三。四。五\n"; exports["examples/javascript/quine(0)"] = "吾有一術。名之曰「自己複製」。欲行是術。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。曰星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。曰「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。\n"; -exports["examples/javascript/quine(1)"] = "吾有一術。名之曰「自己複製」。欲行是術。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。\n"; - exports["examples/javascript/quine2(0)"] = "吾有一術。名之曰星甲自己複製星乙。星丁欲行是術。是術曰。星丁星丁吾有一術。名之曰星甲置換星乙。星丁欲行是術。必先得三數。星丁曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。星丁星丙吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。星丁星丙吾有一數。曰二。名之曰星甲未来星乙。星丁星丙吾有一數。曰陽。名之曰星甲実行条件星乙。星丁星丙凡星甲文字列星乙中之星甲文字星乙。星丁星丙星丙星丙若星甲実行条件星乙者。星丁星丙星丙星丙星丙若星甲文字星乙等於星甲星甲星星乙星乙星乙中無陰乎星甲文字列星乙之未来等於星甲置換対象星乙者。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲置換先星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙星丙昔之星甲実行条件星乙者。今陰是。星丁星丙星丙星丙星丙若非。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙也。星丁星丙星丙星丙若非。星丁星丙星丙星丙星丙昔之星甲実行条件星乙者。今陽是。星丁星丙星丙星丙也。星丁星丙星丙加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。星丁星丙云云。星丁星丙乃得星甲返品星乙。星丁是謂星甲置換星乙之術也。星丁星丁吾有一言。曰String.fromCharCode名之曰星甲函数星乙。星丁施星甲函数星乙於一萬二千三百。昔之星甲始括弧星乙者。今其是矣。星丁施星甲函数星乙於一萬二千三百零一。昔之星甲終括弧星乙者。今其是矣。星丁施星甲函数星乙於三十二。昔之星甲空白星乙者。今其是矣。星丁加星甲空白星乙以星甲空白星乙。昔之星甲空白星乙者。今其是矣。星丁施星甲函数星乙於十。昔之星甲改行星乙者。今其是矣。星丁吾有一言。曰星甲星甲星戊星乙星乙。名之曰星甲原文星乙。星丁吾有一言。曰星甲星甲星乙星乙。名之曰星甲結果星乙。星丁施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲空白星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丁星乙星乙。於星甲改行星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲戊星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。星丁吾有一言。曰星甲結果星乙。書之。星丁星丁是謂星甲自己複製星乙之術也。星丁施星甲自己複製星乙。\n"; -exports["examples/javascript/quine2(1)"] = "吾有一術。名之曰「自己複製」。\n欲行是術。是術曰。\n\n吾有一術。名之曰「置換」。\n欲行是術。必先得三數。\n曰「文字列」。曰「置換対象」。曰「置換先」是術曰。\n 吾有一言。曰「「」」。名之曰「返品」。\n 吾有一數。曰二。名之曰「未来」。\n 吾有一數。曰陽。名之曰「実行条件」。\n 凡「文字列」中之「文字」。\n 若「実行条件」者。\n 若「文字」等於「「星」」」中無陰乎「文字列」之未来等於「置換対象」者。\n 加「返品」以「置換先」。昔之「返品」者。今其是矣。\n 昔之「実行条件」者。今陰是。\n 若非。\n 加「返品」以「文字」。昔之「返品」者。今其是矣。\n 也。\n 若非。\n 昔之「実行条件」者。今陽是。\n 也。\n 加「未来」以一。昔之「未来」者。今其是矣。\n 云云。\n 乃得「返品」。\n是謂「置換」之術也。\n\n吾有一言。曰String.fromCharCode名之曰「函数」。\n施「函数」於一萬二千三百。昔之「始括弧」者。今其是矣。\n施「函数」於一萬二千三百零一。昔之「終括弧」者。今其是矣。\n施「函数」於三十二。昔之「空白」者。今其是矣。\n加「空白」以「空白」。昔之「空白」者。今其是矣。\n施「函数」於十。昔之「改行」者。今其是矣。\n吾有一言。曰「「吾有一術。名之曰星甲自己複製星乙。星丁欲行是術。是術曰。星丁星丁吾有一術。名之曰星甲置換星乙。星丁欲行是術。必先得三數。星丁曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。星丁星丙吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。星丁星丙吾有一數。曰二。名之曰星甲未来星乙。星丁星丙吾有一數。曰陽。名之曰星甲実行条件星乙。星丁星丙凡星甲文字列星乙中之星甲文字星乙。星丁星丙星丙星丙若星甲実行条件星乙者。星丁星丙星丙星丙星丙若星甲文字星乙等於星甲星甲星星乙星乙星乙中無陰乎星甲文字列星乙之未来等於星甲置換対象星乙者。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲置換先星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙星丙昔之星甲実行条件星乙者。今陰是。星丁星丙星丙星丙星丙若非。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙也。星丁星丙星丙星丙若非。星丁星丙星丙星丙星丙昔之星甲実行条件星乙者。今陽是。星丁星丙星丙星丙也。星丁星丙星丙加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。星丁星丙云云。星丁星丙乃得星甲返品星乙。星丁是謂星甲置換星乙之術也。星丁星丁吾有一言。曰String.fromCharCode名之曰星甲函数星乙。星丁施星甲函数星乙於一萬二千三百。昔之星甲始括弧星乙者。今其是矣。星丁施星甲函数星乙於一萬二千三百零一。昔之星甲終括弧星乙者。今其是矣。星丁施星甲函数星乙於三十二。昔之星甲空白星乙者。今其是矣。星丁加星甲空白星乙以星甲空白星乙。昔之星甲空白星乙者。今其是矣。星丁施星甲函数星乙於十。昔之星甲改行星乙者。今其是矣。星丁吾有一言。曰星甲星甲星戊星乙星乙。名之曰星甲原文星乙。星丁吾有一言。曰星甲星甲星乙星乙。名之曰星甲結果星乙。星丁施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲空白星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丁星乙星乙。於星甲改行星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲戊星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。星丁吾有一言。曰星甲結果星乙。書之。星丁星丁是謂星甲自己複製星乙之術也。星丁施星甲自己複製星乙。」」。名之曰「原文」。\n吾有一言。曰「「」」。名之曰「結果」。\n施「置換」於「原文」。於「「甲」」。於「始括弧」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「乙」」。於「終括弧」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「丙」」。於「空白」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「丁」」。於「改行」。昔之「結果」者。今其是矣。\n施「置換」於「結果」。於「「戊」」。於「原文」。昔之「結果」者。今其是矣。\n吾有一言。曰「結果」。書之。\n\n是謂「自己複製」之術也。\n施「自己複製」。\n"; +exports["examples/javascript/selectionsort(0)"] = "五。八。九。一十。五十五。三百。一千\n"; -exports["examples/javascript/sieve(0)"] = "[ 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97 ]\n"; +exports["examples/javascript/sieve(0)"] = "二。三。五。七。一十一。一十三。一十七。一十九。二十三。二十九。三十一。三十七。四十一。四十三。四十七。五十三。五十九。六十一。六十七。七十一。七十三。七十九。八十三。八十九。九十七\n"; -exports["examples/javascript/sieve(1)"] = "[ 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97 ]\n"; +exports["examples/javascript/sqrt_newton(0)"] = "一又四分一釐六毫六絲六忽六微六纖六沙六塵六埃六渺七漠\n一又四分一釐四毫二絲一忽五微六纖八沙六塵二埃七渺五漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n"; -exports["examples/javascript/sqrt_newton(0)"] = "1.4166666666666667\n1.4142156862745099\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n"; +exports["examples/javascript/test(0)"] = "三\n"; -exports["examples/javascript/sqrt_newton(1)"] = "1.4166666666666667\n1.4142156862745099\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n"; +exports["examples/javascript/try(0)"] = "嗚呼哀哉。伏维尚飨\n事不關心\n"; exports["examples/javascript/turing(0)"] = "營營河狸。止于樊。\n甲 《 〔白〕 》\n乙 《 、墨、〔白〕 》\n甲 《 〔墨〕、墨、 》\n丙 《 〔白〕、墨、、墨、 》\n乙 《 〔白〕、墨、、墨、、墨、 》\n甲 《 〔白〕、墨、、墨、、墨、、墨、 》\n乙 《 、墨、〔墨〕、墨、、墨、、墨、 》\n乙 《 、墨、、墨、〔墨〕、墨、、墨、 》\n乙 《 、墨、、墨、、墨、〔墨〕、墨、 》\n乙 《 、墨、、墨、、墨、、墨、〔墨〕 》\n乙 《 、墨、、墨、、墨、、墨、、墨、〔白〕 》\n甲 《 、墨、、墨、、墨、、墨、〔墨〕、墨、 》\n丙 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n樊 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n"; -exports["examples/javascript/turing(1)"] = "營營河狸。止于樊。\n甲 《 〔白〕 》\n乙 《 、墨、〔白〕 》\n甲 《 〔墨〕、墨、 》\n丙 《 〔白〕、墨、、墨、 》\n乙 《 〔白〕、墨、、墨、、墨、 》\n甲 《 〔白〕、墨、、墨、、墨、、墨、 》\n乙 《 、墨、〔墨〕、墨、、墨、、墨、 》\n乙 《 、墨、、墨、〔墨〕、墨、、墨、 》\n乙 《 、墨、、墨、、墨、〔墨〕、墨、 》\n乙 《 、墨、、墨、、墨、、墨、〔墨〕 》\n乙 《 、墨、、墨、、墨、、墨、、墨、〔白〕 》\n甲 《 、墨、、墨、、墨、、墨、〔墨〕、墨、 》\n丙 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n樊 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n"; - -exports["examples/python/beer(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n_ans1=\"春日宴。\"\nprint(\"\".join([str(_ans1)]))\n酒數=9\nwhile (True):\n\tif 酒數==0:\n\t\tbreak\n\n\t_ans2=\"與君\"\n\t_ans3=酒數\n\t_ans4=\"杯酒。可以窮歡宴。綠酒一杯歌一遍。\"\n\tprint(\"\".join([str(_ans2),str(_ans3),str(_ans4)]))\n\t_ans5=酒數-1\n\t酒數=_ans5\n\n_ans6=\"綠酒千杯腸已爛。\"\nprint(\"\".join([str(_ans6)]))\n"; - -exports["examples/python/collatz(0)"] = "[12,6.0,3.0,10.0,5.0,16.0,8.0,4.0,2.0,1.0,1,]\r\n[19,58,29.0,88.0,44.0,22.0,11.0,34.0,17.0,52.0,26.0,13.0,40.0,20.0,10.0,5.0,16.0,8.0,4.0,2.0,1.0,1,]\r\n[27,82,41.0,124.0,62.0,31.0,94.0,47.0,142.0,71.0,214.0,107.0,322.0,161.0,484.0,242.0,121.0,364.0,182.0,91.0,274.0,137.0,412.0,206.0,103.0,310.0,155.0,466.0,233.0,700.0,350.0,175.0,526.0,263.0,790.0,395.0,1186.0,593.0,1780.0,890.0,445.0,1336.0,668.0,334.0,167.0,502.0,251.0,754.0,377.0,1132.0,566.0,283.0,850.0,425.0,1276.0,638.0,319.0,958.0,479.0,1438.0,719.0,2158.0,1079.0,3238.0,1619.0,4858.0,2429.0,7288.0,3644.0,1822.0,911.0,2734.0,1367.0,4102.0,2051.0,6154.0,3077.0,9232.0,4616.0,2308.0,1154.0,577.0,1732.0,866.0,433.0,1300.0,650.0,325.0,976.0,488.0,244.0,122.0,61.0,184.0,92.0,46.0,23.0,70.0,35.0,106.0,53.0,160.0,80.0,40.0,20.0,10.0,5.0,16.0,8.0,4.0,2.0,1.0,1,]\r\n"; - -exports["examples/python/collatz(1)"] = "[12,6.0,3.0,10.0,5.0,16.0,8.0,4.0,2.0,1.0,1,]\r\n[19,58,29.0,88.0,44.0,22.0,11.0,34.0,17.0,52.0,26.0,13.0,40.0,20.0,10.0,5.0,16.0,8.0,4.0,2.0,1.0,1,]\r\n[27,82,41.0,124.0,62.0,31.0,94.0,47.0,142.0,71.0,214.0,107.0,322.0,161.0,484.0,242.0,121.0,364.0,182.0,91.0,274.0,137.0,412.0,206.0,103.0,310.0,155.0,466.0,233.0,700.0,350.0,175.0,526.0,263.0,790.0,395.0,1186.0,593.0,1780.0,890.0,445.0,1336.0,668.0,334.0,167.0,502.0,251.0,754.0,377.0,1132.0,566.0,283.0,850.0,425.0,1276.0,638.0,319.0,958.0,479.0,1438.0,719.0,2158.0,1079.0,3238.0,1619.0,4858.0,2429.0,7288.0,3644.0,1822.0,911.0,2734.0,1367.0,4102.0,2051.0,6154.0,3077.0,9232.0,4616.0,2308.0,1154.0,577.0,1732.0,866.0,433.0,1300.0,650.0,325.0,976.0,488.0,244.0,122.0,61.0,184.0,92.0,46.0,23.0,70.0,35.0,106.0,53.0,160.0,80.0,40.0,20.0,10.0,5.0,16.0,8.0,4.0,2.0,1.0,1,]\r\n"; - -exports["examples/python/collatz2(0)"] = "20\r\n46\r\n49\r\n8\r\n"; - -exports["examples/python/collatz2(1)"] = "20\r\n46\r\n49\r\n8\r\n"; - -exports["examples/python/divination(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n听天由命=lambda _:0\ndef 听天由命(a):\n\treturn Math.floor(Math.random()*a);\n\n\n春秋古筮法=lambda _:0\ndef 春秋古筮法(现余策):\n\t左余策=0\n\t左剩策=0\n\t右余策=0\n\t右剩策=0\n\t_ans24=现余策-1\n\t现余策=_ans24\n\t# -\n\t\t现余策=_ans24\n\t_ans25=听天由命(现余策)\n\t左余策=_ans25\n\t_ans26=现余策+1\n\t现余策=_ans26\n\t_ans27=左余策+1\n\t左余策=_ans27\n\t_ans28=现余策-左余策\n\t右余策=_ans28\n\t# \"分而为二以象两\"\n\t\t_ans29=左余策%4\n\t# \"揲之以四象四时\"\n\t\t左剩策=_ans29\n\tif 左剩策==0:\n\t\t左剩策=4\n\n\t_ans30=右余策%4\n\t右剩策=_ans30\n\tif 右剩策==0:\n\t\t右剩策=4\n\n\t_ans31=现余策-左剩策\n\t现余策=_ans31\n\t_ans32=现余策-右剩策\n\t现余策=_ans32\n\treturn 现余策\n\n爻基=Ctnr()\n甲=6\nwhile (True):\n\tif 甲==0:\n\t\tbreak\n\n\t余策=50\n\t# \"大衍之数五十\"\n\t\t_ans33=余策-1\n\t余策=_ans33\n\t# \"其用四十有九\"\n\t\tfor _rand2 in range(3):\n\t\t# \"三变成一爻\"\n\t\t\t\t_ans34=春秋古筮法(余策)\n\t\t余策=_ans34\n\n\t爻基.push(余策)\n\t_ans35=甲-1\n\t甲=_ans35\n\n甲=6\n判據=0\nwhile (True):\n\tif 甲==0:\n\t\tbreak\n\n\t_ans36=爻基[甲-1]\n\t_ans37=_ans36/4\n\t_ans38=_ans37%2\n\t判據=_ans38\n\tif 判據==0:\n\t\t_ans39=\"-- --\"\n\t\tprint(\"\".join([str(_ans39)]))\n\telse:\n\t\t_ans40=\"-----\"\n\t\tprint(\"\".join([str(_ans40)]))\n\n\t_ans41=甲-1\n\t甲=_ans41\n\n"; - -exports["examples/python/euclidean(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n歐幾里得法=lambda _:0\ndef 歐幾里得法(甲,乙):\n\t回=0\n\tif 乙==0:\n\t\treturn 甲\n\telse:\n\t\t削除=0\n\t\t_ans42=甲%乙\n\t\t削除=_ans42\n\t\t_ans43=歐幾里得法(乙,削除)\n\t\t回=_ans43\n\n\treturn 回\n\n互質=lambda _:0\ndef 互質(甲,乙):\n\t回=0\n\t_ans44=歐幾里得法(甲,乙)\n\t回=_ans44\n\tif 回==1:\n\t\treturn True\n\telse:\n\t\treturn False\n\n\n歐拉餘數=lambda _:0\ndef 歐拉餘數(甲):\n\t# 非最優解矣。吾算術及數論廢也\n\t\t埃=2\n\t積=1\n\t# \"畸\"\n\t\twhile (True):\n\t\tif 甲<=埃:\n\t\t\tbreak\n\n\t\t回=False\n\t\t_ans45=互質(甲,埃)\n\t\t回=_ans45\n\t\tif 回:\n\t\t\t_ans46=積+1\n\t\t\t積=_ans46\n\n\t\t_ans47=埃+1\n\t\t埃=_ans47\n\n\treturn 積\n\n_ans48=歐幾里得法(1071,462)\nprint(\"\".join([str(_ans48)]))\n_ans49=歐幾里得法(123,4)\nprint(\"\".join([str(_ans49)]))\n_ans50=互質(123,4)\nprint(\"\".join([str(_ans50)]))\n_ans51=互質(4,2)\nprint(\"\".join([str(_ans51)]))\n_ans52=歐拉餘數(2)\nprint(\"\".join([str(_ans52)]))\n_ans53=歐拉餘數(12)\nprint(\"\".join([str(_ans53)]))\n_ans54=歐拉餘數(13)\nprint(\"\".join([str(_ans54)]))\n_ans55=歐拉餘數(16)\nprint(\"\".join([str(_ans55)]))\n_ans56=歐拉餘數(255)\nprint(\"\".join([str(_ans56)]))\n"; - -exports["examples/python/factorial(0)"] = "120\r\n"; - -exports["examples/python/factorial(1)"] = "120\r\n"; - -exports["examples/python/fibonacci(0)"] = "144\r\n"; - -exports["examples/python/fibonacci(1)"] = "144\r\n"; +exports["examples/romanizeIdentifiers/beer(0)"] = "春日宴。\n與君 九 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 八 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 七 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 六 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 五 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 四 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 三 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 二 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 一 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n綠酒千杯腸已爛。\n"; -exports["examples/python/fibonacci2(0)"] = "55\r\n"; +exports["examples/romanizeIdentifiers/collatz(0)"] = "一十二。六。三。一十。五。一十六。八。四。二。一。一\n一十九。五十八。二十九。八十八。四十四。二十二。一十一。三十四。一十七。五十二。二十六。一十三。四十。二十。一十。五。一十六。八。四。二。一。一\n二十七。八十二。四十一。一百二十四。六十二。三十一。九十四。四十七。一百四十二。七十一。二百一十四。一百零七。三百二十二。一百六十一。四百八十四。二百四十二。一百二十一。三百六十四。一百八十二。九十一。二百七十四。一百三十七。四百一十二。二百零六。一百零三。三百一十。一百五十五。四百六十六。二百三十三。七百。三百五十。一百七十五。五百二十六。二百六十三。七百九十。三百九十五。一千一百八十六。五百九十三。一千七百八十。八百九十。四百四十五。一千三百三十六。六百六十八。三百三十四。一百六十七。五百零二。二百五十一。七百五十四。三百七十七。一千一百三十二。五百六十六。二百八十三。八百五十。四百二十五。一千二百七十六。六百三十八。三百一十九。九百五十八。四百七十九。一千四百三十八。七百一十九。二千一百五十八。一千零七十九。三千二百三十八。一千六百一十九。四千八百五十八。二千四百二十九。七千二百八十八。三千六百四十四。一千八百二十二。九百一十一。二千七百三十四。一千三百六十七。四千一百零二。二千零五十一。六千一百五十四。三千零七十七。九千二百三十二。四千六百一十六。二千三百零八。一千一百五十四。五百七十七。一千七百三十二。八百六十六。四百三十三。一千三百。六百五十。三百二十五。九百七十六。四百八十八。二百四十四。一百二十二。六十一。一百八十四。九十二。四十六。二十三。七十。三十五。一百零六。五十三。一百六十。八十。四十。二十。一十。五。一十六。八。四。二。一。一\n"; -exports["examples/python/fibonacci2(1)"] = "55\r\n"; +exports["examples/romanizeIdentifiers/collatz2(0)"] = "二十\n四十六\n四十九\n八\n"; -exports["examples/python/fizzbuzz(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n戊=1\nwhile (True):\n\t_ans70=戊%3\n\t_ans71=not _ans70\n\t三餘=_ans71\n\t_ans72=戊%5\n\t_ans73=not _ans72\n\t五餘=_ans73\n\t_ans74=三餘 or 五餘\n\t_ans75=not _ans74\n\t寂=_ans75\n\tif 寂:\n\t\t_ans76=戊\n\t\tprint(\"\".join([str(_ans76)]))\n\telse:\n\t\t聲=\"\"\n\t\tif 三餘:\n\t\t\t_ans77=聲+\"黃河流水鳴濺濺。\"\n\t\t\t聲=_ans77\n\n\t\tif 五餘:\n\t\t\t_ans78=聲+\"燕山胡騎鳴啾啾。\"\n\t\t\t聲=_ans78\n\n\t\t_ans79=聲\n\t\tprint(\"\".join([str(_ans79)]))\n\n\tif 戊==100:\n\t\tbreak\n\n\t_ans80=1+戊\n\t戊=_ans80\n\n"; +exports["examples/romanizeIdentifiers/eightqueens(0)"] = "一。五。八。六。三。七。二。四\n一。六。八。三。七。四。二。五\n一。七。四。六。八。二。五。三\n一。七。五。八。二。四。六。三\n二。四。六。八。三。一。七。五\n二。五。七。一。三。八。六。四\n二。五。七。四。一。八。六。三\n二。六。一。七。四。八。三。五\n二。六。八。三。一。四。七。五\n二。七。三。六。八。五。一。四\n二。七。五。八。一。四。六。三\n二。八。六。一。三。五。七。四\n三。一。七。五。八。二。四。六\n三。五。二。八。一。七。四。六\n三。五。二。八。六。四。七。一\n三。五。七。一。四。二。八。六\n三。五。八。四。一。七。二。六\n三。六。二。五。八。一。七。四\n三。六。二。七。一。四。八。五\n三。六。二。七。五。一。八。四\n三。六。四。一。八。五。七。二\n三。六。四。二。八。五。七。一\n三。六。八。一。四。七。五。二\n三。六。八。一。五。七。二。四\n三。六。八。二。四。一。七。五\n三。七。二。八。五。一。四。六\n三。七。二。八。六。四。一。五\n三。八。四。七。一。六。二。五\n四。一。五。八。二。七。三。六\n四。一。五。八。六。三。七。二\n四。二。五。八。六。一。三。七\n四。二。七。三。六。八。一。五\n四。二。七。三。六。八。五。一\n四。二。七。五。一。八。六。三\n四。二。八。五。七。一。三。六\n四。二。八。六。一。三。五。七\n四。六。一。五。二。八。三。七\n四。六。八。二。七。一。三。五\n四。六。八。三。一。七。五。二\n四。七。一。八。五。二。六。三\n四。七。三。八。二。五。一。六\n四。七。五。二。六。一。三。八\n四。七。五。三。一。六。八。二\n四。八。一。三。六。二。七。五\n四。八。一。五。七。二。六。三\n四。八。五。三。一。七。二。六\n五。一。四。六。八。二。七。三\n五。一。八。四。二。七。三。六\n五。一。八。六。三。七。二。四\n五。二。四。六。八。三。一。七\n五。二。四。七。三。八。六。一\n五。二。六。一。七。四。八。三\n五。二。八。一。四。七。三。六\n五。三。一。六。八。二。四。七\n五。三。一。七。二。八。六。四\n五。三。八。四。七。一。六。二\n五。七。一。三。八。六。四。二\n五。七。一。四。二。八。六。三\n五。七。二。四。八。一。三。六\n五。七。二。六。三。一。四。八\n五。七。二。六。三。一。八。四\n五。七。四。一。三。八。六。二\n五。八。四。一。三。六。二。七\n五。八。四。一。七。二。六。三\n六。一。五。二。八。三。七。四\n六。二。七。一。三。五。八。四\n六。二。七。一。四。八。五。三\n六。三。一。七。五。八。二。四\n六。三。一。八。四。二。七。五\n六。三。一。八。五。二。四。七\n六。三。五。七。一。四。二。八\n六。三。五。八。一。四。二。七\n六。三。七。二。四。八。一。五\n六。三。七。二。八。五。一。四\n六。三。七。四。一。八。二。五\n六。四。一。五。八。二。七。三\n六。四。二。八。五。七。一。三\n六。四。七。一。三。五。二。八\n六。四。七。一。八。二。五。三\n六。八。二。四。一。七。五。三\n七。一。三。八。六。四。二。五\n七。二。四。一。八。五。三。六\n七。二。六。三。一。四。八。五\n七。三。一。六。八。五。二。四\n七。三。八。二。五。一。六。四\n七。四。二。五。八。一。三。六\n七。四。二。八。六。一。三。五\n七。五。三。一。六。八。二。四\n八。二。四。一。七。五。三。六\n八。二。五。三。一。七。四。六\n八。三。一。六。二。五。七。四\n八。四。一。三。六。二。七。五\n"; -exports["examples/python/hanoi(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n漢諾塔=lambda _:0\ndef 漢諾塔(盤數,甲塔,乙塔,丙塔):\n\tif 盤數==0:\n\t\t_ans81=Ctnr()\n\t\treturn _ans81\n\n\t_ans82=盤數-1\n\t盤數=_ans82\n\t_ans83=漢諾塔(盤數,甲塔,丙塔,乙塔)\n\t古=_ans83\n\t_ans84=漢諾塔(盤數,丙塔,乙塔,甲塔)\n\t後=_ans84\n\t步=Ctnr()\n\t步.push(甲塔,乙塔)\n\t今=Ctnr()\n\t今.push(步)\n\t_ans85=古.concat(今).concat(後)\n\t史=_ans85\n\treturn 史\n\n畫塔法=lambda _:0\ndef 畫塔法(盤數,史):\n\t諸名=\"甲乙丙\"\n\t三塔=Ctnr()\n\t三塔.push(盤數,0,0)\n\t畫=lambda _:0\n\tdef 畫():\n\t\t戌=1\n\t\twhile (True):\n\t\t\tif 戌>3:\n\t\t\t\tbreak\n\n\t\t\t_ans86=三塔[戌-1]\n\t\t\t碟=_ans86\n\t\t\t_ans87=盤數-碟\n\t\t\t柱=_ans87\n\t\t\t行=\"\"\n\t\t\tfor _rand3 in range(碟):\n\t\t\t\t_ans88=行+\"盤\"\n\t\t\t\t行=_ans88\n\n\t\t\tfor _rand4 in range(柱):\n\t\t\t\t_ans89=行+\"一\"\n\t\t\t\t行=_ans89\n\n\t\t\t_ans90=諸名[戌-1]\n\t\t\t名=_ans90\n\t\t\t_ans91=\"〔\"\n\t\t\t_ans92=名\n\t\t\t_ans93=\"〕\"\n\t\t\t_ans94=行\n\t\t\tprint(\"\".join([str(_ans91),str(_ans92),str(_ans93),str(_ans94)]))\n\t\t\t_ans95=1+戌\n\t\t\t戌=_ans95\n\n\t\tprint(\"\".join([]))\n\n\tfor 步 in 史:\n\t\t_ans96=畫()\n\t\t_ans97=步[1-1]\n\t\t起=_ans97\n\t\t_ans98=步[2-1]\n\t\t訖=_ans98\n\t\t_ans99=三塔[起-1]\n\t\t_ans100=_ans99-1\n\t\t三塔[起-1]=_ans100\n\t\t_ans101=三塔[訖-1]\n\t\t_ans102=_ans101+1\n\t\t三塔[訖-1]=_ans102\n\t\tprint(\"\".join([]))\n\n\t_ans103=畫()\n\t_ans104=\"畢\"\n\tprint(\"\".join([str(_ans104)]))\n\n盤數=4\n_ans105=漢諾塔(盤數,1,2,3)\n史=_ans105\n_ans106=畫塔法(盤數,史)\n"; +exports["examples/romanizeIdentifiers/euclidean(0)"] = "二十一\n一\n陽\n陰\n一\n四\n一十二\n八\n一百二十八\n"; -exports["examples/python/helloworld+(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n甲=3\nfor _rand5 in range(甲):\n\t_ans107=\"問天地好在。\"\n\tprint(\"\".join([str(_ans107)]))\n\n"; +exports["examples/romanizeIdentifiers/factorial(0)"] = "一百二十\n"; -exports["examples/python/helloworld(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n_ans108=\"問天地好在。\"\nprint(\"\".join([str(_ans108)]))\n"; +exports["examples/romanizeIdentifiers/fibonacci(0)"] = "一百四十四\n"; -exports["examples/python/mandelbrot(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n曼德博=lambda _:0\ndef 曼德博(寬,高):\n\t# \"曼德博集。亦稱曼德布洛特复数集合。复平面上组成分形之点之集合也。\"\n\t\t皴法=\"丁龘蠹臺龜畫龍淼蔑高五三二\"\n\t# \"皴法者。圖畫之法也\"\n\t\t_ans109=0-1\n\t上=_ans109\n\t_ans110=0+1\n\t下=_ans110\n\t_ans111=0-2\n\t左=_ans111\n\t_ans112=0+2\n\t右=_ans112\n\t_ans113=右-左\n\t_ans114=_ans113/寬\n\t橫步=_ans114\n\t_ans115=下-上\n\t_ans116=_ans115/高\n\t縱步=_ans116\n\t戊=0\n\twhile (True):\n\t\tif 戊==高:\n\t\t\tbreak\n\n\t\t_ans117=縱步*戊\n\t\t_ans118=_ans117+上\n\t\t虛=_ans118\n\t\t行=\"\"\n\t\t戌=0\n\t\twhile (True):\n\t\t\tif 戌==寬:\n\t\t\t\tbreak\n\n\t\t\t_ans119=橫步*戌\n\t\t\t_ans120=_ans119+左\n\t\t\t實=_ans120\n\t\t\t虛虛=虛\n\t\t\t實實=實\n\t\t\t# \"凡每一像素。皆算令其收斂之最大疊代數\"\n\t\t\t\t\t\t己=0\n\t\t\twhile (True):\n\t\t\t\tif 己==12:\n\t\t\t\t\tbreak\n\n\t\t\t\t_ans121=實實*實實\n\t\t\t\t_ans122=虛虛*虛虛\n\t\t\t\t甲=_ans121\n\t\t\t\t乙=_ans122\n\t\t\t\t_ans123=甲+乙\n\t\t\t\t丙=_ans123\n\t\t\t\tif 丙>4:\n\t\t\t\t\tbreak\n\n\t\t\t\t_ans124=虛虛*實實\n\t\t\t\t_ans125=_ans124*2\n\t\t\t\t_ans126=_ans125+虛\n\t\t\t\t虛虛=_ans126\n\t\t\t\t_ans127=甲-乙\n\t\t\t\t_ans128=_ans127+實\n\t\t\t\t實實=_ans128\n\t\t\t\t_ans129=1+己\n\t\t\t\t己=_ans129\n\n\t\t\t# \"既得疊代數。乃以皴法圖之\"\n\t\t\t\t\t\t_ans130=13-己\n\t\t\t巳=_ans130\n\t\t\t_ans131=皴法[巳-1]\n\t\t\t墨=_ans131\n\t\t\t_ans132=行+墨\n\t\t\t行=_ans132\n\t\t\t_ans133=1+戌\n\t\t\t戌=_ans133\n\n\t\t_ans134=行\n\t\tprint(\"\".join([str(_ans134)]))\n\t\t_ans135=1+戊\n\t\t戊=_ans135\n\n\n# \"畫曼德博集合之法。至是盡矣。乃一試之\"\n_ans136=曼德博(59,24)\n"; +exports["examples/romanizeIdentifiers/fibonacci2(0)"] = "五十五\n"; -exports["examples/python/mergesort(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n歸併=lambda _:0\ndef 歸併(甲,乙):\n\tif 甲.length==0:\n\t\treturn 乙\n\n\tif 乙.length==0:\n\t\treturn 甲\n\n\t甲引=1\n\t乙引=1\n\t果=Ctnr()\n\twhile (True):\n\t\tif 甲.length<甲引:\n\t\t\tbreak\n\n\t\tif 乙.length<乙引:\n\t\t\tbreak\n\n\t\t_ans137=甲[甲引-1]\n\t\t甲一=_ans137\n\t\t_ans138=乙[乙引-1]\n\t\t乙一=_ans138\n\t\tif 甲一<=乙一:\n\t\t\t果.push(甲一)\n\t\t\t_ans139=甲引+1\n\t\t\t甲引=_ans139\n\t\telse:\n\t\t\t果.push(乙一)\n\t\t\t_ans140=乙引+1\n\t\t\t乙引=_ans140\n\n\n\tif 甲.length<甲引:\n\t\twhile (True):\n\t\t\tif 乙.length<乙引:\n\t\t\t\tbreak\n\n\t\t\t_ans141=乙[乙引-1]\n\t\t\t乙餘=_ans141\n\t\t\t果.push(乙餘)\n\t\t\t_ans142=乙引+1\n\t\t\t乙引=_ans142\n\n\t\treturn 果\n\n\tif 乙.length<乙引:\n\t\twhile (True):\n\t\t\tif 甲.length<甲引:\n\t\t\t\tbreak\n\n\t\t\t_ans143=甲[甲引-1]\n\t\t\t甲餘=_ans143\n\t\t\t果.push(甲餘)\n\t\t\t_ans144=甲引+1\n\t\t\t甲引=_ans144\n\n\t\treturn 果\n\n\n並排=lambda _:0\ndef 並排(甲):\n\tif 甲.length<=1:\n\t\treturn 甲\n\n\t甲長=_ans145\n\t_ans145=_ans144%2\n\t甲餘=_ans145\n\t_ans146=甲長-甲餘\n\t_ans147=_ans146/2\n\t甲中=_ans147\n\t甲前=Ctnr()\n\t甲後=Ctnr()\n\t甲引=1\n\twhile (True):\n\t\tif 甲引>甲.length:\n\t\t\tbreak\n\n\t\t_ans148=甲[甲引-1]\n\t\t甲一=_ans148\n\t\tif 甲引<=甲中:\n\t\t\t甲前.push(甲一)\n\t\telse:\n\t\t\t甲後.push(甲一)\n\n\t\t_ans149=甲引+1\n\t\t甲引=_ans149\n\n\t_ans150=並排(甲前)\n\t甲前=_ans150\n\t_ans151=並排(甲後)\n\t甲後=_ans151\n\t_ans152=歸併(甲前,甲後)\n\t果=_ans152\n\treturn 果\n\n測排=Ctnr()\n測排.push(1,3,2,18,14)\n_ans153=並排(測排)\nprint(\"\".join([str(_ans153)]))\n"; - -exports["examples/python/misc(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n_ans154=\"問天地好在。\"\nprint(\"\".join([str(_ans154)]))\n甲=30\n_ans155=\"甲之數\"\n_ans156=甲\n_ans157=\"也\"\nprint(\"\".join([str(_ans155),str(_ans156),str(_ans157)]))\n# \"文氣淋灕。字句切實\"\n天=True\n地=False\n_ans158=天 and 地\n_ans159=天 or 地\n_ans160=not 天\n人=_ans160\n_ans161=甲-1\n_ans162=甲+2\n乙=_ans161\n丙=_ans162\n丁=Ctnr()\n丁.push(1,2,3,4)\n戊=1\nwhile (True):\n\tif 戊==甲:\n\t\tbreak\n\n\t_ans163=戊\n\tprint(\"\".join([str(_ans163)]))\n\t_ans164=1+戊\n\t戊=_ans164\n\n階乘=lambda _:0\ndef 階乘(甲):\n\tif 甲==1:\n\t\treturn 甲\n\telse:\n\t\t_ans165=甲-1\n\t\t乙=_ans165\n\t\t_ans166=階乘(乙)\n\t\t丙=_ans166\n\t\t_ans167=丙*甲\n\t\t丁=_ans167\n\t\treturn 丁\n\n\n異或=lambda _:0\ndef 異或(甲,乙):\n\tif 甲==乙:\n\t\treturn False\n\telse:\n\t\treturn True\n\n\n快排=lambda _:0\ndef 快排(甲):\n\tif 甲.length<=1:\n\t\treturn 甲\n\n\t首=Ctnr()\n\t頷=Ctnr()\n\t尾=Ctnr()\n\t_ans168=甲[1-1]\n\t甲一=_ans168\n\t頷.push(甲一)\n\t_ans169=甲.slice(1)\n\t甲餘=_ans169\n\tfor 丁 in 甲餘:\n\t\tif 丁<甲一:\n\t\t\t首.push(丁)\n\t\telse:\n\t\t\t尾.push(丁)\n\n\n\t_ans170=快排(首)\n\t首=_ans170\n\t_ans171=快排(尾)\n\t尾=_ans171\n\t_ans172=首.concat(頷).concat(尾)\n\t乙=_ans172\n\treturn 乙\n\n己=Ctnr()\n己.push(5,3,20,8,35,700)\n_ans173=快排(己)\nprint(\"\".join([str(_ans173)]))\n"; - -exports["examples/python/modinv(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n大衍求一=lambda _:0\ndef 大衍求一(奇數,定母):\n\t# \"大衍求一術云︰置奇右上。定居右下。立天元一於左上。先以右上除右下。\n\t所得商數與左上一相生。入左下。然後乃以右行上下。以少除多。遞互除之。\n\t所得商數隨即遞互累乘。歸左行上下。須使右上末後奇一而止。乃驗左上所得。以為乘率。\"\n\t\t天元=1\n\t右上=奇數\n\t右下=定母\n\t左上=天元\n\t左下=0\n\twhile (True):\n\t\tif 右上==1:\n\t\t\treturn 左上\n\n\t\t_ans174=右下%右上\n\t\t餘數=_ans174\n\t\t_ans175=右下-餘數\n\t\t_ans176=_ans175/右上\n\t\t商數=_ans176\n\t\t_ans177=商數*左上\n\t\t_ans178=左下+_ans177\n\t\t左下=_ans178\n\t\t右下=餘數\n\t\t# \"若右下等於零者。曰奇數與定母不互素。無乘率也。\"\n\t\t\t\tif 右下==0:\n\t\t\treturn 0\n\n\t\t_ans179=右上-1\n\t\t_ans180=_ans179%右下\n\t\t_ans181=_ans180+1\n\t\t餘數=_ans181\n\t\t_ans182=右上-餘數\n\t\t_ans183=_ans182/右下\n\t\t商數=_ans183\n\t\t_ans184=商數*左下\n\t\t_ans185=左上+_ans184\n\t\t左上=_ans185\n\t\t右上=餘數\n\n\n_ans186=大衍求一(49,142857)\n乘率=_ans186\n_ans187=49*乘率\n_ans188=_ans187%142857\nprint(\"\".join([str(_ans188)]))\n"; - -exports["examples/python/pi_leibniz(0)"] = "3.232315809405594\r\n3.127307667981234\r\n3.143967947151556\r\n3.1408452695387057\r\n3.141601386070187\r\n"; - -exports["examples/python/pi_leibniz(1)"] = "3.232315809405594\r\n3.127307667981234\r\n3.143967947151556\r\n3.1408452695387057\r\n3.141601386070187\r\n"; - -exports["examples/python/quicksort(0)"] = "[3,5,8,20,35,700,]\r\n"; - -exports["examples/python/quicksort(1)"] = "[3,5,8,20,35,700,]\r\n"; - -exports["examples/python/quine(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n# Reference: \n# https://qiita.com/amoO_O/items/5d0c4edfc99f64bea6fb\n\n自己複製=lambda _:0\ndef 自己複製():\n\t置換=lambda _:0\n\tdef 置換(文字列,置換対象,置換先)\t:\n\t\t返品=\"\"\n\t\t未来=2\n\t\t実行条件=True\n\t\tfor 文字 in 文字列:\n\t\t\tif 実行条件:\n\t\t\t\tif 文字==\"星\"&&文字列[未来-1]==置換対象:\n\t\t\t\t\t文字=置換先\n\t\t\t\t\t実行条件=False\n\n\t\t\t\t_ans210=返品+文字\n\t\t\t\t返品=_ans210\n\t\t\telse:\n\t\t\t\t実行条件=True\n\n\t\t\t_ans211=未来+1\n\t\t\t未来=_ans211\n\n\t\treturn 返品\n\n\t函数=String.fromCharCode\n\t_ans212=函数(12300)\n\t始=_ans212\n\t_ans213=函数(12301)\n\t終=_ans213\n\t_ans214=\"吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。\"\n\t_ans215=\"\"\n\t原文=_ans214\n\t結果=_ans215\n\t_ans216=置換(原文,\"甲\",始)\n\t結果=_ans216\n\t_ans217=置換(結果,\"乙\",終)\n\t結果=_ans217\n\t_ans218=置換(結果,\"丙\",原文)\n\t結果=_ans218\n\t_ans219=結果\n\tprint(\"\".join([str(_ans219)]))\n\n_ans220=自己複製()\n"; - -exports["examples/python/quine2(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n# Reference: \n# https://qiita.com/amoO_O/items/5d0c4edfc99f64bea6fb\n\n自己複製=lambda _:0\ndef 自己複製():\n\t置換=lambda _:0\n\tdef 置換(文字列,置換対象,置換先)\t:\n\t\t返品=\"\"\n\t\t未来=2\n\t\t実行条件=True\n\t\tfor 文字 in 文字列:\n\t\t\tif 実行条件:\n\t\t\t\tif 文字==\"星\"&&文字列[未来-1]==置換対象:\n\t\t\t\t\t_ans221=返品+置換先\n\t\t\t\t\t返品=_ans221\n\t\t\t\t\t実行条件=False\n\t\t\t\telse:\n\t\t\t\t\t_ans222=返品+文字\n\t\t\t\t\t返品=_ans222\n\n\t\t\telse:\n\t\t\t\t実行条件=True\n\n\t\t\t_ans223=未来+1\n\t\t\t未来=_ans223\n\n\t\treturn 返品\n\n\t函数=String.fromCharCode\n\t_ans224=函数(12300)\n\t始括弧=_ans224\n\t_ans225=函数(12301)\n\t終括弧=_ans225\n\t_ans226=函数(32)\n\t空白=_ans226\n\t_ans227=空白+空白\n\t空白=_ans227\n\t_ans228=函数(10)\n\t改行=_ans228\n\t原文=\"吾有一術。名之曰星甲自己複製星乙。星丁欲行是術。是術曰。星丁星丁吾有一術。名之曰星甲置換星乙。星丁欲行是術。必先得三數。星丁曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。星丁星丙吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。星丁星丙吾有一數。曰二。名之曰星甲未来星乙。星丁星丙吾有一數。曰陽。名之曰星甲実行条件星乙。星丁星丙凡星甲文字列星乙中之星甲文字星乙。星丁星丙星丙星丙若星甲実行条件星乙者。星丁星丙星丙星丙星丙若星甲文字星乙等於星甲星甲星星乙星乙星乙中無陰乎星甲文字列星乙之未来等於星甲置換対象星乙者。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲置換先星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙星丙昔之星甲実行条件星乙者。今陰是。星丁星丙星丙星丙星丙若非。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙也。星丁星丙星丙星丙若非。星丁星丙星丙星丙星丙昔之星甲実行条件星乙者。今陽是。星丁星丙星丙星丙也。星丁星丙星丙加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。星丁星丙云云。星丁星丙乃得星甲返品星乙。星丁是謂星甲置換星乙之術也。星丁星丁吾有一言。曰String.fromCharCode名之曰星甲函数星乙。星丁施星甲函数星乙於一萬二千三百。昔之星甲始括弧星乙者。今其是矣。星丁施星甲函数星乙於一萬二千三百零一。昔之星甲終括弧星乙者。今其是矣。星丁施星甲函数星乙於三十二。昔之星甲空白星乙者。今其是矣。星丁加星甲空白星乙以星甲空白星乙。昔之星甲空白星乙者。今其是矣。星丁施星甲函数星乙於十。昔之星甲改行星乙者。今其是矣。星丁吾有一言。曰星甲星甲星戊星乙星乙。名之曰星甲原文星乙。星丁吾有一言。曰星甲星甲星乙星乙。名之曰星甲結果星乙。星丁施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲空白星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丁星乙星乙。於星甲改行星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲戊星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。星丁吾有一言。曰星甲結果星乙。書之。星丁星丁是謂星甲自己複製星乙之術也。星丁施星甲自己複製星乙。\"\n\t結果=\"\"\n\t_ans229=置換(原文,\"甲\",始括弧)\n\t結果=_ans229\n\t_ans230=置換(結果,\"乙\",終括弧)\n\t結果=_ans230\n\t_ans231=置換(結果,\"丙\",空白)\n\t結果=_ans231\n\t_ans232=置換(結果,\"丁\",改行)\n\t結果=_ans232\n\t_ans233=置換(結果,\"戊\",原文)\n\t結果=_ans233\n\t_ans234=結果\n\tprint(\"\".join([str(_ans234)]))\n\n_ans235=自己複製()\n"; - -exports["examples/python/sieve(0)"] = "[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,]\r\n"; - -exports["examples/python/sieve(1)"] = "[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,]\r\n"; - -exports["examples/python/sqrt_newton(0)"] = "1.4166666666666667\r\n1.4142156862745099\r\n1.4142135623730951\r\n1.4142135623730951\r\n1.4142135623730951\r\n1.4142135623730951\r\n1.4142135623730951\r\n"; - -exports["examples/python/sqrt_newton(1)"] = "1.4166666666666667\r\n1.4142156862745099\r\n1.4142135623730951\r\n1.4142135623730951\r\n1.4142135623730951\r\n1.4142135623730951\r\n1.4142135623730951\r\n"; - -exports["examples/python/turing(0)"] = "# -*- coding: utf-8 -*-\nclass Ctnr():\n\tdef __init__(self):self.dict = dict();self.length = 0;self.it = -1;\n\tdef push(self,*args):\n\t\tfor arg in args:\n\t\t\tself.dict[str(self.length)]=arg; self.length+=1\n\tdef __getitem__(self,i):\n\t\ttry: return self.dict[str(i)]\n\t\texcept: return None\n\tdef __setitem__(self,i,x):\n\t\tself.dict[str(i)]=x\n\t\tinti = None\n\t\ttry:\n\t\t\tinti = int(i)\n\t\t\tif (abs(inti - float(i))>0.0001): inti=None\n\t\texcept: pass\n\t\tif (inti != None):\n\t\t\tself.length=inti+1\n\t\t\tfor j in range(0,self.length):\n\t\t\t\ttry: self.dict[str(j)]\n\t\t\t\texcept: self.dict[str(j)]=None\n\tdef slice(self,i):\n\t\tret = Ctnr();\n\t\tfor i in range(i,self.length): ret.push(self[i])\n\t\treturn ret\n\tdef concat(self,other):\n\t\tret = Ctnr();\n\t\tfor i in range(0,self.length): ret.push(self[i])\n\t\tfor i in range(0,other.length): ret.push(other[i])\n\t\treturn ret\n\tdef __str__(self):\n\t\tif (len(self.dict.keys())==self.length):\n\t\t\tret = \"[\"\n\t\t\tfor k in range(0,self.length):\n\t\t\t\tv = self[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"]\"\n\t\t\treturn ret;\n\t\telse:\n\t\t\tret = \"{\"\n\t\t\tfor k in self.dict.keys():\n\t\t\t\tret += str(k)+\":\"\n\t\t\t\tv = self.dict[k]\n\t\t\t\tif (isinstance(v,Ctnr)): ret += v.__str__()\n\t\t\t\telse: ret += str(v)\n\t\t\t\tret+=\",\"\n\t\t\tret += \"}\"\n\t\t\treturn ret;\n\tdef __repr__(self):\n\t\treturn self.__str__()\n\tdef __iter__(self):\n\t\tself.it = -1;\n\t\treturn self\n\tdef __next__(self):\n\t\tself.it += 1\n\t\tif (self.it >= self.length): raise StopIteration()\n\t\treturn self[self.it]\n#####\n圖靈機=lambda _:0\ndef 圖靈機(諸律,始態,終態):\n\t帶=Ctnr()\n\t帶.push(\"白\")\n\t針=1\n\t左疆=1\n\t右疆=1\n\t態=始態\n\t圖靈機畫法=lambda _:0\n\tdef 圖靈機畫法():\n\t\t畫帶=\"\"\n\t\t筆=左疆\n\t\twhile (True):\n\t\t\tif 筆>右疆:\n\t\t\t\tbreak\n\n\t\t\t_ans255=帶[筆-1]\n\t\t\t符=_ans255\n\t\t\tif 針==筆:\n\t\t\t\t_ans256=\"〔\"+符\n\t\t\t\t_ans257=_ans256+\"〕\"\n\t\t\t\t符=_ans257\n\t\t\telse:\n\t\t\t\t_ans258=\"、\"+符\n\t\t\t\t_ans259=_ans258+\"、\"\n\t\t\t\t符=_ans259\n\n\t\t\t_ans260=畫帶+符\n\t\t\t畫帶=_ans260\n\t\t\t_ans261=1+筆\n\t\t\t筆=_ans261\n\n\t\t_ans262=態\n\t\t_ans263=\"《\"\n\t\t_ans264=畫帶\n\t\t_ans265=\"》\"\n\t\tprint(\"\".join([str(_ans262),str(_ans263),str(_ans264),str(_ans265)]))\n\n\t_ans266=圖靈機畫法()\n\twhile (True):\n\t\tfor 律 in 諸律:\n\t\t\t_ans267=律[1-1]\n\t\t\t甲態=_ans267\n\t\t\t_ans268=律[2-1]\n\t\t\t讀符=_ans268\n\t\t\t_ans269=律[3-1]\n\t\t\t乙態=_ans269\n\t\t\t_ans270=律[4-1]\n\t\t\t畫符=_ans270\n\t\t\t_ans271=律[5-1]\n\t\t\t移=_ans271\n\t\t\tif 態==甲態:\n\t\t\t\tif 帶[針-1]==讀符:\n\t\t\t\t\t帶[針-1]=畫符\n\t\t\t\t\t態=乙態\n\t\t\t\t\tif 移==\"左\":\n\t\t\t\t\t\t_ans272=針-1\n\t\t\t\t\t\t針=_ans272\n\n\t\t\t\t\tif 移==\"右\":\n\t\t\t\t\t\t_ans273=針+1\n\t\t\t\t\t\t針=_ans273\n\n\t\t\t\t\tbreak\n\n\n\n\t\tif 針<左疆:\n\t\t\t帶[針-1]=\"白\"\n\t\t\t左疆=針\n\n\t\tif 針>右疆:\n\t\t\t帶[針-1]=\"白\"\n\t\t\t右疆=針\n\n\t\t_ans274=圖靈機畫法()\n\t\tif 態==終態:\n\t\t\tbreak\n\n\n\n製律=lambda _:0\ndef 製律(諸律,甲態,讀符,乙態,畫符,移):\n\t律=Ctnr()\n\t律.push(甲態,讀符,乙態,畫符,移)\n\t諸律.push(律)\n\n_ans275=\"營營河狸。止于樊。\"\nprint(\"\".join([str(_ans275)]))\n諸律=Ctnr()\n陽符=\"墨\"\n陰符=\"白\"\n_ans276=製律(諸律,\"甲\",陰符,\"乙\",陽符,\"右\")\n_ans277=製律(諸律,\"甲\",陽符,\"丙\",陽符,\"左\")\n_ans278=製律(諸律,\"乙\",陰符,\"甲\",陽符,\"左\")\n_ans279=製律(諸律,\"乙\",陽符,\"乙\",陽符,\"右\")\n_ans280=製律(諸律,\"丙\",陰符,\"乙\",陽符,\"左\")\n_ans281=製律(諸律,\"丙\",陽符,\"樊\",陽符,\"中\")\n_ans282=圖靈機(諸律,\"甲\",\"樊\")\n"; - -exports["examples/javascript/obj(0)"] = "{\"丙\":\"某甲\",\"丁\":5}\n{\"丙\":\"某甲\"}\n"; - -exports["examples/javascript/quicksort_inplace(0)"] = "true [ 1, 2, 3, 4, 5 ]\n"; - -exports["examples/romanizeIdentifiers/beer(0)"] = "春日宴。\n與君 9 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 8 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 7 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 6 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 5 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 4 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 3 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 2 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n與君 1 杯酒。可以窮歡宴。綠酒一杯歌一遍。\n綠酒千杯腸已爛。\n"; - -exports["examples/romanizeIdentifiers/collatz(0)"] = "[ 12, 6, 3, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 1 ]\n[ 27,\n 82,\n 41,\n 124,\n 62,\n 31,\n 94,\n 47,\n 142,\n 71,\n 214,\n 107,\n 322,\n 161,\n 484,\n 242,\n 121,\n 364,\n 182,\n 91,\n 274,\n 137,\n 412,\n 206,\n 103,\n 310,\n 155,\n 466,\n 233,\n 700,\n 350,\n 175,\n 526,\n 263,\n 790,\n 395,\n 1186,\n 593,\n 1780,\n 890,\n 445,\n 1336,\n 668,\n 334,\n 167,\n 502,\n 251,\n 754,\n 377,\n 1132,\n 566,\n 283,\n 850,\n 425,\n 1276,\n 638,\n 319,\n 958,\n 479,\n 1438,\n 719,\n 2158,\n 1079,\n 3238,\n 1619,\n 4858,\n 2429,\n 7288,\n 3644,\n 1822,\n 911,\n 2734,\n 1367,\n 4102,\n 2051,\n 6154,\n 3077,\n 9232,\n 4616,\n 2308,\n 1154,\n 577,\n 1732,\n 866,\n 433,\n 1300,\n 650,\n 325,\n 976,\n 488,\n 244,\n 122,\n 61,\n 184,\n 92,\n 46,\n 23,\n 70,\n 35,\n 106,\n ... 13 more items ]\n"; - -exports["examples/romanizeIdentifiers/collatz2(0)"] = "20\n46\n49\n8\n"; - -exports["examples/romanizeIdentifiers/euclidean(0)"] = "21\n1\ntrue\nfalse\n1\n4\n12\n8\n128\n"; - -exports["examples/romanizeIdentifiers/factorial(0)"] = "120\n"; - -exports["examples/romanizeIdentifiers/fibonacci(0)"] = "144\n"; - -exports["examples/romanizeIdentifiers/fibonacci2(0)"] = "55\n"; - -exports["examples/romanizeIdentifiers/fizzbuzz(0)"] = "1\n2\n黃河流水鳴濺濺。\n4\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n7\n8\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n11\n黃河流水鳴濺濺。\n13\n14\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n16\n17\n黃河流水鳴濺濺。\n19\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n22\n23\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n26\n黃河流水鳴濺濺。\n28\n29\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n31\n32\n黃河流水鳴濺濺。\n34\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n37\n38\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n41\n黃河流水鳴濺濺。\n43\n44\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n46\n47\n黃河流水鳴濺濺。\n49\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n52\n53\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n56\n黃河流水鳴濺濺。\n58\n59\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n61\n62\n黃河流水鳴濺濺。\n64\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n67\n68\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n71\n黃河流水鳴濺濺。\n73\n74\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n76\n77\n黃河流水鳴濺濺。\n79\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n82\n83\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n86\n黃河流水鳴濺濺。\n88\n89\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n91\n92\n黃河流水鳴濺濺。\n94\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n97\n98\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n"; +exports["examples/romanizeIdentifiers/fizzbuzz(0)"] = "一\n二\n黃河流水鳴濺濺。\n四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n七\n八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n一十一\n黃河流水鳴濺濺。\n一十三\n一十四\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n一十六\n一十七\n黃河流水鳴濺濺。\n一十九\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n二十二\n二十三\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n二十六\n黃河流水鳴濺濺。\n二十八\n二十九\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n三十一\n三十二\n黃河流水鳴濺濺。\n三十四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n三十七\n三十八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n四十一\n黃河流水鳴濺濺。\n四十三\n四十四\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n四十六\n四十七\n黃河流水鳴濺濺。\n四十九\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n五十二\n五十三\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n五十六\n黃河流水鳴濺濺。\n五十八\n五十九\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n六十一\n六十二\n黃河流水鳴濺濺。\n六十四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n六十七\n六十八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n七十一\n黃河流水鳴濺濺。\n七十三\n七十四\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n七十六\n七十七\n黃河流水鳴濺濺。\n七十九\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n八十二\n八十三\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n八十六\n黃河流水鳴濺濺。\n八十八\n八十九\n黃河流水鳴濺濺。燕山胡騎鳴啾啾。\n九十一\n九十二\n黃河流水鳴濺濺。\n九十四\n燕山胡騎鳴啾啾。\n黃河流水鳴濺濺。\n九十七\n九十八\n黃河流水鳴濺濺。\n燕山胡騎鳴啾啾。\n"; exports["examples/romanizeIdentifiers/hanoi(0)"] = "〔 甲 〕 盤盤盤盤\n〔 乙 〕 一一一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤盤盤一\n〔 乙 〕 一一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 一一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤盤盤一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤盤一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤一一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 盤盤一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 一一一一\n\n\n〔 甲 〕 盤一一一\n〔 乙 〕 盤盤一一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤一\n〔 丙 〕 盤一一一\n\n\n〔 甲 〕 一一一一\n〔 乙 〕 盤盤盤盤\n〔 丙 〕 一一一一\n\n畢\n"; @@ -274,62 +84,53 @@ exports["examples/romanizeIdentifiers/helloworld(0)"] = "問天地好在。\n"; exports["examples/romanizeIdentifiers/mandelbrot(0)"] = "二二二二三三三三五五五五五五五五五五五五高高高高蔑蔑淼龜龜蠹蔑高高高五五五三三三三三三三三三三三三三三三三三三三二二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘龍淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高淼淼淼龍畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龘淼蔑高高五五五五五三三三三三三三三三三三三三三\n二高高高高蔑蔑蔑淼畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龍蔑高高五五五五五三三三三三三三三三三三三三三\n二五高高高高高蔑蔑淼龍龜丁丁丁丁丁丁龘丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高高五五五五三三三三三三三三三三三三三三三\n二五五五高高高高蔑蔑淼丁蠹龜丁臺龜畫龜丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五高高高淼臺淼淼淼淼龍龍龍臺丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁臺畫蔑高五五五五五三三三三三三三三三三三三三三三\n二三五五五五五五五五高高蔑蔑蔑蔑蔑淼淼龍丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁龜淼蔑高五五五五三三三三三三三三三三三三三三三三\n二二三五五五五五五五五五高高高蔑蔑蔑蔑淼畫丁丁丁丁丁丁丁丁丁丁丁丁丁丁丁淼高五五五五五三三三三三三三三三三三三三三三二\n二二三五五五五五五五五五五五高高高高蔑蔑龍丁蠹龜丁丁丁丁丁丁丁蠹臺龍龍丁蔑高五五五五三三三三三三三三三三三三三三三三二\n二二二三五五五五五五五五五五五高高高高高蔑淼淼淼龍龜丁丁丁丁龜龍淼蔑蔑蔑高五五五五三三三三三三三三三三三三三三三三二二\n二二二三三五五五五五五五五五五五五高高高高高蔑蔑淼龜丁丁丁丁龜蔑蔑蔑高高五五五五三三三三三三三三三三三三三三三三三二二\n二二二二三三三五五五五五五五五五五五高高高高高蔑蔑淼龍臺丁畫淼蔑高高高五五五五三三三三三三三三三三三三三三三三三二二二\n"; -exports["examples/romanizeIdentifiers/mergesort(0)"] = "[ 1, 2, 3, 14, 18 ]\n"; +exports["examples/romanizeIdentifiers/mergesort(0)"] = "一。二。三。一十四。一十八\n"; + +exports["examples/romanizeIdentifiers/misc(0)"] = "問天地好在。\n甲之數 三十 也\n一\n二\n三\n四\n五\n六\n七\n八\n九\n一十\n一十一\n一十二\n一十三\n一十四\n一十五\n一十六\n一十七\n一十八\n一十九\n二十\n二十一\n二十二\n二十三\n二十四\n二十五\n二十六\n二十七\n二十八\n二十九\n三。五。八。二十。三十五。七百\n"; -exports["examples/romanizeIdentifiers/misc(0)"] = "問天地好在。\n甲之數 30 也\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n[ 3, 5, 8, 20, 35, 700 ]\n"; +exports["examples/romanizeIdentifiers/modinv(0)"] = "一\n"; -exports["examples/romanizeIdentifiers/modinv(0)"] = "1\n"; +exports["examples/romanizeIdentifiers/multiplication_table(0)"] = "一 一 得 一\n一 二 得 二\n二 二 得 四\n一 三 得 三\n二 三 得 六\n三 三 得 九\n一 四 得 四\n二 四 得 八\n三 四 一十二\n四 四 一十六\n一 五 得 五\n二 五 一十\n三 五 一十五\n四 五 二十\n五 五 二十五\n一 六 得 六\n二 六 一十二\n三 六 一十八\n四 六 二十四\n五 六 三十\n六 六 三十六\n一 七 得 七\n二 七 一十四\n三 七 二十一\n四 七 二十八\n五 七 三十五\n六 七 四十二\n七 七 四十九\n一 八 得 八\n二 八 一十六\n三 八 二十四\n四 八 三十二\n五 八 四十\n六 八 四十八\n七 八 五十六\n八 八 六十四\n一 九 得 九\n二 九 一十八\n三 九 二十七\n四 九 三十六\n五 九 四十五\n六 九 五十四\n七 九 六十三\n八 九 七十二\n九 九 八十一\n"; + +exports["examples/romanizeIdentifiers/nested_fun(0)"] = ""; exports["examples/romanizeIdentifiers/obj(0)"] = "{\"丙\":\"某甲\",\"丁\":5}\n{\"丙\":\"某甲\"}\n"; -exports["examples/romanizeIdentifiers/pi_leibniz(0)"] = "3.232315809405594\n3.127307667981234\n3.143967947151556\n3.1408452695387057\n3.141601386070187\n"; +exports["examples/romanizeIdentifiers/pi_leibniz(0)"] = "三又二分三釐二毫三絲一忽五微八纖零九塵四埃零六漠\n三又一分二釐七毫三絲零七微六纖六沙七塵九埃八渺一漠\n三又一分四釐三毫九絲六忽七微九纖四沙七塵一埃五渺二漠\n三又一分四釐零八絲四忽五微二纖六沙九塵五埃三渺九漠\n三又一分四釐一毫六絲零一微三纖八沙六塵零七渺\n"; -exports["examples/romanizeIdentifiers/quicksort(0)"] = "[ 3, 5, 8, 20, 35, 700 ]\n"; +exports["examples/romanizeIdentifiers/quicksort(0)"] = "三。五。八。二十。三十五。七百\n"; -exports["examples/romanizeIdentifiers/quicksort_inplace(0)"] = "true [ 1, 2, 3, 4, 5 ]\n"; +exports["examples/romanizeIdentifiers/quicksort_inplace(0)"] = "陽 一。二。三。四。五\n"; exports["examples/romanizeIdentifiers/quine(0)"] = "吾有一術。名之曰「自己複製」。欲行是術。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。曰星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。曰「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。\n"; exports["examples/romanizeIdentifiers/quine2(0)"] = "吾有一術。名之曰星甲自己複製星乙。星丁欲行是術。是術曰。星丁星丁吾有一術。名之曰星甲置換星乙。星丁欲行是術。必先得三數。星丁曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。星丁星丙吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。星丁星丙吾有一數。曰二。名之曰星甲未来星乙。星丁星丙吾有一數。曰陽。名之曰星甲実行条件星乙。星丁星丙凡星甲文字列星乙中之星甲文字星乙。星丁星丙星丙星丙若星甲実行条件星乙者。星丁星丙星丙星丙星丙若星甲文字星乙等於星甲星甲星星乙星乙星乙中無陰乎星甲文字列星乙之未来等於星甲置換対象星乙者。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲置換先星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙星丙昔之星甲実行条件星乙者。今陰是。星丁星丙星丙星丙星丙若非。星丁星丙星丙星丙星丙星丙加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。星丁星丙星丙星丙星丙也。星丁星丙星丙星丙若非。星丁星丙星丙星丙星丙昔之星甲実行条件星乙者。今陽是。星丁星丙星丙星丙也。星丁星丙星丙加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。星丁星丙云云。星丁星丙乃得星甲返品星乙。星丁是謂星甲置換星乙之術也。星丁星丁吾有一言。曰String.fromCharCode名之曰星甲函数星乙。星丁施星甲函数星乙於一萬二千三百。昔之星甲始括弧星乙者。今其是矣。星丁施星甲函数星乙於一萬二千三百零一。昔之星甲終括弧星乙者。今其是矣。星丁施星甲函数星乙於三十二。昔之星甲空白星乙者。今其是矣。星丁加星甲空白星乙以星甲空白星乙。昔之星甲空白星乙者。今其是矣。星丁施星甲函数星乙於十。昔之星甲改行星乙者。今其是矣。星丁吾有一言。曰星甲星甲星戊星乙星乙。名之曰星甲原文星乙。星丁吾有一言。曰星甲星甲星乙星乙。名之曰星甲結果星乙。星丁施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終括弧星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲空白星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲丁星乙星乙。於星甲改行星乙。昔之星甲結果星乙者。今其是矣。星丁施星甲置換星乙於星甲結果星乙。於星甲星甲戊星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。星丁吾有一言。曰星甲結果星乙。書之。星丁星丁是謂星甲自己複製星乙之術也。星丁施星甲自己複製星乙。\n"; -exports["examples/romanizeIdentifiers/sieve(0)"] = "[ 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97 ]\n"; - -exports["examples/romanizeIdentifiers/sqrt_newton(0)"] = "1.4166666666666667\n1.4142156862745099\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n1.4142135623730951\n"; - -exports["examples/romanizeIdentifiers/turing(0)"] = "營營河狸。止于樊。\n甲 《 〔白〕 》\n乙 《 、墨、〔白〕 》\n甲 《 〔墨〕、墨、 》\n丙 《 〔白〕、墨、、墨、 》\n乙 《 〔白〕、墨、、墨、、墨、 》\n甲 《 〔白〕、墨、、墨、、墨、、墨、 》\n乙 《 、墨、〔墨〕、墨、、墨、、墨、 》\n乙 《 、墨、、墨、〔墨〕、墨、、墨、 》\n乙 《 、墨、、墨、、墨、〔墨〕、墨、 》\n乙 《 、墨、、墨、、墨、、墨、〔墨〕 》\n乙 《 、墨、、墨、、墨、、墨、、墨、〔白〕 》\n甲 《 、墨、、墨、、墨、、墨、〔墨〕、墨、 》\n丙 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n樊 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n"; +exports["examples/romanizeIdentifiers/selectionsort(0)"] = "五。八。九。一十。五十五。三百。一千\n"; -exports["examples/javascript/multiplication_table(0)"] = "1 1 '得' 1\n1 2 '得' 2\n2 2 '得' 4\n1 3 '得' 3\n2 3 '得' 6\n3 3 '得' 9\n1 4 '得' 4\n2 4 '得' 8\n3 4 12\n4 4 16\n1 5 '得' 5\n2 5 10\n3 5 15\n4 5 20\n5 5 25\n1 6 '得' 6\n2 6 12\n3 6 18\n4 6 24\n5 6 30\n6 6 36\n1 7 '得' 7\n2 7 14\n3 7 21\n4 7 28\n5 7 35\n6 7 42\n7 7 49\n1 8 '得' 8\n2 8 16\n3 8 24\n4 8 32\n5 8 40\n6 8 48\n7 8 56\n8 8 64\n1 9 '得' 9\n2 9 18\n3 9 27\n4 9 36\n5 9 45\n6 9 54\n7 9 63\n8 9 72\n9 9 81\n"; +exports["examples/romanizeIdentifiers/sieve(0)"] = "二。三。五。七。一十一。一十三。一十七。一十九。二十三。二十九。三十一。三十七。四十一。四十三。四十七。五十三。五十九。六十一。六十七。七十一。七十三。七十九。八十三。八十九。九十七\n"; -exports["examples/javascript/selectionsort(0)"] = "[ 5, 8, 9, 10, 55, 300, 1000 ]\n"; +exports["examples/romanizeIdentifiers/sqrt_newton(0)"] = "一又四分一釐六毫六絲六忽六微六纖六沙六塵六埃六渺七漠\n一又四分一釐四毫二絲一忽五微六纖八沙六塵二埃七渺五漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n一又四分一釐四毫二絲一忽三微五纖六沙二塵三埃七渺三漠\n"; -exports["examples/romanizeIdentifiers/multiplication_table(0)"] = "1 1 '得' 1\n1 2 '得' 2\n2 2 '得' 4\n1 3 '得' 3\n2 3 '得' 6\n3 3 '得' 9\n1 4 '得' 4\n2 4 '得' 8\n3 4 12\n4 4 16\n1 5 '得' 5\n2 5 10\n3 5 15\n4 5 20\n5 5 25\n1 6 '得' 6\n2 6 12\n3 6 18\n4 6 24\n5 6 30\n6 6 36\n1 7 '得' 7\n2 7 14\n3 7 21\n4 7 28\n5 7 35\n6 7 42\n7 7 49\n1 8 '得' 8\n2 8 16\n3 8 24\n4 8 32\n5 8 40\n6 8 48\n7 8 56\n8 8 64\n1 9 '得' 9\n2 9 18\n3 9 27\n4 9 36\n5 9 45\n6 9 54\n7 9 63\n8 9 72\n9 9 81\n"; +exports["examples/romanizeIdentifiers/test(0)"] = "三\n"; -exports["examples/romanizeIdentifiers/selectionsort(0)"] = "[ 5, 8, 9, 10, 55, 300, 1000 ]\n"; - -exports["examples/javascript/import(0)"] = "問天地好在。\n-1\n0.2219365059863776\n0.8670741952955723\n0.4566241691354662\n0.3282580836676061\n0.7879422304686159\n0.7689291713759303\n0.32359148492105305\n0.1034216065891087\n0.6936461653094739\n0.5909193623811007\n3\n3\n4\n3.141592653589793\n1\n"; - -exports["examples/romanizeIdentifiers/import(0)"] = "問天地好在。\n-1\n0.2219365059863776\n0.8670741952955723\n0.4566241691354662\n0.3282580836676061\n0.7879422304686159\n0.7689291713759303\n0.32359148492105305\n0.1034216065891087\n0.6936461653094739\n0.5909193623811007\n3\n3\n4\n3.141592653589793\n1\n"; - -exports["examples/javascript/nested_fun(0)"] = ""; - -exports["examples/romanizeIdentifiers/nested_fun(0)"] = ""; - -exports["examples/javascript/eightqueens(0)"] = "[ 1, 5, 8, 6, 3, 7, 2, 4 ]\n[ 1, 6, 8, 3, 7, 4, 2, 5 ]\n[ 1, 7, 4, 6, 8, 2, 5, 3 ]\n[ 1, 7, 5, 8, 2, 4, 6, 3 ]\n[ 2, 4, 6, 8, 3, 1, 7, 5 ]\n[ 2, 5, 7, 1, 3, 8, 6, 4 ]\n[ 2, 5, 7, 4, 1, 8, 6, 3 ]\n[ 2, 6, 1, 7, 4, 8, 3, 5 ]\n[ 2, 6, 8, 3, 1, 4, 7, 5 ]\n[ 2, 7, 3, 6, 8, 5, 1, 4 ]\n[ 2, 7, 5, 8, 1, 4, 6, 3 ]\n[ 2, 8, 6, 1, 3, 5, 7, 4 ]\n[ 3, 1, 7, 5, 8, 2, 4, 6 ]\n[ 3, 5, 2, 8, 1, 7, 4, 6 ]\n[ 3, 5, 2, 8, 6, 4, 7, 1 ]\n[ 3, 5, 7, 1, 4, 2, 8, 6 ]\n[ 3, 5, 8, 4, 1, 7, 2, 6 ]\n[ 3, 6, 2, 5, 8, 1, 7, 4 ]\n[ 3, 6, 2, 7, 1, 4, 8, 5 ]\n[ 3, 6, 2, 7, 5, 1, 8, 4 ]\n[ 3, 6, 4, 1, 8, 5, 7, 2 ]\n[ 3, 6, 4, 2, 8, 5, 7, 1 ]\n[ 3, 6, 8, 1, 4, 7, 5, 2 ]\n[ 3, 6, 8, 1, 5, 7, 2, 4 ]\n[ 3, 6, 8, 2, 4, 1, 7, 5 ]\n[ 3, 7, 2, 8, 5, 1, 4, 6 ]\n[ 3, 7, 2, 8, 6, 4, 1, 5 ]\n[ 3, 8, 4, 7, 1, 6, 2, 5 ]\n[ 4, 1, 5, 8, 2, 7, 3, 6 ]\n[ 4, 1, 5, 8, 6, 3, 7, 2 ]\n[ 4, 2, 5, 8, 6, 1, 3, 7 ]\n[ 4, 2, 7, 3, 6, 8, 1, 5 ]\n[ 4, 2, 7, 3, 6, 8, 5, 1 ]\n[ 4, 2, 7, 5, 1, 8, 6, 3 ]\n[ 4, 2, 8, 5, 7, 1, 3, 6 ]\n[ 4, 2, 8, 6, 1, 3, 5, 7 ]\n[ 4, 6, 1, 5, 2, 8, 3, 7 ]\n[ 4, 6, 8, 2, 7, 1, 3, 5 ]\n[ 4, 6, 8, 3, 1, 7, 5, 2 ]\n[ 4, 7, 1, 8, 5, 2, 6, 3 ]\n[ 4, 7, 3, 8, 2, 5, 1, 6 ]\n[ 4, 7, 5, 2, 6, 1, 3, 8 ]\n[ 4, 7, 5, 3, 1, 6, 8, 2 ]\n[ 4, 8, 1, 3, 6, 2, 7, 5 ]\n[ 4, 8, 1, 5, 7, 2, 6, 3 ]\n[ 4, 8, 5, 3, 1, 7, 2, 6 ]\n[ 5, 1, 4, 6, 8, 2, 7, 3 ]\n[ 5, 1, 8, 4, 2, 7, 3, 6 ]\n[ 5, 1, 8, 6, 3, 7, 2, 4 ]\n[ 5, 2, 4, 6, 8, 3, 1, 7 ]\n[ 5, 2, 4, 7, 3, 8, 6, 1 ]\n[ 5, 2, 6, 1, 7, 4, 8, 3 ]\n[ 5, 2, 8, 1, 4, 7, 3, 6 ]\n[ 5, 3, 1, 6, 8, 2, 4, 7 ]\n[ 5, 3, 1, 7, 2, 8, 6, 4 ]\n[ 5, 3, 8, 4, 7, 1, 6, 2 ]\n[ 5, 7, 1, 3, 8, 6, 4, 2 ]\n[ 5, 7, 1, 4, 2, 8, 6, 3 ]\n[ 5, 7, 2, 4, 8, 1, 3, 6 ]\n[ 5, 7, 2, 6, 3, 1, 4, 8 ]\n[ 5, 7, 2, 6, 3, 1, 8, 4 ]\n[ 5, 7, 4, 1, 3, 8, 6, 2 ]\n[ 5, 8, 4, 1, 3, 6, 2, 7 ]\n[ 5, 8, 4, 1, 7, 2, 6, 3 ]\n[ 6, 1, 5, 2, 8, 3, 7, 4 ]\n[ 6, 2, 7, 1, 3, 5, 8, 4 ]\n[ 6, 2, 7, 1, 4, 8, 5, 3 ]\n[ 6, 3, 1, 7, 5, 8, 2, 4 ]\n[ 6, 3, 1, 8, 4, 2, 7, 5 ]\n[ 6, 3, 1, 8, 5, 2, 4, 7 ]\n[ 6, 3, 5, 7, 1, 4, 2, 8 ]\n[ 6, 3, 5, 8, 1, 4, 2, 7 ]\n[ 6, 3, 7, 2, 4, 8, 1, 5 ]\n[ 6, 3, 7, 2, 8, 5, 1, 4 ]\n[ 6, 3, 7, 4, 1, 8, 2, 5 ]\n[ 6, 4, 1, 5, 8, 2, 7, 3 ]\n[ 6, 4, 2, 8, 5, 7, 1, 3 ]\n[ 6, 4, 7, 1, 3, 5, 2, 8 ]\n[ 6, 4, 7, 1, 8, 2, 5, 3 ]\n[ 6, 8, 2, 4, 1, 7, 5, 3 ]\n[ 7, 1, 3, 8, 6, 4, 2, 5 ]\n[ 7, 2, 4, 1, 8, 5, 3, 6 ]\n[ 7, 2, 6, 3, 1, 4, 8, 5 ]\n[ 7, 3, 1, 6, 8, 5, 2, 4 ]\n[ 7, 3, 8, 2, 5, 1, 6, 4 ]\n[ 7, 4, 2, 5, 8, 1, 3, 6 ]\n[ 7, 4, 2, 8, 6, 1, 3, 5 ]\n[ 7, 5, 3, 1, 6, 8, 2, 4 ]\n[ 8, 2, 4, 1, 7, 5, 3, 6 ]\n[ 8, 2, 5, 3, 1, 7, 4, 6 ]\n[ 8, 3, 1, 6, 2, 5, 7, 4 ]\n[ 8, 4, 1, 3, 6, 2, 7, 5 ]\n"; +exports["examples/romanizeIdentifiers/try(0)"] = "嗚呼哀哉。伏维尚飨\n事不關心\n"; -exports["examples/romanizeIdentifiers/eightqueens(0)"] = "[ 1, 5, 8, 6, 3, 7, 2, 4 ]\n[ 1, 6, 8, 3, 7, 4, 2, 5 ]\n[ 1, 7, 4, 6, 8, 2, 5, 3 ]\n[ 1, 7, 5, 8, 2, 4, 6, 3 ]\n[ 2, 4, 6, 8, 3, 1, 7, 5 ]\n[ 2, 5, 7, 1, 3, 8, 6, 4 ]\n[ 2, 5, 7, 4, 1, 8, 6, 3 ]\n[ 2, 6, 1, 7, 4, 8, 3, 5 ]\n[ 2, 6, 8, 3, 1, 4, 7, 5 ]\n[ 2, 7, 3, 6, 8, 5, 1, 4 ]\n[ 2, 7, 5, 8, 1, 4, 6, 3 ]\n[ 2, 8, 6, 1, 3, 5, 7, 4 ]\n[ 3, 1, 7, 5, 8, 2, 4, 6 ]\n[ 3, 5, 2, 8, 1, 7, 4, 6 ]\n[ 3, 5, 2, 8, 6, 4, 7, 1 ]\n[ 3, 5, 7, 1, 4, 2, 8, 6 ]\n[ 3, 5, 8, 4, 1, 7, 2, 6 ]\n[ 3, 6, 2, 5, 8, 1, 7, 4 ]\n[ 3, 6, 2, 7, 1, 4, 8, 5 ]\n[ 3, 6, 2, 7, 5, 1, 8, 4 ]\n[ 3, 6, 4, 1, 8, 5, 7, 2 ]\n[ 3, 6, 4, 2, 8, 5, 7, 1 ]\n[ 3, 6, 8, 1, 4, 7, 5, 2 ]\n[ 3, 6, 8, 1, 5, 7, 2, 4 ]\n[ 3, 6, 8, 2, 4, 1, 7, 5 ]\n[ 3, 7, 2, 8, 5, 1, 4, 6 ]\n[ 3, 7, 2, 8, 6, 4, 1, 5 ]\n[ 3, 8, 4, 7, 1, 6, 2, 5 ]\n[ 4, 1, 5, 8, 2, 7, 3, 6 ]\n[ 4, 1, 5, 8, 6, 3, 7, 2 ]\n[ 4, 2, 5, 8, 6, 1, 3, 7 ]\n[ 4, 2, 7, 3, 6, 8, 1, 5 ]\n[ 4, 2, 7, 3, 6, 8, 5, 1 ]\n[ 4, 2, 7, 5, 1, 8, 6, 3 ]\n[ 4, 2, 8, 5, 7, 1, 3, 6 ]\n[ 4, 2, 8, 6, 1, 3, 5, 7 ]\n[ 4, 6, 1, 5, 2, 8, 3, 7 ]\n[ 4, 6, 8, 2, 7, 1, 3, 5 ]\n[ 4, 6, 8, 3, 1, 7, 5, 2 ]\n[ 4, 7, 1, 8, 5, 2, 6, 3 ]\n[ 4, 7, 3, 8, 2, 5, 1, 6 ]\n[ 4, 7, 5, 2, 6, 1, 3, 8 ]\n[ 4, 7, 5, 3, 1, 6, 8, 2 ]\n[ 4, 8, 1, 3, 6, 2, 7, 5 ]\n[ 4, 8, 1, 5, 7, 2, 6, 3 ]\n[ 4, 8, 5, 3, 1, 7, 2, 6 ]\n[ 5, 1, 4, 6, 8, 2, 7, 3 ]\n[ 5, 1, 8, 4, 2, 7, 3, 6 ]\n[ 5, 1, 8, 6, 3, 7, 2, 4 ]\n[ 5, 2, 4, 6, 8, 3, 1, 7 ]\n[ 5, 2, 4, 7, 3, 8, 6, 1 ]\n[ 5, 2, 6, 1, 7, 4, 8, 3 ]\n[ 5, 2, 8, 1, 4, 7, 3, 6 ]\n[ 5, 3, 1, 6, 8, 2, 4, 7 ]\n[ 5, 3, 1, 7, 2, 8, 6, 4 ]\n[ 5, 3, 8, 4, 7, 1, 6, 2 ]\n[ 5, 7, 1, 3, 8, 6, 4, 2 ]\n[ 5, 7, 1, 4, 2, 8, 6, 3 ]\n[ 5, 7, 2, 4, 8, 1, 3, 6 ]\n[ 5, 7, 2, 6, 3, 1, 4, 8 ]\n[ 5, 7, 2, 6, 3, 1, 8, 4 ]\n[ 5, 7, 4, 1, 3, 8, 6, 2 ]\n[ 5, 8, 4, 1, 3, 6, 2, 7 ]\n[ 5, 8, 4, 1, 7, 2, 6, 3 ]\n[ 6, 1, 5, 2, 8, 3, 7, 4 ]\n[ 6, 2, 7, 1, 3, 5, 8, 4 ]\n[ 6, 2, 7, 1, 4, 8, 5, 3 ]\n[ 6, 3, 1, 7, 5, 8, 2, 4 ]\n[ 6, 3, 1, 8, 4, 2, 7, 5 ]\n[ 6, 3, 1, 8, 5, 2, 4, 7 ]\n[ 6, 3, 5, 7, 1, 4, 2, 8 ]\n[ 6, 3, 5, 8, 1, 4, 2, 7 ]\n[ 6, 3, 7, 2, 4, 8, 1, 5 ]\n[ 6, 3, 7, 2, 8, 5, 1, 4 ]\n[ 6, 3, 7, 4, 1, 8, 2, 5 ]\n[ 6, 4, 1, 5, 8, 2, 7, 3 ]\n[ 6, 4, 2, 8, 5, 7, 1, 3 ]\n[ 6, 4, 7, 1, 3, 5, 2, 8 ]\n[ 6, 4, 7, 1, 8, 2, 5, 3 ]\n[ 6, 8, 2, 4, 1, 7, 5, 3 ]\n[ 7, 1, 3, 8, 6, 4, 2, 5 ]\n[ 7, 2, 4, 1, 8, 5, 3, 6 ]\n[ 7, 2, 6, 3, 1, 4, 8, 5 ]\n[ 7, 3, 1, 6, 8, 5, 2, 4 ]\n[ 7, 3, 8, 2, 5, 1, 6, 4 ]\n[ 7, 4, 2, 5, 8, 1, 3, 6 ]\n[ 7, 4, 2, 8, 6, 1, 3, 5 ]\n[ 7, 5, 3, 1, 6, 8, 2, 4 ]\n[ 8, 2, 4, 1, 7, 5, 3, 6 ]\n[ 8, 2, 5, 3, 1, 7, 4, 6 ]\n[ 8, 3, 1, 6, 2, 5, 7, 4 ]\n[ 8, 4, 1, 3, 6, 2, 7, 5 ]\n"; +exports["examples/romanizeIdentifiers/turing(0)"] = "營營河狸。止于樊。\n甲 《 〔白〕 》\n乙 《 、墨、〔白〕 》\n甲 《 〔墨〕、墨、 》\n丙 《 〔白〕、墨、、墨、 》\n乙 《 〔白〕、墨、、墨、、墨、 》\n甲 《 〔白〕、墨、、墨、、墨、、墨、 》\n乙 《 、墨、〔墨〕、墨、、墨、、墨、 》\n乙 《 、墨、、墨、〔墨〕、墨、、墨、 》\n乙 《 、墨、、墨、、墨、〔墨〕、墨、 》\n乙 《 、墨、、墨、、墨、、墨、〔墨〕 》\n乙 《 、墨、、墨、、墨、、墨、、墨、〔白〕 》\n甲 《 、墨、、墨、、墨、、墨、〔墨〕、墨、 》\n丙 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n樊 《 、墨、、墨、、墨、〔墨〕、墨、、墨、 》\n"; -exports["examples/javascript/try(0)"] = "嗚呼哀哉。伏维尚飨\n事不關心\n"; +exports["examples/javascript/draw_heart(0)"] = "一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一琉璃梳子撫青絲。一一一一一一一一一一一一一一一一一一一一畫心牽腸癡不癡。一一一一一一一一一\n一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡一一一一一一一一一一一一。琉璃梳子撫青絲。畫心牽腸癡不一一一一一一\n一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一\n一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一\n一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一\n一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一\n一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。一一\n一一一畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一\n一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一\n一一一癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一\n一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一\n一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一\n一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一\n一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一一一\n一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一一\n一一一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一一一\n一一一一一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一\n一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。一一一一一一一\n一一一一一一一一一畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一一一一一一一\n一一一一一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一一一一一\n一一一一一一一一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一一一一一一一\n一一一一一一一一一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一一一一一一一\n一一一一一一一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一畫心牽腸癡不癡。琉璃一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一梳子撫青絲。一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一畫心牽腸一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一癡不一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一癡。一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n\n"; -exports["examples/romanizeIdentifiers/try(0)"] = "嗚呼哀哉。伏维尚飨\n事不關心\n"; +exports["examples/javascript/macro(0)"] = "問天地好在\n二。三。四。五。六。七\n二。三。四。五。六。七\n四。五。六\n四。五。六\n二十一\n二十一\n二十一\n"; -exports["examples/javascript/draw_heart(0)"] = "一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一琉璃梳子撫青絲。一一一一一一一一一一一一一一一一一一一一畫心牽腸癡不癡。一一一一一一一一一\n一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡一一一一一一一一一一一一。琉璃梳子撫青絲。畫心牽腸癡不一一一一一一\n一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一\n一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一\n一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一\n一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一\n一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。一一\n一一一畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一\n一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一\n一一一癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一\n一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一\n一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一\n一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一\n一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一一一\n一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一一\n一一一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一一一\n一一一一一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一\n一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。一一一一一一一\n一一一一一一一一一畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一一一一一一一\n一一一一一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一一一一一\n一一一一一一一一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一一一一一一一\n一一一一一一一一一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一一一一一一一\n一一一一一一一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一畫心牽腸癡不癡。琉璃一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一梳子撫青絲。一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一畫心牽腸一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一癡不一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一癡。一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n\n"; +exports["examples/javascript/pi_liuhui(0)"] = "割圓 三千零七十二 觚。所得圓率者。\n三又一分四釐一毫五絲九忽二微一纖零五塵九埃九渺九漠 也。\n"; exports["examples/romanizeIdentifiers/draw_heart(0)"] = "一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一琉璃梳子撫青絲。一一一一一一一一一一一一一一一一一一一一畫心牽腸癡不癡。一一一一一一一一一\n一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡一一一一一一一一一一一一。琉璃梳子撫青絲。畫心牽腸癡不一一一一一一\n一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一\n一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一\n一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一\n一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一\n一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。一一\n一一一畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一\n一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一\n一一一癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一\n一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一\n一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一\n一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一\n一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一一一\n一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一一\n一一一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青一一一一一\n一一一一一一一絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一\n一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。一一一一一一一\n一一一一一一一一一畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不一一一一一一一一\n一一一一一一一一一一癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一一一一一\n一一一一一一一一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃一一一一一一一一一一一\n一一一一一一一一一一一一一梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。一一一一一一一一一一一一\n一一一一一一一一一一一一一一琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。畫心牽腸癡不癡。琉璃梳子一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一撫青絲。畫心牽腸癡不癡。琉璃梳子撫青絲。畫心一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一牽腸癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。畫心牽腸一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一癡不癡。琉璃梳子撫青絲。一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一畫心牽腸癡不癡。琉璃一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一梳子撫青絲。一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一畫心牽腸一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一癡不一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一癡。一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一\n\n"; -exports["examples/javascript/macro(0)"] = "問天地好在\n[ 2, 3, 4, 5, 6, 7 ]\n[ 2, 3, 4, 5, 6, 7 ]\n[ 4, 5, 6 ]\n[ 4, 5, 6 ]\n21\n21\n21\n"; +exports["examples/romanizeIdentifiers/macro(0)"] = "問天地好在\n二。三。四。五。六。七\n二。三。四。五。六。七\n四。五。六\n四。五。六\n二十一\n二十一\n二十一\n"; + +exports["examples/romanizeIdentifiers/pi_liuhui(0)"] = "割圓 三千零七十二 觚。所得圓率者。\n三又一分四釐一毫五絲九忽二微一纖零五塵九埃九渺九漠 也。\n"; -exports["examples/javascript/pi_liuhui(0)"] = "割圓 3072 觚。所得圓率者。\n3.1415921059992717 '也。'\n"; +exports["examples/javascript/import(0)"] = "問天地好在。\n負一\n二分二釐一毫九絲三忽六微五纖零五塵九埃八渺六漠\n八分六釐七毫零七忽四微一纖九沙五塵二埃九渺六漠\n四分五釐六毫六絲二忽四微一纖六沙九塵一埃三渺五漠\n三分二釐八毫二絲五忽八微零八沙三塵六埃六渺八漠\n七分八釐七毫九絲四忽二微二纖三沙零四埃六渺九漠\n七分六釐八毫九絲二忽九微一纖七沙一塵三埃七渺六漠\n三分二釐三毫五絲九忽一微四纖八沙四塵九埃二渺一漠\n一分零三毫四絲二忽一微六纖零六塵五埃八渺九漠\n六分九釐三毫六絲四忽六微一纖六沙五塵三埃零九漠\n五分九釐零九絲一忽九微三纖六沙二塵三埃八渺一漠\n三\n三\n四\n三又一分四釐一毫五絲九忽二微六纖五沙三塵五埃九渺\n一\n"; -exports["examples/romanizeIdentifiers/macro(0)"] = "問天地好在\n[ 2, 3, 4, 5, 6, 7 ]\n[ 2, 3, 4, 5, 6, 7 ]\n[ 4, 5, 6 ]\n[ 4, 5, 6 ]\n21\n21\n21\n"; +exports["examples/romanizeIdentifiers/import(0)"] = "問天地好在。\n負一\n二分二釐一毫九絲三忽六微五纖零五塵九埃八渺六漠\n八分六釐七毫零七忽四微一纖九沙五塵二埃九渺六漠\n四分五釐六毫六絲二忽四微一纖六沙九塵一埃三渺五漠\n三分二釐八毫二絲五忽八微零八沙三塵六埃六渺八漠\n七分八釐七毫九絲四忽二微二纖三沙零四埃六渺九漠\n七分六釐八毫九絲二忽九微一纖七沙一塵三埃七渺六漠\n三分二釐三毫五絲九忽一微四纖八沙四塵九埃二渺一漠\n一分零三毫四絲二忽一微六纖零六塵五埃八渺九漠\n六分九釐三毫六絲四忽六微一纖六沙五塵三埃零九漠\n五分九釐零九絲一忽九微三纖六沙二塵三埃八渺一漠\n三\n三\n四\n三又一分四釐一毫五絲九忽二微六纖五沙三塵五埃九渺\n一\n"; -exports["examples/romanizeIdentifiers/pi_liuhui(0)"] = "割圓 3072 觚。所得圓率者。\n3.1415921059992717 '也。'\n"; diff --git a/test/examples.test.js b/test/examples.test.js index dbd7e7b2..b280a674 100644 --- a/test/examples.test.js +++ b/test/examples.test.js @@ -1,9 +1,11 @@ var fs = require("fs-extra"); var path = require("path"); -var parser = require("../dist/core/index.min.js"); +var utils = require("../tools/utils"); var execSync = require("child_process").execSync; var { expect } = require("chai"); +var { compile, evalCompiled } = require("../src/parser"); +var lib = utils.loadlib(); const exampleDir = path.resolve(__dirname, "../examples/"); const outputDir = path.resolve(__dirname, "../test/temp/examples/"); const python = getPythonExecutable(); @@ -26,29 +28,36 @@ function getPythonExecutable() { return undefined; } +function readOtherExample(x) { + console.log(x); + return fs + .readFileSync(path.resolve(__dirname, "../examples/" + x + ".wy"), "utf-8") + .toString(); +} + function runExample(lang, name, options = {}) { - var txt = fs.readFileSync(path.join(exampleDir, name + ".wy")).toString(); + var code = fs + .readFileSync(path.join(exampleDir, name + ".wy"), "utf-8") + .toString(); - var compiled = parser.compile(lang, txt, { + var compiled = compile(lang, code, { logCallback: () => {}, + reader: readOtherExample, + lib: lib, ...options }); - // expect(compiled).to.matchSnapshot(); - const filename = `${outputDir}${name}.${lang}`; - fs.writeFileSync(filename, compiled, "utf-8"); if (ignoreExamples.includes(name)) return; - let output = undefined; - if (lang == "py") { - output = execSync(`${python} ${filename}`, { - encoding: "utf-8" - }).toString(); - } else if (lang == "js") { - output = execSync(`node ${filename}`, { - encoding: "utf-8" - }).toString(); - } + let output = ""; + + evalCompiled(compiled, { + scoped: true, + lang, + output: (...args) => (output += args.join(" ") + "\n"), + ...options + }); + expect(output).to.matchSnapshot(); } diff --git a/tools/utils.js b/tools/utils.js index 56939f07..6773102b 100644 --- a/tools/utils.js +++ b/tools/utils.js @@ -1,4 +1,5 @@ const fs = require("fs"); +const path = require("path"); var execSync = require("child_process").execSync; const catsrcIgnore = "/* wenyan-catsrc-ignore */"; @@ -33,14 +34,15 @@ function catsrc() { return s; } -function loadlib(pth = "../lib/") { +function loadlib(libDir = path.resolve(__dirname, "../lib/")) { var lib = {}; - var srcs = fs.readdirSync(pth); + var srcs = fs.readdirSync(libDir); for (var i = 0; i < srcs.length; i++) { + const subPath = path.join(libDir, srcs[i]); if (srcs[i].endsWith(".wy")) { - lib[srcs[i].split(".")[0]] = fs.readFileSync(pth + srcs[i]).toString(); - } else if (fs.lstatSync(pth + srcs[i]).isDirectory()) { - lib[srcs[i]] = loadlib((path = pth + srcs[i] + "/")); + lib[srcs[i].split(".")[0]] = fs.readFileSync(subPath).toString(); + } else if (fs.lstatSync(subPath).isDirectory()) { + lib[srcs[i]] = loadlib(subPath); } } return lib; From 5b3712cac2efe2a4f400ae5bdd08494a88168264 Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 11:18:52 +0800 Subject: [PATCH 25/28] feat: compile api --- src/macro.js | 4 ++-- src/parser.js | 22 ++++++++++++++++++---- tools/make_ide.js | 5 +++-- tools/make_site.js | 9 ++++++--- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/macro.js b/src/macro.js index 531b5f38..aed8ea2e 100644 --- a/src/macro.js +++ b/src/macro.js @@ -1,4 +1,4 @@ -function extractMacros(lang, txt, { lib, reader }) { +function extractMacros(txt, { lib, reader, lang }) { function getImports() { var imps = []; for (var i = 0; i < txt.length; i++) { @@ -108,7 +108,7 @@ function extractMacros(lang, txt, { lib, reader }) { } else { isrc = reader(imports[i]); } - macros = macros.concat(extractMacros(lang, isrc, { lib, reader })); + macros = macros.concat(extractMacros(isrc, { lib, reader, lang })); } return macros; } diff --git a/src/parser.js b/src/parser.js index 1310d502..c09a8633 100644 --- a/src/parser.js +++ b/src/parser.js @@ -653,8 +653,21 @@ function defaultReader(x) { } } -function compile(lang, txt, options = {}) { +function compile(arg1, arg2, arg3) { + let options = {}; + let txt = ""; + + if (typeof arg2 === "string") { + // backward compatible + txt = arg2; + options = { ...arg3, lang: arg1 }; + } else { + txt = arg1; + options = arg2; + } + const { + lang = "js", romanizeIdentifiers = "none", resetVarCnt, logCallback = x => @@ -695,7 +708,7 @@ function compile(lang, txt, options = {}) { return 0; } - var macros = extractMacros(lang, txt, { lib, reader }); + var macros = extractMacros(txt, { lib, reader, lang }); txt = expandMacros(txt, macros); logCallback("\n\n=== [PASS 0] EXPAND-MACROS ==="); @@ -743,7 +756,8 @@ function compile(lang, txt, options = {}) { targ = mwrapper( imports[i], - compile(lang, isrc, { + compile(isrc, { + lang, romanizeIdentifiers, resetVarCnt: false, logCallback, @@ -816,7 +830,7 @@ function evalCompiled(compiledCode, options = {}) { function execute(source, options = {}) { const { lang = "js" } = options; isLangSupportedForEval(lang); - const compiled = compile(lang, source, options); + const compiled = compile(source, options); evalCompiled(compiled, options); } diff --git a/tools/make_ide.js b/tools/make_ide.js index f210a541..c143f52a 100644 --- a/tools/make_ide.js +++ b/tools/make_ide.js @@ -143,10 +143,11 @@ function main() { function run() { highlightCode(); document.getElementById("out").innerText = ""; - var code = compile("js", ed.innerText, { + var code = compile(ed.innerText, { + lang: "js", romanizeIdentifiers: selr.value, resetVarCnt: true, - errorCallback: log2div, + errorCallback: (...args) => (outdiv.innerText += args.join(" ") + "\n"), lib: STDLIB, reader: x => prgms[x] }); diff --git a/tools/make_site.js b/tools/make_site.js index d91a0c05..b0d5de52 100644 --- a/tools/make_site.js +++ b/tools/make_site.js @@ -40,7 +40,8 @@ function main() { highlight([ed]); out.innerText = ""; var hasError = false; - var code = compile("js", ed.innerText, { + var code = compile(ed.innerText, { + lang: "js", romanizeIdentifiers: "none", errorCallback: function(x) { hasError = true; @@ -50,13 +51,15 @@ function main() { if (i == 0) { document.getElementById("js").innerText = "// JavaScript\n" + js_beautify(code); - var py = compile("py", ed.innerText, { + var py = compile(ed.innerText, { + lang: "py", romanizeIdentifiers: "none", errorCallback: () => 0 }); document.getElementById("py").innerText = "# Python\n" + py.split("#####\n")[1]; - var rb = compile("rb", ed.innerText, { + var rb = compile(ed.innerText, { + lang: "rb", romanizeIdentifiers: "none", errorCallback: () => 0 }); From 62b0a39e193d7668b2a814e113db918060a38396 Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 11:23:26 +0800 Subject: [PATCH 26/28] feat: outputHanzi option for ide --- src/parser.js | 10 ++++------ tools/make_ide.js | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/parser.js b/src/parser.js index c09a8633..943935cf 100644 --- a/src/parser.js +++ b/src/parser.js @@ -790,9 +790,9 @@ function hanzinize(value) { } } -function outputHanziWrapper(log) { +function outputHanziWrapper(log, outputHanzi) { return function output(...args) { - log(...args.map(i => hanzinize(i))); + log(...args.map(i => (outputHanzi ? hanzinize(i) : i))); }; } @@ -810,9 +810,7 @@ function evalCompiled(compiledCode, options = {}) { (() => { const _console_log = console.log; - if (outputHanzi) { - console.log = outputHanziWrapper(output); - } + console.log = outputHanziWrapper(output, outputHanzi); try { if (!scoped && "window" in this) { window.eval(code); @@ -822,7 +820,7 @@ function evalCompiled(compiledCode, options = {}) { } catch (e) { throw e; } finally { - if (outputHanzi) console.log = _console_log; + console.log = _console_log; } })(); } diff --git a/tools/make_ide.js b/tools/make_ide.js index c143f52a..cbca09be 100644 --- a/tools/make_ide.js +++ b/tools/make_ide.js @@ -136,9 +136,11 @@ function main() { selr.onchange = run; var hidestd = document.getElementById("hide-std"); + var outputHanzi = document.getElementById("output-hanzi"); var outdiv = document.getElementById("out"); hidestd.onchange = run; + outputHanzi.onchange = run; function run() { highlightCode(); @@ -158,6 +160,7 @@ function main() { hljs.highlightBlock(document.getElementById("js")); evalCompiled(code, { + outputHanzi: outputHanzi.checked, output: (...args) => { outdiv.innerText += args.join(" ") + "\n"; } @@ -185,7 +188,19 @@ pre{tab-size: 4;} <script>${utils.catsrc()}</script> <body style="background:#272822;padding:20px;color:white;font-family:sans-serif;"> <h2><i>wenyan-lang</i></h2> -<table><tr><td><select id="pick-example"></select><button id="run">Run</button>      <input type="checkbox" id="auto-hl"/><small>Auto Highlight</small>      <input type="checkbox" id="hide-std" checked=""/><small>Hide Imported Code</small>      <small>Romanization</small><select id="pick-roman"></select></td></tr><tr><td id="in" valign="top"><div class="tbar">EDITOR</div></td><td rowspan="2" valign="top"><div class="tbar">COMPILED JAVASCRIPT</div><pre id="js"></pre></td></tr><tr><td valign="top"><div class="tbar">OUTPUT</div><pre id="out"></pre></td></tr></table> +<table><tr><td> +<select id="pick-example"></select><button id="run">Run</button> + +       +<input type="checkbox" id="auto-hl"/><small>Auto Highlight</small> +       +<input type="checkbox" id="hide-std" checked=""/><small>Hide Imported Code</small> +       +<input type="checkbox" id="output-hanzi" checked=""/><small>Output Hanzi</small> +       +<small>Romanization</small><select id="pick-roman"></select> + +</td></tr><tr><td id="in" valign="top"><div class="tbar">EDITOR</div></td><td rowspan="2" valign="top"><div class="tbar">COMPILED JAVASCRIPT</div><pre id="js"></pre></td></tr><tr><td valign="top"><div class="tbar">OUTPUT</div><pre id="out"></pre></td></tr></table> <script>var STDLIB = ${JSON.stringify(lib)};</script> <script>var prgms = ${JSON.stringify(prgms)};</script> <script>var examplesAlias = ${JSON.stringify(examplesAlias)};</script> From ed05692d0ecdbaf64364a7aa2a6e8289b4956e0c Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 11:37:04 +0800 Subject: [PATCH 27/28] feat: outputHanzi for browser runtime --- src/browser_runtime.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/browser_runtime.js b/src/browser_runtime.js index 98fc0f9c..2abab465 100644 --- a/src/browser_runtime.js +++ b/src/browser_runtime.js @@ -7,6 +7,10 @@ async function run(script) { const scoped = !!script.attributes.scoped; + const outputHanzi = !( + script.attributes.outputHanzi && + script.attributes.outputHanzi.value === "false" + ); let code = script.innerText; if (script.src) { const response = await fetch(script.src); @@ -14,6 +18,7 @@ } execute(code, { scoped, + outputHanzi, logCallback: isDev ? console.log : () => {}, resetVarCnt: false }); From af6de60519877c2affc40f05261859cad93e53c1 Mon Sep 17 00:00:00 2001 From: Anthony Fu <anthonyfu117@hotmail.com> Date: Thu, 2 Jan 2020 12:17:15 +0800 Subject: [PATCH 28/28] docs: update docs --- documentation/Compiler-API.md | 31 ++++++++++++++++++++++++++++--- documentation/Runtime.md | 12 +++++++++++- documentation/Testing.md | 8 +------- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/documentation/Compiler-API.md b/documentation/Compiler-API.md index b92e28cc..b4ae9c70 100644 --- a/documentation/Compiler-API.md +++ b/documentation/Compiler-API.md @@ -44,28 +44,53 @@ const compiled = Wenyan.compile('吾有一言。曰「「問天地好在。」 - core - [compile](#compile) + - [execute](#execute) + +### Execute + +[Source](../src/parser.js) + +```ts +function execute(source: string, options?: ExecuteOptions) +``` + +**Parameters** + +| Name | Type | Note | +| --- | --- | --- | +| source | string | The Wenyan source code | +| options | object | [Execute Options](#Execute-Options) | ### Compile [Source](../src/parser.js) ```ts -function compile(targetLang: string, source: string, options?: CompilerOptions) +function compile(source: string, options?: CompilerOptions) ``` **Parameters** | Name | Type | Note | | --- | --- | --- | -| targetLang | string | Can be `js`, `py` or `rb` | | source | string | The Wenyan source code | | options | object | [Compiler Options](#Compiler-Options) | -### Compiler Options +#### Compiler Options | Fields | Default Value | Note | | --- | --- | --- | +| lang | `js` | Target language, can be `js`, `py` or `rb` | | romanizeIdentifiers | none | Romanize variable identifiers (e.g. `甲` to `JIA2`) | | resetVarCnt | false | Reset temporary variable counter | | logCallback | console.log | Get verbose debug log | | errorLog | process.exit | Error log | + +#### Execute Options + +Execute Options extends all field in [Compiler Options](#Compiler-Options) + +| Fields | Default Value | Note | +| --- | --- | --- | +| outputHanzi | true | Convert numbers and bools to Hanzi | +| output | `console.log` | You can redirect the output if you don't want to use `console.log` | diff --git a/documentation/Runtime.md b/documentation/Runtime.md index 39d66d9d..12b67412 100644 --- a/documentation/Runtime.md +++ b/documentation/Runtime.md @@ -4,7 +4,7 @@ You can now run Wenyan as normal Javscript script right in your html. -[**Check out the demo**](https://jsfiddle.net/antfu/u532ny49/2/) +[**Check out the demo**](https://jsfiddle.net/antfu/u532ny49/) ## Installation @@ -47,6 +47,16 @@ You can import remote scripts as you will do for Javascript. <script type="application/wenyan" src="https://raw.githubusercontent.com/LingDong-/wenyan-lang/master/examples/fizzbuzz.wy"></script> ``` +### Outputing Hanzi + +By default, it will convert numbers and bools to hanzi. If you want to output raw numbers, you can specify `ouputHanzi="false"` in attr of script tag. + +```html +<script type="application/wenyan" ouputHanzi="false"> +吾有一數。曰三。書之。 +</script> +``` + ### DOM Hacks There are some hacks you can do to access the DOM and browser APIs. This allows wenyan to do some realworld applications. diff --git a/documentation/Testing.md b/documentation/Testing.md index e7ae95f4..3ffac3f7 100644 --- a/documentation/Testing.md +++ b/documentation/Testing.md @@ -4,13 +4,7 @@ This project uses [Mocha](https://mochajs.org/) and [Chai](https://www.chaijs.com/) for unit testing and snapshot testing. -You will need to build first - -```bash -npm run build -``` - -Then you can run all the tests by +You can run all the tests by ```bash npm test