Tavs mērķis: Izmantot "skaldi un valdi" (Binārās meklēšanas) loģiku, lai izveidotu mākslīgo intelektu, kurš vienmēr uzvar spēlētāju skaitļu minēšanā. Šis darbs parādīs Tavu spēju pārvērst teorētisko algoritmu efektivitāti (Big O) reālā, interaktīvā spēlē un nodrošināt loģikas kļūdu (krāpšanās) detektēšanu.
SR 2.4.19. (Gatavi algoritmi), 2.4.16. (Sarežģītība)main.py izveido galveno ciklu, kas uztur meklēšanas robežas: min_r un max_r.(min_r + max_r) // 2.min_r kļūst lielāks par max_r, dators paziņo par krāpšanos un beidz spēli.engine.py.README.md failu, kurā paskaidro, kāpēc binārā meklēšana ir efektīvāka par lineāro (izmanto Big O notāciju).| Kritēriji | 4-6 (Turpina apgūt) | 7-8 (Apguvis) | 9-10 (Padziļināti) |
|---|---|---|---|
| Algoritma loģika | Dators min skaitļus haotiski vai neizmanto robežu pārbīdi. | Precīzi realizēta Binārā meklēšana (diapazona dalīšana uz pusēm). | Algoritms ir optimizēts; realizēta pretrunu (krāpšanās) detektēšana. |
| Efektivitātes analīze | Netiek uzskaitīti gājieni vai nav izpratnes par Big O. | Gājieni tiek uzskaitīti; izprot O(log n) efektivitāti. | README failā sniegta matemātiska analīze par algoritma robežām. |
| Koda kvalitāte | Kods ir vienā failā; trūkst parametru vai komentāru. | Kods sadalīts moduļos. Funkcijas saņem un atgriež datus. | Pilnīga modularitāte; profesionāls PEP 8 stils un docstrings. |
# Failā engine.py
def aprekinat_minejumu(apaksa, augsa):
"""Aprēķina viduspunktu binārajai meklēšanai."""
return (apaksa + augsa) // 2
# Failā main.py
from engine import aprekinat_minejumu
min_r, max_r = 1, 100
gajieni = 0
while min_r <= max_r:
minejums = aprekinat_minejumu(min_r, max_r)
gajieni += 1
atbilde = input(f"Vai Tavs skaitlis ir {minejums}? (L/M/U): ").lower()
if atbilde == 'u':
print(f"Uzvara {gajieni} gājienos!")
break
# ... tālāk seko robežu pārbīdes loģika