Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่า k พอจะไปถึงปลายอาร์เรย์ได้หรือไม่ (Prime refill) ใน Python


ปัญหา

ให้อาร์เรย์ nums และค่า k เริ่มต้นที่ index 0:

  • ถ้าค่าที่ index นั้นเป็น จำนวนเฉพาะ → ใส่ค่า k กลับเป็นค่าเริ่มต้น
  • ถ้าไม่ใช่จำนวนเฉพาะ → k -= 1
  • ถ้า k ≤ 0 และยังไม่ถึงปลาย และค่าถัดไปไม่ใช่เฉพาะ → False

ตัวอย่าง

nums = [8, 5, 6, 7, 8], k = 2
8(ไม่เฉพาะ)→k=1, 5(เฉพาะ)→k=2, 6(ไม่เฉพาะ)→k=1, 7(เฉพาะ)→k=2, 8(ไม่เฉพาะ)→k=1 ถึงปลาย → True

โค้ดตัวอย่าง

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5)+1):
        if num % i == 0:
            return False
    return True

def solve(arr, k):
    initial_k = k
    for i, val in enumerate(arr):
        if is_prime(val):
            k = initial_k
        else:
            k -= 1
        if k <= 0 and i < len(arr)-1 and not is_prime(arr[i+1]):
            return False
    return True

print(solve([8, 5, 6, 7, 8], 2))  # True

อินพุต / เอาต์พุต

Input:  [8, 5, 6, 7, 8], 2
Output: True