#M1011. Editing Word
Editing Word
当前没有测试数据。
小明有一台老旧的电脑,其文本编辑功能非常有限,仅支持以下几种特定的操作。你需要编写一个程序,模拟这些操作,最终输出文档的最终内容。
操作列表
所有操作的输入不包含 <
和 >
符号。
-
数字
N
(1-26):- 功能:在当前光标位置插入一个字符。
- 细节:
1
对应 'a' 或 'A',2
对应 'b' 或 'B',以此类推,直到26
对应 'z' 或 'Z'。- 字符的大小写取决于当前的大小写锁定状态 (
cap
/ucap
) 和shift
状态 (shift
)。- 如果处于大写锁定 (
cap
) 状态,所有输入的字符都为大写。 - 如果没有大写锁定:
- 如果
shift
键处于激活状态 (shift
),输入的字符为大写。 - 如果
shift
键处于未激活状态,输入的字符为小写。
- 如果
- 如果处于大写锁定 (
- 光标移动:插入字符后,光标向右移动一位。
-
bk
:- 功能:删除光标前的一个字符。
- 细节:如果光标位于文档开头(即没有字符在光标前),此操作不执行任何动作。
- 光标移动:删除字符后,光标向左移动一位。
-
mv x
:- 功能:将光标移动到第
x
个字符的后面。 - 细节:
x
为整数,可能为 0。- 如果
x
小于 0,光标移动到文档开头(位置 0)。 - 如果
x
大于或等于文档当前长度,光标移动到文档末尾。
- 光标位置:移动后,光标位于索引
x
的字符之后。例如,mv 0
将光标移动到文档开头,mv 3
将光标移动到文档的第 3 个字符之后。
- 功能:将光标移动到第
-
shift
:- 功能:切换
shift
键的激活状态。 - 细节:只有在没有大写锁定 (
ucap
) 的情况下,shift
操作才有效。如果当前处于大写锁定状态,shift
操作不执行任何动作。 - 初始状态:程序开始时,
shift
键为未激活状态。
- 功能:切换
-
tab
:- 功能:在当前光标位置插入两个空格字符。
- 光标移动:插入后,光标向右移动两位。
-
cap
:- 功能:激活大写锁定。
- 细节:激活后,所有后续字符输入(通过数字 N)都将强制为大写,直到解除大写锁定。此操作不影响
shift
键的内部激活状态。
-
ucap
:- 功能:解除大写锁定。
- 细节:解除后,字符输入的大小写将由
shift
键的状态决定。此操作不影响shift
键的内部激活状态。
-
f5
:- 功能:保存文档。
- 细节:此操作在本题目中没有实际效果,不影响文档内容或状态。
-
f1
:- 功能:将剪贴板中的内容粘贴到当前光标位置。
- 细节:如果剪贴板为空,此操作不执行任何动作。
- 光标移动:粘贴后,光标向右移动粘贴内容的长度。
-
copy x
:- 功能:从当前光标位置开始,向后复制
x
个字符到剪贴板。 - 细节:
- 如果从光标位置开始,文档剩余的字符不足
x
个,则只复制到文档末尾的所有字符。 - 如果光标在文档末尾或没有字符可复制,剪贴板将被清空。
- 如果从光标位置开始,文档剩余的字符不足
- 光标移动:复制完成后,光标向右移动复制的字符数量。
- 功能:从当前光标位置开始,向后复制
-
f2
:- 功能:保留文档的前
⌊n÷2⌋
位。 - 细节:
n
是文档当前的长度。文档将被截断,只保留前半部分。 - 光标移动:如果光标位置超出了新的文档长度,光标将被调整到新文档的末尾。
- 功能:保留文档的前
输入格式
第一行包含一个整数 q
,表示接下来有 q
个操作。
初始时,文档为空,光标位于文档开头(位置 0),剪贴板为空,大小写锁定未激活,shift
键未激活。
接下来的 q
行,每行表示一个操作。
输出格式
程序执行完所有 q
个操作后,输出文档的最终内容字符串。
样例
样例 #1 输入
15
1
2
shift
3
4
cap
5
mv 1
6
copy 2
f1
bk
ucap
7
tab
f2
样例 #1 输出
aBFCd
数据约定
对于 的数据保证:
- (操作数量)
- 表示最终输出字符串的长度)