31.4. Cho trước dãy số bất kì A. Em hãy viết chương trình tìm và chỉ ra vị trí đầu tiên của dãy A mà 3 số hạng liên tiếp có giá trị là 1, 2, 3 (có thể tổng quát 3 số bất kì p, q, s). Nếu tìm thấy thì thông báo vị trí tìm thấy, nếu không thì thông báo "không tìm thấy mẫu".
Bài Làm:
Để kiểm tra tại một chỉ số i, 3 phần tử liên tếp nhau bằng 1, 2, 3 có nhiều cách kiểm tra khác nhau, ví dụ:
Cách 1. Sử dụng biểu thức lôgíc.
A[i] == 1 and A[i] == 2 and A[i] == 3
Cách 2. Sử dụng so sánh có chứa vùng chỉ số.
A[i:i+3] == [1,2,3]
Chương trình có thể viết như sau:
A = [0,4,0,1,2,3,8,9,0,1,2,3,17,-16,0,1, 2]
p = [1,2,3]
pkq = -1
i = 0
while i < len(A) - 3 and pkq == -1:
if A[i: i+3] == p:
pkq = i
else:
i = i + 1
if pkq >= 0:
print( "Tìm thấy mẫu",p, "tại vị trí”, pkq)
else:
print("Không tìm thấy mẫu",p)