Kiváló problémamegoldó vagy, és arról vagy ismert, hogy a legnehezebb matematikai rejtvényekkel is megbirkózol. Egy este sürgős levelet kapsz egy feltalálótól, aki Triangle Tinkerer néven dolgozik egy úttörő új projekten. A levél így szól:
Kedves Matematikus,
A segítségedre van szükségem. Egy olyan eszközt tervezek, amely a pitagoraszi számhármasok különleges tulajdonságaira épül. Ezek három olyan egész szám, amelyek kielégítik az a² + b² = c² egyenletet. Ez az eszköz forradalmasítja majd a navigációt, de ahhoz, hogy működjön, fel kell programoznom minden olyan számhármassal, amelyben a, b és c összege egy adott N számmal egyenlő. Ha ezeket a számhármasokat kézzel számolnám ki, az évekig tartana, de azt hallom, hogy erre bőven képes vagy.
Sürget az idő. A találmányom jövője, sőt talán a matematikai újítások jövője is azon múlik, hogy meg tudod-e oldani ezt a problémát.
A feladat fontosságától hajtva nekilátsz, hogy megtaláld az összes olyan pitagoraszi számhármast, amely megfelel a feltételnek. A munkád messzemenő következményekkel járhat, és új lehetőségeket nyithat meg a tudományban és a mérnöki tudományokban. Képes vagy megbirkózni a kihívással, és történelmet írni?
A pitagoraszi számhármas három természetes számból álló halmaz, {a, b, c}, amelyre
a² + b² = c²
és amelyre
a < b < c
Például,
3² + 4² = 5².
Egy N egész szám bemenet esetén keresd meg az összes olyan pitagoraszi számhármast, amelyre a + b + c = N.
Például N = 1000 esetén pontosan egy olyan pitagoraszi számhármas van, amelyre a + b + c = 1000: {200, 375, 425}.
A fenti leírás a matematikai halmazok témakörét említi, de azt is, hogy egy pitagoraszi számhármas {a, b, c} csak úgy lehet rendezett, hogy a < b < c (növekvő sorrend).
Emiatt a Python set típusa nem alkalmas erre a feladatra, mivel alapvetően nem rendezett.
Helyette egy list-et kell visszaadnod, amely list-eket tartalmaz (pl. [[a, b, c]]).
Magukat a hármasokat tetszőleges sorrendben generálhatod, mert a külső list sorrendjét a tesztek figyelmen kívül hagyják.
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.