-
[Python Challenge] What about making trans? #1Wargame/Python Challenge 2021. 1. 27. 13:08
www.pythonchallenge.com/pc/def/map.html
해당 문제는 그림과 함께 해석할 수 없는 문장이 주어져 있다. 이 문장을 해석하는 문제인 것 같다.
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp.
bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle.
sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.그림에서 K->M, O->Q, E->G로 변경하라고 하는데, 규칙은 아래와 같다.
[규칙]
ascii 코드를 비교해보면 2씩 차이가 난다.
K (75) -> M (77)
O (79) -> Q (81)
E (69) -> G (71)알아낸 규칙을 이용하여 주어진 문장을 해석하기 위해 python 코드를 작성하였다.
[소스 코드]
import string def printResult(result): print() print("[+] Translate Result:") print(result) def transString(data): result = "" for i in data: if i in string.ascii_lowercase: result += chr(((ord(i) - ord('a') + 2) % 26) + ord('a')) else: result += i return result if __name__ == "__main__": data = input("[+] Input your Data:\n") printResult(transString(data))
[실행 결과]
문장을 해석해보면,
나는 네가 손으로 해석하지 않았기를 바란다. 그것이 컴퓨터의 용도이다. 이 텍스트가 아주 길기 때문에 손으로 해석하는 것은 비효율적이다. string.maketrans() 를 사용하는 것을 추천한다. 이제 url에 제출하여라.
치환 규칙을 이용해 map.html을 적절하게 변경해주면 다음 문제로 넘어갈 수 있다.
정답은 아래에 👇
str.maketrans(x, y, z)
문자열 치환 함수로, translate() 함수에 사용한다.
x : 치환할 문자
y : x의 문자를 치환할 문자 (x의 문자열과 길이가 동일해야 함)
z : 제거할 문자
[Reference] https://www.w3schools.com/python/ref_string_maketrans.asp이런 함수가 있다는 것을 처음 알았다.
해당 함수를 이용하면 더욱 간단하게 문자를 치환할 수 있다.
[maketrans 이용 소스 코드]
import string def printResult(result): print() print("[+] Translate Result:") print(result) if __name__ == "__main__": before = string.ascii_lowercase after = "cdefghijklmnopqrstuvwxyzab" data = input("[+] Input your Data:\n") printResult(data.translate(str.maketrans(before, after))) # python2 : data.translate(string.maketrans(before, after))
'Wargame > Python Challenge' 카테고리의 다른 글
[Python Challenge] ocr #2 (0) 2021.01.27 [Python Challenge] warming up #0 (0) 2021.01.27 댓글