Advertisement
UniQuet0p1

Untitled

Jan 13th, 2021
448
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.60 KB | None | 0 0
  1. Ülesanded
  2. 01. range_with_count (50p)
  3. Fnktsioon saab sisendiks kolm täisarvu ja tagastab järjendi start-ist stop-ini, nii et lõpuks oleks number arv elemente järjendis.
  4.  
  5. 02. add_symbol (50p)
  6. Funktsioon saab sisendiks sõne ja sümbolid, mis näitavad milliseid tähti või numbreid tuleb tagastatavasse sõnesse lisada. Funktsioon tagastab lisatud sümbolitega sõne.
  7.  
  8. Kui sõnes olev täht on sümbolites olemas, siis peab see täht olema tagastatavas sõnes topelt. Kui sõnes olev number on sümbolites olemas, siis peab see number olema tagastatavas sõnes kolmekordselt.
  9.  
  10. Kui mõni sümbol esineb sümbolite hulgas mitmekordselt, siis on see samaväärne ühe sümboli esinemisega.
  11.  
  12. 03. h_index (50p)
  13. Funktsioon saab sisendiks järjendi inimese artiklite viitamistest (iga järjendi element tähistab ühe artikli viitamiste arvu). Arvuta inimesele h-indeks.
  14.  
  15. H-indeks on suurim niisugune arv, kui palju leidub selliseid artikleid, mida on vähemalt selle arvu võrra viidatud. Ehk siis h-index N tähistab seda, et leidub vähemalt N sellist artiklit, mida on viidatud N või rohkem korda (ehk siis leidub vähemalt N sellist elementi, mille väärtus on N või suurem) - siin funktsioonis tuleb leida suurim võimalik N antud järjend jaoks.
  16.  
  17. Näiteks: sisendi [4, 2, 4] korral on h-indeks 2 (leidub vähemalt 2 artiklit, mida on viidatud 2 või enam korda). 3 enam ei sobiks (ei leidu kolme artiklit, mida on viidatud 3 või enam korda). Vaata täiendavaid näiteid mallist.
  18.  
  19. 04. fuel_calculation (50p)
  20. NB! See ülesanne on vaja lahendada rekursiivselt.
  21.  
  22. Oled istumas lennukis enne terminalist väljumist ja mõtled, et miks küll on su lend hiljaks jäänud juba tund aega, kui järsku jookseb kabiini keegi töötaja ja hüüab: "Kas pardal on matemaatikut?"
  23.  
  24. Sina kui IT tudeng otsustad proovida aidata neid nende murega.
  25.  
  26. Probleem on selles, et neil on olemas lennuki mass, kuid nad ei tea kui palju on vaja kütust lennu jaoks.
  27.  
  28. Kütuse arvutamine toimub järgmise valemiga: jaga mass kolmega, ümarda alla, lahuta kaks.
  29.  
  30. Aga see pole veel kõik. Lennukile lisatud kütus lisab lennukile massi ja seega on ka selle jaoks vaja kütust sama valemi järgi. See lisakütus vajab omakorda lisakütust ja nii edasi kuni lõpuks on vaja nii vähe lisa-lisa-lisa kütust, et valemist tuleb vastuseks null.
  31.  
  32. Kui valem ütleb, et on vaja negatiivset kogust kütust, arvestada see nulliks.
  33.  
  34. 05. valid_parentheses (100p)
  35. Funktsioon saab sisendiks sõne, mis koosneb ainult järgmistest märkidest: '(', ')', '{', '}', '[' ja ']'. Tuleb tastada tõeväärtus, kas sõnes esinevad sulud on korrektsed või mitte. V.t näiteid.
  36.  
  37. 06. Donut Factory (50p)
  38. Teie ülesandeks on realiseerida lihtsustatud sõõrikuvabriku süsteem. Antud ülesande loogika käsitleb terve protsessi kõige viimase etapi ehk sõõrikute (Donut klassi objektid) pakkimise osa, mis hakkab toimuma DonutFactory klassis. Kõik sõõrikud erinevad teine teisest täidise ja glasuuri järgi.
  39.  
  40. Klass Donut
  41.  
  42. __init__(self, filling: str, icing: str) - klassi konstruktor, mille sisendparameetriks on sõõriku täidis ja glasuur. Täidise ja glasuuri nimetused antakse alati väikeste tähtedega.
  43. Klass DonutFactory
  44.  
  45. __init__(self) - klassi konstruktor.
  46.  
  47. add_donuts(self, donuts: list) - meetod, mis lisab sõõrikud konveierile pakkimiseks.
  48.  
  49. get_donuts(self) - meetod, mis tagastab listi kõikidest sõõrikutest, mis on praegu on konveieril.
  50.  
  51. pack_donuts_by_filling_and_icing(self) - meetod, mis võimaldab pakkida sõõrikud täidise ja glasuuri järgi. Tagastada tuleb sõnastik kujul {(täidis, glasuur): [sõõrik1, sõõrik2]}. Peale pakkimist peab konveier olema tühi (kõik sõõrikud tehases pakiti ära).
  52.  
  53. sort_donuts_by_icing_and_filling(self) - meetod, mis peab tagastama sõõrikute listi, mis on sorteeritud kõigepealt glasuuri järgi tähestiku järjekorras ning seejärel täidise järgi tähestiku järjekorras.
  54.  
  55. get_most_popular_donut(self) - meetod peab tagastama sellise sõõriku glasuuri ja täidise, mille leidub kõige rohkem konveieril praegusel hetkel. Sõnastik peab olema kujul {icing: sõõriku_glasuur, filling: sõõriku_täidis}. NB! Glasuuri ja täidise kombinatsioon, mitte et leiad lihtsalt kõige populaarsema glasuuri ja pärast eraldi kõige populaarsema täidise! Kui populaarseid kombinatsioone on mitu, tagastada see, mille glasuur (icing) on tähestikus eespool (ehk siis "a" on prioriteetsem kui "b").
  56.  
  57. get_least_popular_donut(self) - meetod peab tagastama sellise sõõriku glasuuri ja täidise, mille leidub kõige vähem konveieril praegusel hetkel. Sõnastik peab olema kujul {icing: sõõriku_glasuur, filling: sõõriku_täidis}. NB! Glasuuri ja täidise kombinatsioon, mitte et leiad lihtsalt vähem populaarsema glasuuri ja pärast eraldi vähem populaarsema täidise! Kui ebapopulaarseid kombinatsioone on mitu, tagastada see, mille täidis (filling) on tähestikus tagapool (ehk siis "b" on prioriteetsem kui "a").
  58.  
  59. get_donuts_by_flavour(self, flavour: str) - meetod peab tagastama nimekirja nendest sõõrikutest, mille glasuur või täidis on sama nagu meetodi parameetris on etteantud. Parameeter alati antakse väikeste tähtedega.
  60.  
  61. 07. Airline (150p)
  62. Valitsus pani pead kokku ja arvas, et järgmise rahvusliku lennuliini loomisel võiks välja arvutada, kas see ettevõtmine kasumlik ka oleks. Esimene rahaline kokkuhoid tuleb sellelt, et usaldasid selle tarbeks tarkvara loomise esmakursuslastele.
  63.  
  64. Ülesannet on mõistlik lahendada defineerides klassidele juurde uusi, abistavaid muutujaid ning meetodeid.
  65.  
  66. Aircraft
  67. Objekt mis hoiab endas lennukiga seonduvaid andmeid.
  68.  
  69. __init__(self, operating_cost_per_distance: float, seats: int) Konstruktor, kohustuslikud väljad:
  70.  
  71. operating_cost_per_distance - iga kaugusühiku kohta kuluv rahasumma lennuki opereerimiseks.
  72. seats - istekohtade arv lennukil.
  73. Passenger
  74. __init__(self, money: float) Konstruktor, kohustuslikud väljad:
  75.  
  76. money - reisijal saadaolev rahasumma, millelt vajadusel lahutatakse maha pileti ostuks kuluv summa.
  77. Airport
  78. __init__(self, lat: float, lon: float, airport_fee: float) Konstruktor, kohustuslikud väljad:
  79.  
  80. lat - lennujaama asukoht laiuskraadidel
  81. lon - lennujaama asukoht pikkuskraadidel
  82. airport_fee - tasu suurus, mida lennujaam küsib iga kord lennuki teenindamise eest
  83. distance_to_airport(self, other_airport) Meetod võtab sisendiks teise Airport tüüpi objekti ning arvutab välja kauguse nende kahe vahel, kasutades valemit kaugus = sqrt((Lähtekoht.laiuskraad - Sihtkoht.laiuskraad)**2 + (Lähtekoht.pikkuskraad - Sihtkoht.pikkuskraad)**2)
  84.  
  85. Flight
  86. __init__(self, aircraft: Aircraft, airports: list, passengers: list) Konstruktor, kohustuslikud väljad:
  87.  
  88. aircraft - lennuk, mis seda lendu teenindab. NB! Kui hiljem lennukit vahetatakse, jäävad olemasolevad reisijad alles juba müüdud piletihindade eest aga uued reisijad maksavad uue kalkulatsiooni alusel arvutatud piletihinda. Kui uuel lennukil on vähem istekohti kui registreeritud reisijaid, tuleb eemaldada vajalik arv reisijaid reisijate nimekirjast ning neile tagastada see summa, millega nad pileti ostsid.
  89. airports - järjend lennujaamadest, kus lennuk peatub järjendisse lisamise järjekorras.
  90. passengers - järjend reisijatest, kes lennule pileti ostavad.
  91. change_aircraft(self, aircraft) - lennuki vahetamine. Kui uuel lennukil on vähem kohti kui praegusel, siis tuleb üleliigsetele inimestele raha tagasi maksta ja nad lennult eemaldada. Lennu lennuk asendatakse uue lennukiga.
  92.  
  93. add_passenger(self, passenger: Passenger) Meetod kontrollib esiteks, kas sisendisse antud reisijal on piisavalt raha, et lennule piletit osta, ning et lennukil on vaba koht reisija jaoks. Kui reisijal on piisavalt vahendeid ja lennul on vaba koht, lisab ta reisijate nimistusse ning võtab talt piletiraha maha.
  94.  
  95. remove_passenger(self, passenger: Passenger) Meetod eemaldab reisija reisijate järjendist ning tagastab reisijale selle summa, millega ta pileti ostis.
  96.  
  97. get_total_distance(self) -> float Tagastab kauguse, mida lend läbib kõiki marsruudil olevaid lennujaamasid läbides.
  98.  
  99. get_operating_cost(self) -> float Tagastab lennuki opereerimiseks kuluva rahasumma, kui ta läbib terve marsruudi, ning lisaks iga läbitud lennujaama teenindamise tasu. Marsruudi pikkus korrutatakse läbi lennuki distantsiühiku opereerimistasuga. Listakse juurde iga lennu lennujaama teenindamise tasu.
  100.  
  101. get_ticket_cost(self) -> float Tagastab pileti hinna ühe reisija kohta. Pileti hinna valem on (operating_cost / (lennuki istmete arv / 2)) * TICKET_MARKUP (konstant mis on defineeritud malli alguses.)
  102.  
  103. get_flight_profit(self) -> float Tagastab selle lennu kasumi. Lennu kasumi valem on piletitulu - operating_cost
  104.  
  105. Vaata kindlasti ka näiteid mallis.
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement