Kurzusok
/
Python
Python
/
Feladatok
/
Legnagyobb sorozatszorzat
Legnagyobb sorozatszorzat

Legnagyobb sorozatszorzat

Közepes

Bevezetés

Egy kormányhivatalnál dolgozol, amely elfogta egy bankrablóbanda titkosított kommunikációs jeleinek egy sorozatát. A jelek egy hosszú számjegysorozatot tartalmaznak. A csapatodnak különféle digitális jelfeldolgozási technikákkal kell elemeznie a jeleket, és fel kell ismernie azokat a mintázatokat, amelyek egy rablás megtervezésére utalhatnak.

Utasítások

A feladatod, hogy mintákat keress a titkosított jel hosszú számjegysorozatában.

A technika, amit itt használni fogsz, a legnagyobb sorozatszorzat.

Először is tisztázzunk néhány fogalmat.

  • bemenet: az a számjegysorozat, amelyet elemezned kell
  • sorozat: szomszédos számjegyek (azaz egymás mellettiek) sorozata, amely a bemeneten belül helyezkedik el
  • hossz: hogy hány számjegyből áll az egyes sorozatok
  • szorzat: amit akkor kapsz, ha számokat összeszorzol

Nézzünk meg egy példát a "63915" bemenettel.

  • Egy sorozatot úgy hozol létre, hogy az eredeti bemenet szomszédos számjegyeit veszed.
  • Ha a hossz 3, akkor három lehetséges sorozat lesz:
    • "639"
    • "391"
    • "915"
  • Ezután ki kell számítanunk az egyes sorozatok szorzatát:
    • A "639" sorozat szorzata 162 (6 × 3 × 9 = 162)
    • A "391" sorozat szorzata 27 (3 × 9 × 1 = 27)
    • A "915" sorozat szorzata 45 (9 × 1 × 5 = 45)
  • A 162 nagyobb, mint a 27 és a 45, ezért a "63915" legnagyobb sorozatszorzata a "639" sorozatból származik. Tehát a válasz 162.

Kivételüzenetek

Néha szükség van arra, hogy kivételt dobj. Amikor ezt teszed, mindig adj meg egy beszédes hibaüzenetet, amely megmutatja, mi a hiba forrása. Ez olvashatóbbá teszi a kódodat, és jelentősen megkönnyíti a hibakeresést. Ha tudod, hogy a hiba forrása egy adott típus lesz, dönthetsz úgy, hogy a beépített hibatípusok egyikét dobod, de ilyenkor is adj meg beszédes üzenetet.

Ennél a feladatnál a raise utasítást kell használnod ahhoz, hogy „dobj” egy ValueError-t, amikor a largest_product() függvényed érvénytelen bemenetet kap. A tesztek csak akkor lesznek sikeresek, ha raise-eled az exception-t, és üzenetet is fűzöl hozzá. Nyugodtan használd újra a series feladatban írt kódodat!

Ha üzenettel szeretnél ValueError-t dobni, írd az üzenetet az exception típus argumentumaként:

# span of numbers is longer than number series
raise ValueError("span must not exceed string length")

# span of number is negative
raise ValueError("span must not be negative")

# series includes non-number input
raise ValueError("digits input must only contain digits")
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Python Exercism

Készen állsz elkezdeni a(z) Legnagyobb sorozatszorzat feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.