mirror of
https://github.com/InternLM/InternBootcamp.git
synced 2026-04-19 12:58:04 +00:00
107 lines
No EOL
3.8 KiB
Python
Executable file
107 lines
No EOL
3.8 KiB
Python
Executable file
from .BaseCipherEnvironment import BaseCipherEnvironment
|
||
|
||
class AtbashCipher:
|
||
"""实现 Atbash 密码的类,用于字符串转换。
|
||
|
||
Atbash 密码是一种简单的替换密码,其中每个字母都被其在字母表中的反向对应字母所替换。
|
||
"""
|
||
|
||
def __init__(self):
|
||
"""初始化 AtbashCipher 对象。"""
|
||
pass
|
||
|
||
def transform(self, text: str) -> str:
|
||
"""使用 Atbash 密码转换输入文本。
|
||
|
||
Args:
|
||
text (str): 要转换的输入文本。
|
||
|
||
Returns:
|
||
str: 应用 Atbash 密码后转换的文本。
|
||
"""
|
||
result = [] # 存储转换后的字符
|
||
words = text.split() # 将文本拆分成单词
|
||
|
||
# 逐个处理每个单词
|
||
for word in words:
|
||
print(f"转换单词: {word}")
|
||
transformed_word = [] # 存储单词中转换后的字符
|
||
|
||
# 转换单词中的每个字符
|
||
for char in word:
|
||
if char.isalpha(): # 检查字符是否为字母
|
||
if char.islower():
|
||
transformed_char = chr(219 - ord(char)) # 小写字母转换
|
||
else:
|
||
transformed_char = chr(155 - ord(char)) # 大写字母转换
|
||
print(f" '{char}' -> '{transformed_char}'")
|
||
else:
|
||
transformed_char = char # 非字母字符保持不变
|
||
print(f" '{char}' 保持不变")
|
||
|
||
transformed_word.append(transformed_char)
|
||
|
||
# 将单词中转换后的字符重新组合并添加到结果中
|
||
result.append(''.join(transformed_word))
|
||
|
||
# 将转换后的单词重新组合成句子并返回
|
||
return ' '.join(result)
|
||
|
||
|
||
class AtbashCipherEnvironment(BaseCipherEnvironment):
|
||
def __init__(self, *args, **kwargs):
|
||
problem_description = ''
|
||
super().__init__(problem_description, *args, **kwargs)
|
||
|
||
@property
|
||
def cipher_name(self) -> str:
|
||
"""返回密码的名称。
|
||
"""
|
||
return "AtbashCipher"
|
||
def encode(self, text: str, **kwargs) -> str:
|
||
"""使用 Atbash 密码对输入文本进行编码。
|
||
|
||
Args:
|
||
text (str): 要编码的输入文本。
|
||
|
||
Returns:
|
||
str: 应用 Atbash 密码后编码的文本。
|
||
"""
|
||
print("编码过程:")
|
||
cipher = AtbashCipher()
|
||
encode_text = cipher.transform(text)
|
||
print(f"编码后的文本: {encode_text}")
|
||
return encode_text
|
||
|
||
def decode(self, text: str, **kwargs) -> str:
|
||
"""使用 Atbash 密码对输入文本进行解码。
|
||
|
||
Args:
|
||
text (str): 要解码的输入文本。
|
||
|
||
Returns:
|
||
str: 应用 Atbash 密码后解码的文本。
|
||
"""
|
||
print("解码过程:")
|
||
cipher = AtbashCipher()
|
||
decode_text = cipher.transform(text)
|
||
print(f"解码后的文本: {decode_text}")
|
||
return decode_text
|
||
|
||
def get_encode_rule(self, ) -> str:
|
||
"""返回编码规则的自然语言描述。
|
||
|
||
Returns:
|
||
str: 编码规则的自然语言描述。
|
||
"""
|
||
return "Atbash 密码的编码规则是将每个字母替换为其在字母表中的反向对应字母。例如,'A' 变成 'Z','B' 变成 'Y',依此类推。非字母字符保持不变。"
|
||
|
||
def get_decode_rule(self, ) -> str:
|
||
"""返回解码规则的自然语言描述。
|
||
|
||
Returns:
|
||
str: 解码规则的自然语言描述。
|
||
"""
|
||
return "Atbash 密码的解码规则是将每个字母替换为其在字母表中的反向对应字母。由于 Atbash 密码是对称的,解码过程与编码过程相同。例如,'Z' 变成 'A','Y' 变成 'B',依此类推。非字母字符保持不变。"
|
||
|
||
|