Python - Igra pogađanja


Euklidov algoritam

Pronalaženje najmanjeg zajedničkog djelioca dva broja vrši se algoritmom poznatim od antičkih vremena (tzv. Euklidov algoritam), koji se narativno može opisati:

Sve dok su brojevi različiti, oduzmi manji od većeg broja.

Algoritam se može preciznije opisati u obliku pseudokoda. Sve dok je x≠y, ako je x>y onda x = x-y, ako je x<y, onda y = y-x. Koja vrsta ponavljanja je odgovarajuća za realizaciju Euklidovog algoritma u jeziku Python? Ponavljanje oduzimanja definisano je prema uslovu, pa je prirodno da se u jeziku Python realizuje pomoću naredbe while. Program koji implementuje Euklidov algoritm je:

# Euklidov algoritam računanja NZD
# (iterativni)

x = int(input("Unesi X "))
y = int(input("Unesi Y "))
while x != y:
    if x>y:
        x = x-y
    else:
        y = y-x
print("NZD =",x)

Primjer upotrebe programa za računanje NZD(1.116, 90) je:

Unesi X 1116
Unesi Y 90
NZD = 18
>>>


Igra pogađanja

Interaktivna igra pogađanja sastoji se u pogađanju "zamišljenog" (slučajno generisanog) cijelog broja u relativno uskom intervalu. Program generiše slučajni cijeli broj u uskom zadanom intervalu i traži od korisnika da pogodi koji je broj u pitanju. Ako se broj koji unese korisnik razlikuje od zamišljenog, korisniku se daje informacija da li je njegov broj veći ili manji od slučajnog broja. Korisnik mora da pogodi broj u konačnom broju pokušaja, inače program prekida rad uz odgovarajuću poruku. Pseudoslučajni broj generiše se funkcijom randrange(od, do) iz modula random. Jednostavna igra pogađanja brojeva može se realizovati sljedećim programom u jeziku Python:

# Program za pogađanje slučajnog broja
import random

MAX_POKUSAJA = 5 # Najveći broj pogađanja
MAX_BROJ = 20 # Najveći slučajni broj

# Uvodno obaveštenje
print("Program za pogađanje slučajnog broja"\
    "između 1 i", MAX_BROJ, ".")
print("Dozvoljeno je", MAX_POKUSAJA,"pokušaja.")

# Generisanje slučajnog broja
broj = random.randrange(1, MAX_BROJ+1)
brojacPokusaja = 0 # Inicijalizacija brojača
while True: # Beskonačna petlja

    # Unos pogađanja
    pokusaj= int(input('\nPogodite slučajni broj: '))

    # Ako je broj pogođen, čestitka i prekid petlje
    if pokusaj == broj:
        print("Čestitamo, pogodili ste broj!")
    
        break
    elif pokusaj < broj:
        print("Suviše mali broj.") # Broj premali
    else:
        print("Suviše veliki broj.") # Broj prevelik

    # Ako je dostignut najveći broj pokušaja, prekid
    if brojacPokusaja == MAX_POKUSAJA:
        print("Nažalost,niste pogodili u",\
            MAX_POKUSAJA, "pokušaja.")
        print("Slučani broj je bio:", broj)
        break
        
print("Hvala na igri.")

Primjer izvršavanja programa, u kome je korisnik pogodio broj je:

Program za pogađanje slučajnog broja između 1 i 20 .
Dozvoljeno je 5 pokušaja.

Pogodite slučajni broj: 10
Suviše mali broj.

Pogodite slučajni broj: 15
Suviše veliki broj.

Pogodite slučajni broj: 13
Čestitamo, pogodili ste broj!
Hvala na igri.