Pitagorejske trojice

Pitagorejske trojice

Avtor: Nina Jug

Besedilo problema

Opiši postopek, ki bo za dani celi števili a in b (a bo manjši ali enak b, oba pa bosta večja ali enaka 1) ugotovil, koliko je trojic pozitivnih celih števil (x, y, z), za katere je x + y = z in je z med a in b (lahko je kateremu od njiju tudi enak).

Primer: za a = 5 in b = 20 naj bi tvoj postopek izračunal 12; tedaj namreč obstaja dvanajst trojic števil, ki ustrezajo zgoraj opisanim pogojem. To so: (3, 4, 5), (4, 3, 5), (6, 8, 10), (8, 6, 10), (5, 12, 13), (12, 5, 13), (9, 12, 15), (12, 9, 15), (8, 15, 17), (15, 8, 17), (12, 16, 20), (16, 12, 20).

Ideja rešitve

Ustvariti bo potrebno zanke za števila x, y in z. Tako bomo lahko napisali vse možne kombinacije trojic. Ko pa bomo zapisali še pogoje, bomo izločili tiste, ki pogojem ne ustrezajo in nam bodo ostale samo še tiste, ki pogojem ustrezajo.

Koda v Python-u

import types
import math

def pitagorejskeTrojice(a, b):
    """
Metoda izračuna koliko je trojic pozitivnih celih števil (x,y,z),
za ketere je x^2+y^2=z^2 in je z med a in b.
"""
    assert type(a) == int and a <= b and a >= 1, 'a mora biti število manjše/enako b in večje/enako 1'
    assert type(b) == int and b >= 1, 'b mora biti število večje/enako 1'
    seznam = []
    for i in range(1,b+1):
        x = i
        for j in range(1,b+1):
            y = j
            for k in range(a,b+1):
                z = k
                if z**2 == x**2 + y**2:
                    trojica = (x,y,z)
                    seznam.append(trojica)
    stevilo = len(seznam)
    return stevilo

koda

Naprej na komentar kode

Komentar kode

Pri nalogah, ko imamo neke pogoje, je najprej dobro, če napišemo stavke, ki bodo lovili napake (nepravilni tipi spremenljivk, nepravilne vrednosti spremenljivk).
Tako zapišemo, da mora biti spremenljivka a celo število, manjše/enako spremenljivki b, ter večje/enako 1. Prav tako mora biti tudi spremenljivka b celo število, večje/enako 1.
Ustvarimo prazen seznam, v katerega bomo dodajali trojice, ki zadoščajo pogojem.
Napišemo zanko, ki bo tekla od števila 1 do vrednosti spremenljivke b. Ta števila bodo naši x-i.
Znotraj te zanke naredimo še eno enako zanko, ki bo ponazarjala naše y-e.
Zadnja zanka pa bo ponazarjala naše z-je (tekla bo enako kot zanki za x in y).
Napišemo pogoj (x + y = z) in če trojica (x,y,z) ustreza našemu pogoju jo shranimo v spremenljivko trojica ter jo dodamo v seznam.
Ker nas zanima število trojic, pogledamo kakšna je dolžina našega seznama in to število izpišemo.

Nazaj na kodo

Testni primeri

Smiselni testni primeri bi bili:
- preverimo kaj metoda naredi, če vnesemo oba parametra enaka 0 (morala bi se sprožiti izjema, saj to ne ustreza predpisanim pogojem)
- vnesemo, da je a > b (morala bi se sprožiti izjema, saj to ne ustreza predpisanim pogojem)
- vnesemo, da je a niz oz. b niz (morala bi se sprožiti izjema, saj tudi to ne ustreza predpisanim pogojem)
- če metoda res deluje pravilno, si izberemo primer a=5 in b=20, saj rezultat že imamo zapisan v navodilu naloge
- vnesemo še kakšen drug par, za katerega poznamo odgovor (3,4), (3,5)

testni primeri

Filmček

0%
0%