Kurzusok
/
Go
Go
/
Feladatok
/
Könyvesbolt
Könyvesbolt

Könyvesbolt

Nehéz

Utasítások

Hogy egy népszerű, ötkötetes sorozat különböző könyveiből több példányt adjon el, egy könyvesbolt úgy döntött, hogy kedvezményt ad, ha valaki több könyvet vásárol.

Az öt könyv bármelyikének egy példánya $8-ba kerül.

Ha viszont két különböző könyvet veszel, akkor arra a két könyvre 5% kedvezményt kapsz.

Ha 3 különböző könyvet veszel, 10% kedvezményt kapsz.

Ha 4 különböző könyvet veszel, 20% kedvezményt kapsz.

Ha mind az 5-öt megveszed, 25% kedvezményt kapsz.

Vedd figyelembe, hogy ha négy könyvet veszel, amelyek közül 3 különböző cím, akkor arra a 3-ra, amelyek egy készletet alkotnak, 10% kedvezményt kapsz, a negyedik könyv ára viszont továbbra is $8.

A feladatod, hogy olyan kódot írj, amely kiszámítja bármely elképzelhető bevásárlókosár árát (amelyben csak ugyanannak a sorozatnak a könyvei vannak), a lehető legnagyobb kedvezményt alkalmazva.

Például mennyibe kerül ez a könyvkosár?

  • 2 példány az első könyvből
  • 2 példány a második könyvből
  • 2 példány a harmadik könyvből
  • 1 példány a negyedik könyvből
  • 1 példány az ötödik könyvből

Ezt a 8 könyvet az egyik lehetséges módon így csoportosíthatod:

  • 1 db 5 könyvből álló csoport (1., 2., 3., 4., 5.)
  • 1 db 3 könyvből álló csoport (1., 2., 3.)

Ez a következő végösszeget adná:

  • 5 könyv 25% kedvezménnyel
  • 3 könyv 10% kedvezménnyel

Az eredmény:

  • 5 × (100% - 25%) × $8 = 5 × $6.00 = $30.00, plusz
  • 3 × (100% - 10%) × $8 = 3 × $7.20 = $21.60

Ez összesen $51.60.

Ezt a 8 könyvet viszont másképp is csoportosíthatod:

  • 1 db 4 könyvből álló csoport (1., 2., 3., 4.)
  • 1 db 4 könyvből álló csoport (1., 2., 3., 5.)

Ez a következő végösszeget adná:

  • 4 könyv 20% kedvezménnyel
  • 4 könyv 20% kedvezménnyel

Az eredmény:

  • 4 × (100% - 20%) × $8 = 4 × $6.40 = $25.60, plusz
  • 4 × (100% - 20%) × $8 = 4 × $6.40 = $25.60

Ez összesen $51.20.

A legnagyobb kedvezményt adva pedig az ár $51.20.

Megvalósítás

Definiálj egyetlen Go-függvényt, Cost néven, amely egy adott könyvlista költségét számítja ki a megadott kedvezmények alapján.

A Cost függvényhez a következő szignatúrát használd:

func Cost(books []int) int

A Cost a teljes költséget adja vissza (a kedvezmények után), centben kifejezve. Például egyetlen könyv esetén a költség 800 cent, ami 8,00 dollárnak felel meg. Ebben a feladatban csak egész számokkal kell számolni.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go Exercism

Készen állsz elkezdeni a(z) Könyvesbolt feladatot?

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