跳至正文
LNN的博客!

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

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

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

P1181 数列分段 Section I

题目描述

对于给定的一个长度为 NN 的正整数数列 AiA_i,现要将其分成连续的若干段,并且每段和不超过 MM(可以等于 MM),问最少能将其分成多少段使得满足要求。

输入格式

第1行包含两个正整数 N,MN,M,表示了数列 AiA_i 的长度与每段和的最大值,第 22 行包含 NN 个空格隔开的非负整数 AiA_i,如题目所述。

输出格式

一个正整数,输出最少划分的段数。

样例输入
5 6
4 2 4 5 1
样例输出
3
样例解释

将数列如下划分:

[4][24][51][4][2 4][5 1]

第一段和为 44,第 22 段和为 66,第 33 段和为 66 均满足和不超过 M=6M=6,并可以证明 33 是最少划分的段数。

吾嘗觀『閱文秘術』之書方悟閱數之義

名之曰列長」。
吾有名之曰段值段數」。

為是列長
  名之曰」。
  段值」。名之曰」。
  大於
    段數」。昔之段數是矣
    昔之段值是矣
  若非
    昔之段值是矣
  云云
云云

段數」。書之

本程序评测记录

P2240 【深基12.例1】部分背包问题

题目描述

阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N(N100)N(N \le 100) 堆金币,第 ii 堆金币的总重量和总价值分别是 mi,vi(1mi,vi100)m_i,v_i(1\le m_i,v_i \le 100)。阿里巴巴有一个承重量为 T(T1000)T(T \le 1000) 的背包,但并不一定有办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割,分割完的金币重量价值比(也就是单位价格)不变。请问阿里巴巴最多可以拿走多少价值的金币?

输入格式

第一行两个整数 N,TN,T

接下来 NN 行,每行两个整数 mi,vim_i,v_i

输出格式

一个实数表示答案,输出两位小数

样例输入
4 50
10 60
20 100
30 120
15 45
样例输出
240.00
吾嘗觀『閱文秘術』之書方悟閱數之義

名之曰堆數」。
吾有名之曰堆列」。
為是堆數
  名之曰」。
  」。名之曰」。
  吾有名之曰」。其物如是
    物之『重』」。
    物之『值』」。
    物之『比』」。
  是謂之物也
  堆列」。
云云

吾有名之曰總值」。
恆為是
  吾有名之曰良比」。
  為是堆數
    」。昔之是矣
    堆列」。名之曰」。
    」。若其不然者乃止是遍也
    『比』大於良比
      昔之是矣
      昔之良比『比』是矣
    云云
  云云

  等於乃止也
  堆列」。名之曰」。
  『重』名之曰」。
  『值』名之曰」。
  『比』名之曰」。
  大於
    」。昔之是矣
    總值」。昔之總值是矣
    昔之堆列今不復存矣
  若非
    」。總值昔之總值是矣
    乃止也
云云

總值」。「(n=>n.toFixed(2))」書之

贪心。把每一堆的重量、价值以及性价比存储在结构体()的数组()里,然后反复遍历数组找出性价比最高的一堆,并从数组中删除(今不復存矣),直到背包装满或全部装下为止。

本程序评测记录

P1603 斯诺登的密码

题目描述

…………

……纸条由纯英文构成:Obama is a two five zero .(以 . 结束输出,只有 66 个单词+一个句号,句子开头如没有大写亦为合法)。……破译密码的步骤如下:

  1. 找出句子中所有用英文表示的数字 (20)(\leq 20),列举在下:

    one two three four five six seven eight nine ten eleven twelve
    thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty
    a both another first second third
    

    another 算作 11

  2. 将这些数字平方后对 100100 取模,如 00,05,11,19,86,9900,05,11,19,86,99

  3. 把这些两位数按数位排成一行,组成一个新数,如果开头为 00,就去 00

  4. 找出所有排列方法中最小的一个数,即为密码。

输入格式

一个含有 66 个单词的句子。

输出格式

一个整型变量(密码)。如果没有符合要求的数字出现,则输出 00

