用户:ZH-Y-Q查看:14 回复:3 评论:14 创建时间:2020-02-19T11:07:11
序言
本文章主要是用以补充文言文浅谈的内容。
注:阅读前请先了解文言文浅谈的内容。
以最新版为准,不保证洛谷IDE支持全部内容。
Part 1 输入输出进阶输出和输入是一切语言的基本操作。文言的输出简洁,输入则稍微繁琐。
输出输出语句的标志:書之。
吾有一數。...書之。:输出数字,阿拉伯形式。
数字的范围是 [-2^{256},2^{256})[−2256,2256) 。
其中...中,表示常量使用中文表示,也可使用变量形式。
如:吾有一數。曰三十七。書之。输出 3737 。
吾有一言。...書之。:输出字符串。
字符串表示为「「...」」形式。(注意有二层括号)
如:吾有一言。曰「「字符串」」。書之。输出字符串。
以上每次“书之”语句的输出各占一行。为了在一行内输出多个数字,可以使用以下语句:
吾有三數。曰三千二百四十一。曰五百五十。曰一千零五。書之。
输出3241 550 1005。
输入由于还未设专门函数,使用Javascript函数完成。
先看一下A+B Problem给的输入:
施「require('fs').readFileSync」於「「/dev/stdin」」。名之曰「數據」。
施「(buf => buf.toString().trim())」於「數據」。昔之「數據」者。今其是矣。
施「(s => s.split(' '))」於「數據」。昔之「數據」者。今其是矣。
注曰。「「文言尚菜,無對象之操作,故需 JavaScript 之语法」」。
夫「數據」之一。取一以施「parseInt」。名之曰「甲」。
夫「數據」之二。取一以施「parseInt」。名之曰「乙」。
其中注曰之前的函数不用管(split除外)。
讲解:「(s => s.split(' '))」将数据拆分,以某个符号为界限(注意这个符号不在函数结果之内)。
「parseInt」将字符串转换为数字。
一些语喵在后提到。
先给一个得到一行数字的函数。
吾有一術。名之曰「输入」。是術曰。
施「require('fs').readFileSync」於「「/dev/stdin」」。名之曰「入」。
施「(buf => buf.toString().trim())」於「入」。昔之「入」者。今其是矣。
施「(s => s.split('\n'))」於「入」。昔之「入」者。今其是矣。
乃得「入」也。
是謂「输入」之術也。
吾有一數。曰零。名之曰「其行」。
施「输入」。名之曰「初始输入」。
吾有一術。名之曰「得数」。是術曰。
吾有一列。名之曰「其数」。
加「其行」以一。昔之「其行」者。今其是矣。
夫「初始输入」之「其行」。名之曰「此行」。
施「(s => s.split(' '))」於「此行」。昔之「此行」者。今其是矣。
夫「此行」之長。名之曰「长」。
吾有一數。曰零。名之曰「下标」。
為是「长」遍。
加「下标」以一。昔之「下标」者。今其是矣。
夫「此行」之「下标」。名之曰「此数」。
施「parseInt」於「此数」。昔之「此数」者。今其是矣。
銜「其数」以「此数」。昔之「其数」者。今其是矣。
云云。
乃得「其数」也。
是謂「得数」之術也。
如果看过浅谈,应该不难理解:将初始输入用换行符拆分为各行;使用一个变量表示目前所在的行;每行要用时用空格拆分成各个小字符串;将小字符串转为数字后装入列表返回。
【原文链接:https://www.luogu.com.cn/blog/2017gdgzoi999/wenyan-lang】