InternBootcamp/internbootcamp/libs/cipher/AtbashCipherEnvironment.py
2025-05-23 15:27:15 +08:00

107 lines
No EOL
3.8 KiB
Python
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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',依此类推。非字母字符保持不变。"