Viinisekoitus

Suomen ensimmäisen matematiikan professorin Simon Kexleruksen tehtävä:

”Sinulla on viinejä, jotka maksavat 3, 5, 8 ja 10 markkaa litralta. Tee 10 litraa sekoitusta, joka maksaa 6 markkaa litralta.” Oletetaan lisäksi, että sekoitukseen käytetään vain täysiä yhden litran pulloja. Anna vastaus lukunelikkona, jossa on peräkkäin 3 markan, 5 markan, 8 markan ja 10 markan viinien litramäärät.


Ratkaisu

Koska sekoitusta tehdään kymmenen litraa, tulee olla

x + y + z + w = 10.

Koko sekoituksen tulee maksaa 60 markkaa, minkä pitää olla sama kuin tarvittujen viinilajien yhteishinta:

3x + 5y + 8z + 10w = 60.

Koska sekoitukseen käytetään vain täysiä yhden litran pulloja, etsittävänä on saadun yhtälöparin kokonaislukuratkaisut, kun muuttujille sallitaan arvot 0, 1, 2, ..., 10. Arvon 0 salliminen merkitsee, että kaikkia viinilajeja ei sekoitukseen tarvitse käyttää.

Tietotekniikkaa hyödyntävä ajatuksellisesti helppo ratkaisu on kokeilla kaikki 114 vaihtoehtoa. Pseudokoodi voisi olla seuraava:

 for x=0 to 10
   for y=0 to 10
     for z=0 to 10
       for w=0 to 10
         if x + y + z + w = 10 and 3x + 5y + 8z + 10w = 60
           print (x,y,z,w)
         endif
       endfor
     endfor
   endfor
 endfor

Tuloksena on seitsemän vastausta, jos sallitaan, että kaikkia viinilajeja ei tarvitse käyttää: (0, 8, 0, 2), (1, 5, 4, 0), (2, 4, 3, 1), (3, 3, 2, 2), (4, 0, 6, 0), (4, 2, 1, 3), (5, 1, 0, 4).

Kexlerus ei 1600-luvun Turun Akatemiassa varmaankaan ratkaissut tehtävää näin. Mitä perinteisempiä ratkaisutapoja olisi?

Piilota ratkaisu