样例输入
Black Obama is two five zero .
样例输出
425
吾嘗觀『閱文秘術』之書方悟閱言之義
吾嘗觀『列經』之書方悟排序之義

吾有名之曰比較」。欲行是術必先得」。乃行是術曰
  」。乃得矣
是謂比較之術也

吾有名之曰識數」。欲行是術必先得」。乃行是術曰
  昔之.toLowerCase()」是矣
  等於『one』乃得
  等於『two』乃得
  等於『three』乃得
  等於『four』乃得
  等於『five』乃得
  等於『six』乃得
  等於『seven』乃得
  等於『eight』乃得
  等於『nine』乃得
  等於『ten』乃得
  等於『eleven』乃得十一
  等於『twelve』乃得十二
  等於『thirteen』乃得十三
  等於『fourteen』乃得十四
  等於『fifteen』乃得十五
  等於『sixteen』乃得十六
  等於『seventeen』乃得十七
  等於『eighteen』乃得十八
  等於『nineteen』乃得十九
  等於『twenty』乃得二十
  等於『a』乃得
  等於『both』乃得
  等於『another』乃得
  等於『first』乃得
  等於『second』乃得
  等於『third』乃得
是謂識數之術也

吾有名之曰數列」。
恆為是
  名之曰」。
  等於『.』乃止也
  識數」。名之曰」。
  」。所餘幾何數列
云云

排序比較數列」。昔之數列是矣
名之曰秘數」。
數列中之
	秘數」。昔之秘數是矣
云云

秘數」。書之

本程序评测记录

P1957 口算练习题

题目描述

……王老师收集了 ii 道学生经常做错的口算题,并且想整理编写成一份练习。……王老师希望尽量减少输入的工作量,比如 5+8\texttt{5+8} 的算式最好只要输入 5\texttt 58\texttt 8,输出的结果要尽量详细以方便后期排版的使用,比如对于上述输入进行处理后输出 5+8=13\texttt{5+8=13} 以及该算式的总长度 66。王老师把这个光荣的任务交给你,请你帮他编程实现以上功能。

输入格式

第一行为数值 ii

接着的 ii 行为需要输入的算式,每行可能有三个数据或两个数据。

若该行为三个数据则第一个数据表示运算类型,a\texttt a 表示加法运算,b\texttt b 表示减法运算,c\texttt c 表示乘法运算,接着的两个数据表示参加运算的运算数。

若该行为两个数据,则表示本题的运算类型与上一题的运算类型相同,而这两个数据为运算数。

输出格式

输出 2×i2\times i 行。对于每个输入的算式,输出完整的运算式及结果,第二行输出该运算式的总长度

样例输入
4
a 64 46
275 125
c 11 99
b 46 64
样例输出 #1
64+46=110
9
275+125=400
11
11*99=1089
10
46-64=-18
9
吾嘗觀『閱文秘術』之書方悟閱數」「閱白」「閱字之義

吾有名之曰」。
為是
	名之曰」。
	等於undefined
		
		昔之是矣
		名之曰

	等於『a』
		吾有『+』名之曰算符」。
		」。名之曰得數」。
	或若等於『b』
		吾有『-』名之曰算符」。
		」。名之曰得數」。
	或若等於『c』
		吾有『*』名之曰算符」。
		」。名之曰得數

	『』」。算符」。」。『=』得數」。名之曰等式」。
	等式」。書之等式之長書之
云云

字符串。读入的时候每行先尝试直接读取两个数字。如果返回了 undefined,说明这一行有字母。先用 跳过换行符,然后再 把字母读进来,相当于 C 语言的

char chr;
scanf(" %c", &chr);

不过代码里直接写 undefined 确实不太美观,可以这样获得一个 undefined

吾有名之曰空無」。

这会编译成:

var 空無 = void 0

输出时直接把等式做成字符串,再用 等式之長 获得长度。

本程序评测记录

2024-02-27

因本站先前无法显示 LaTeX\LaTeX 公式,本文最初发布于我的洛谷博客。由于洛谷博客迁移至洛谷专栏后显示效果不佳,现在此重新发布。尽情享受文言 lang 语法高亮吧!


评论区

加载基于 GitHub issues 的 utteranc.es 评论区组件……