#P2317. SHAKE
SHAKE
描述 加密 secret 消息。
Sam 想向 Sally 发送秘密消息,反之亦然,因此他们设计了一个简单但有效的加密方案,他们可以手动执行。然而,他们很快就开始坠入爱河,他们给彼此的信息越来越长。因此,他们决定他们的加密方案需要自动化。您的工作是编写一个计算机程序,该程序将实现他们的 “shake, rattle and roll” 加密方案。(目前不会实施解密。
文本消息按行大调顺序放入 2D 数组中,每个字符位于数组的唯一单元格中。如果消息没有完全填满数组,则空单元格将填充字母表中的大写字母,从字母 A 开始,一直到字母 Z(根据需要重复)。例如,6 x 6 数组中的消息 “Meet me at the pizza parlor” 将如下图所示。请注意,所有字符都存储为大写字母。
要加密此消息,请执行 3 个单独的作,如下所示:
Shake:每个奇数列向上移动一个字符,最上面的字符移动到该列的底部。每个偶数列都向下移动,最底部的字符移动到列的顶部。列从 1 开始编号。例如:
Rattle:每个奇数行向右移动一个字符,最右边的字符移动到同一行中最左边的列。每个偶数行向左移动一个字符,最左边的字符移动到同一行中最右边的列。这些行从顶部开始编号。例如:
Roll:矩阵周围的每个奇数 “loop” 向右旋转一个字符,而每个偶数 “loop” 向左旋转一个字符,如下图所示。“Loops” 是偶数或奇数,基于其最顶端行的行号(顶行是第 1 行)。
矩阵大小在加密密钥中指定,大小可以从 3x3 到 100x100 不等。矩阵始终为正方形。
输入 输入将包含一个或多个加密问题。每个问题占用文件的两行。问题的第一行是加密密钥。第二行是要加密的文本。加密密钥始终以两位数的矩阵大小开头,后跟一系列任意顺序的“S”、“R”或 L“字符。对于每个 'S' 字符,将执行 “shake”作,对于每个 'R' 字符,将执行 'rattle'作,对于每个 'L' 字符,将按指定的顺序执行 “roll”作。大小 “00” 被解释为 100。
加密密钥限制为 80 个字符。消息限制为 10,000 个字符。假设消息始终适合指定的矩阵。
输出 加密文本是每个问题的输出。加密文本的长度是矩阵的平方大小(例如,一个 3x3 矩阵产生一个长度为 9 的字符串)。
输入数据 1
04RSRR
I love ice cream
06SRL
Meet me at the Pizza Parlor
输出数据 1
IREAELCIMVE OC
EIEEAGTTIMT E P ZHRZB PAORDAFLEA CMH