猫史档案馆


【文言文编程】教程帖 Part1

用户:ZH-Y-QZH-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


回复

上一页1 页 / 共 1下一页
cool-creepercool-creeper

这个文言文编程是怎么做出来的???emotion_雷电猴_疑问还是本来就有的一个软件???

点赞1


评论


ZH-Y-QZH-Y-Q

是有一个IDE的。网址

http://wenyan-lang.lingdong.works/ide.html

点赞1


评论


cool-creepercool-creeper

@ZH-Y-Q 

点赞0


评论