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?
Ezt a 8 könyvet az egyik lehetséges módon így csoportosíthatod:
Ez a következő végösszeget adná:
Az eredmény:
Ez összesen $51.60.
Ezt a 8 könyvet viszont másképp is csoportosíthatod:
Ez a következő végösszeget adná:
Az eredmény:
Ez összesen $51.20.
A legnagyobb kedvezményt adva pedig az ár $51.20.
A WebAssembly total export függvényszignatúrája a következő:
(func (export "total")
(param $basketOffset i32)
(param $basketLength i32)
(result i32)
)
A két paraméter, a $basketOffset és a $basketLength egy 32 bites egészekből álló tömb alapeltolását és hosszát adja meg. A hossz paraméter a tömbben lévő elemek számában van megadva, nem bájtban. Mielőtt meghívja ezt a függvényt, a hívó beírja ezt a tömböt a WebAssembly lineáris memóriába a $basketOffset eltolástól kezdve. A WebAssembly lineáris memória mindig little-endian formában van megadva.
Például a hívó a [1,2] kosarat a következő nyolcbájtos sorozatként kódolná.
| 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
| --- basket[0] --- | --- basket[1] --- |
,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) WebAssembly nyelvet 87 feladat segítségével, valódi emberi mentorálással, mindez ingyen.