Cho một chuỗi ký tự, nhiệm vụ của chúng ta là tạo ra các chuỗi ngẫu nhiên từ tổ hợp các ký tự, ký tự đặc biệt, số, v.v. cho đến khi thu được chuỗi trùng khớp với chuỗi đầu vào.
Ví dụ
Input: PP Output: AK AK ... (các chuỗi ngẫu nhiên) ... PP
Thuật toán
- Nhập chuỗi mục tiêu.
- Lưu trữ tất cả các tổ hợp có thể của chữ thường, chữ hoa, chữ số và ký tự đặc biệt vào một biến.
- Sử dụng hai vòng lặp và hàm random để sinh ra các tổ hợp ký tự, ký hiệu.
- So sánh từng chuỗi ngẫu nhiên với chuỗi đầu vào; nếu ký tự tại cùng vị trí trùng khớp thì giữ lại, ngược lại sinh lại ký tự đó.
- Lặp lại cho đến khi chuỗi sinh ra hoàn toàn trùng khớp với chuỗi đầu vào.
Mã ví dụ
import string
import random
import time
my_possibleCharacters = string.ascii_lowercase + string.digits + string.ascii_uppercase + ' ., !?;:'
t = "ab"
my_attemptThis = ''.join(random.choice(my_possibleCharacters) for i in range(len(t)))
my_attemptNext = ''
com = False
iteration = 0
# Lặp cho đến khi hoàn thành
while com == False:
print(my_attemptThis)
my_attemptNext = ''
com = True
for i in range(len(t)):
if my_attemptThis[i] != t[i]:
com = False
my_attemptNext += random.choice(my_possibleCharacters)
else:
my_attemptNext += t[i]
# Tăng số lần lặp
iteration += 1
my_attemptThis = my_attemptNext
time.sleep(0.1)
# Mã chính
print("Chuỗi khớp sau " + str(iteration) + " lần lặp")
Kết quả
36 G sM ,L jt g1 FN uR ;W Ja 3n 4o Gl kY NR oR Nw Lg Jt Od wN z0 J 3a 9J sF v g6 HO Ia AB Xa OX :N Wo Dp f; tt kf Er In ou bD T a0 aH aW a a8 ai ax az aN aJ ah a0 a. aq ar ax ai am a; aO as a; aS aL aQ a8 a3 ae a5 aS ao al aV ar aj aT aS ad ab Chuỗi khớp sau 83 lần lặp